(57)【要約】  アドレス変換データを格納する１つ又は複数のトランザクション・バッファ１６、１８、２０を含むデータ処理システム２が、それぞれのアドレス変換コンテキストＶＭＩＤ、ＡＳＩＤ、Ｘにおいて変換バッファ無効化命令ＴＬＢＩを実行する。変換バッファ無効化命令の実行の結果として生成された変換バッファ無効化信号は、それぞれの変換バッファにブロードキャストされ、実行された変換バッファ無効化命令のアドレス変換コンテキストを指定する信号を含む。変換バッファ無効化信号内で指定されたこのアドレス変換コンテキストは、無効化の潜在的ターゲットである変換バッファによって受信した際に、これらの変換バッファ無効化信号がフラッシュされるか否かをゲーティングするために使用される。変換バッファ無効化信号内で提供されるアドレス変換コンテキスト・データはまた、ローカル・トランザクショナル・メモリ・アクセスに対するローカル・メモリ・トランザクションが変換バッファ無効化信号の受信に際してアボートされるか否かを制御するために使用される。
2020525905.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための１つ又は複数の変換バッファと、
プログラム命令を実行するための処理回路とを含み、
前記処理回路が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置。
【請求項２】
前記装置が、複数の仮想マシン実行コンテキストの実行をサポートし、前記所与のアドレス変換コンテキストが、前記変換バッファ無効化命令の仮想マシン実行コンテキストを識別するための仮想マシン識別子を含む、請求項１に記載の装置。
【請求項３】
前記装置が、それぞれのアドレス空間変換マッピングを有する複数のプロセスの実行をサポートし、前記所与のアドレス変換コンテキストが、前記複数のプロセスの中の前記変換バッファ無効化命令のプロセスを識別するためのアドレス空間識別子を含む、請求項１又は２に記載の装置。
【請求項４】
前記１つ又は複数の変換バッファの中の所与の変換バッファが、前記所与の変換バッファ内に格納された所与のアドレス変換データのアドレス変換コンテキストを指定する所与のバッファ・コンテキスト・データを格納する、請求項１から３までのいずれか一項に記載の装置。
【請求項５】
前記所与の変換バッファに関するコンテキスト比較回路を含み、前記所与のバッファ・コンテキスト・データと前記所与のアドレス変換コンテキストを指定する前記信号との比較を実施する、請求項４に記載の装置。
【請求項６】
前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号に合致する場合、前記比較回路は前記所与のアドレス変換データのフラッシュを許可し、
前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号と異なる場合、前記比較回路は前記所与のアドレス変換データのフラッシュを抑止する、請求項５に記載の装置。
【請求項７】
前記処理回路が、前記所与の変換バッファ内に格納された前記所与のアドレス変換データを用いる処理要素を含み、
前記処理要素が、トランザクショナル・メモリ・アクセスをサポートし、それによって、トランザクション開始点とトランザクション・コミット点とに挟まれたプログラム命令を含むトランザクションが、アトミックに実行され、前記トランザクション・コミット点に達する前にアボートされ、前記トランザクション開始点に対応する状態に前記装置を回復することができ、
前記処理要素が、前記比較に基づいて、保留中のトランザクションを選択的にアボートする、請求項４、５、及び６のいずれか一項に記載の装置。
【請求項８】
前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号と異なる場合、前記処理要素が前記保留中のトランザクションを継続する、請求項７に記載の装置。
【請求項９】
前記変換バッファ無効化信号が、アドレス変換データが無効化される対象の１つ又は複数のターゲット受信アドレス値を指定し、
前記所与の変換バッファが、前記所与の変換バッファ内に格納された前記所与の変換データを使用中に前記処理要素からアクセスされる最小アドレス値及び最大アドレス値をトラッキングするための範囲トラッキング回路を含み、
前記１つ又は複数のターゲット受信アドレス値が前記最小アドレス値と前記最大アドレス値とに挟まれた範囲の外にある場合、前記処理要素が前記保留中のトランザクションを継続する、請求項７又は８に記載の装置。
【請求項１０】
前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号と合致し、前記１つ又は複数のターゲット受信アドレス値が前記最小アドレス値及び前記最大アドレス値によって挟まれた範囲内にある場合、前記処理要素が前記保留中のトランザクションをアボートする、請求項９に記載の装置。
【請求項１１】
前記処理要素が、複数のプログラム・スレッドのインターリーブ実行をサポートし、前記所与の変換バッファが、前記複数のプログラム・スレッドのそれぞれについて、所与のバッファ・コンテキスト・データと、前記最小アドレス値及び前記最大アドレス値を特徴付ける範囲トラッキング・データとを格納する、請求項９又は１０に記載の装置。
【請求項１２】
前記処理要素が、汎用プロセッサ及び画像処理ユニットのうちの１つを含む、請求項７から１１までのいずれか一項に記載の装置。
【請求項１３】
前記アドレス変換データが、
仮想アドレスと物理アドレスとのマッピング、
仮想アドレスと中間物理アドレスとのマッピング、
のうちの１つを提供する、請求項１から１２までのいずれか一項に記載の装置。
【請求項１４】
前記１つ又は複数の変換バッファが、１つ又は複数の変換索引バッファを含む、請求項１から１３までのいずれか一項に記載の装置。
【請求項１５】
データを処理するための装置であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための１つ又は複数の変換バッファ手段と、
プログラム命令を実行するための処理手段とを含み、
前記処理手段が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置。
【請求項１６】
データを処理する方法であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを１つ又は複数の変換バッファ内に格納するステップと、
プログラム命令を実行するステップとを含み、
所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、方法。
【請求項１７】
ホスト・データ処理装置を制御して命令実行環境を提供するためのコンピュータ・プログラムであって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための１つ又は複数の変換バッファ・データ構造と、
プログラム命令を実行するための処理プログラム・ロジックとを含み、
前記処理プログラム・ロジックが、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファ・データ構造に変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、コンピュータ・プログラム。
【請求項１８】
請求項１７に記載のコンピュータ・プログラムを格納する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より詳細には、本開示はデータ処理システム内に格納されたアドレス変換データの無効化に関する。
【背景技術】
【０００２】
アドレス変換データを利用して受信したアドレスを変換後のアドレスにマッピングするデータ処理システムを提供することが知られている。例えば、プロセッサは仮想アドレス空間を用いて命令を実行することができ、ローカル変換バッファは、受信した仮想アドレスを変換後の物理アドレス、又は中間物理アドレスにマッピングするためのアドレス変換データを格納することができる（例えば、ハイパーバイザが複数の仮想マシン実行環境の存在をサポートする場合）。このようなシステム内では、アドレス変換が処理動作の速度を低下させることがなく、したがって、アドレス変換データをローカルに低遅延で利用できるよう、１つ又は複数のアドレス変換バッファをシステム全体にわたって、変換データを使用することになる処理回路の近くに分散させられることが重要である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、アドレス変換データがシステム全体にわたって分散されると、そのデータに対するコヒーレンシ管理の問題が発生する。アドレス変換データのコヒーレンシを管理するメカニズムは、それ自体が処理性能を抑制するべきではない。
【課題を解決するための手段】
【０００５】
本開示の少なくとも幾つかの実施例は、データを処理するための装置であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための１つ又は複数の変換バッファと、
プログラム命令を実行するための処理回路とを含み、
前記処理回路が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置を提供する。
【０００６】
本開示の少なくとも幾つかの実施例は、データを処理するための装置であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための１つ又は複数の変換バッファ手段と、
プログラム命令を実行するための処理手段とを含み、
前記処理手段が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置を提供する。
【０００７】
本開示の少なくとも幾つかの実施例は、データを処理する方法であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを１つ又は複数の変換バッファに格納するステップと、
プログラム命令を実行するステップとを含み、
所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、方法を提供する。
【０００８】
本開示の少なくとも幾つかの実施例は、ホスト・データ処理装置を制御して命令実行環境を提供するためのコンピュータ・プログラムであって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための１つ又は複数の変換バッファ・データ構造と、
プログラム命令を実行するための処理プログラム・ロジックとを含み、
前記処理プログラム・ロジックが所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファ・データ構造に変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、コンピュータ・プログラムを提供する。
【０００９】
コンピュータ・プログラムは、記憶媒体上に格納することができる。記憶媒体は、非一時的な記憶媒体であってよい。
【００１０】
本技術のさらなる態様、特徴、及び利点は、後述する実例の説明を添付図面と併せて読解することで明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】ローカル変換バッファを利用する複数の処理要素を含むデータ処理システムを模式的に示す図である。
【図２】処理要素及びローカル変換バッファを模式的に示す図である。
【図３】マルチスレッド・プロセッサ内の各プログラム・スレッドに対するバッファ・コンテキスト・データの格納を模式的に示す図である。
【図４】変換バッファ無効化信号の動作をゲーティングするために使用される、処理要素に対するアドレス範囲トラッキングを模式的に示す図である。
【図５】変換索引バッファのフラッシュ制御を模式的に示すフロー図である。
【図６】トランザクションのアボート制御を模式的に示すフロー図である。
【図７】本技術のシミュレータの実装を模式的に示す図である。
【発明を実施するための形態】
【００１２】
図１は、汎用プロセッサ４及び６の形態にある複数の処理要素と、画像処理ユニット８とを含むデータ処理システム２を模式的に示す。これらの処理要素４、６、８のそれぞれは、ローカル・キャッシュ・メモリ１０、１２、１４及びローカル変換索引バッファ１６、１８、２０の形態にあるローカル変換バッファを含む。変換索引バッファ１６、１８、２０は、受信したアドレスを変換後のアドレスにマッピングするために使用される、それぞれのアドレス変換データを格納する。受信したアドレスは、例えば、処理要素４、６、８によってローカルに使用される仮想アドレスでよく、そのローカル・キャッシュ・メモリ１０、１２、１４内で使用されるアドレス・データに変換される。アドレス変換データは、そのような仮想アドレスを、物理アドレスＰＡ（Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）又は中間物理アドレスＩＰＡ（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）にマッピングすることができる（例えば、ハイパーバイザ・プログラムを使用して複数の仮想マシン実行環境をサポートするシステムの場合において）。
【００１３】
処理要素４、６、８は、ローカル変換索引バッファ１６、１８、２０を使用して受信したアドレスを変換後のアドレス（例えば、物理アドレス）に置き換え、その後、変換後のアドレスは、相互接続部２４を介して、汎用プロセッサ４、６、及び主共有メモリ２６によって共有されるさらなるキャッシュ・メモリ２２などの、メモリ・システム階層内の他の要素に発信される。
【００１４】
処理要素４、６、８のそれぞれの内部でローカルに変換索引バッファ１６、１８、２０を用意することにより、変換データが変換索引バッファ１６、１８、２０内にある場合に、これらの処理要素が高速に且つ低レイテンシでアドレス・マッピングを実行することが可能になる。変換索引バッファ１６、１８、２０はしばしば、処理要素内のクリティカル・パスの一部を形成することがあり、変換索引バッファ１６、１８、２０が処理要素から当該一部を形成するのは、変換索引バッファ１６、１８、２０が迅速に且つ効率良く動作することが重要であり、そうでなければ、それらの関連する処理要素４、６、８の全体的な性能が低下する可能性があるような形態で行われる。
【００１５】
データ処理システム２の異なる部位内で使用されるアドレス変換データは、データ処理システムの異なる部分によって適用されるメモリ・マッピングの一貫した全体制御を提供するよう管理され、一貫性及びデータの完全性を保証する。マッピング・データは、使用中にしばしば変更されることがある。異なる変換索引バッファ１６、１８、２０内にローカルに保持されたアドレス変換データの異なる複製間で一貫性を保証するために、処理要素４、６、８のいずれかによって実行することができる変換バッファ無効化命令がその一連のプログラム命令内で提供される。このような変換バッファ無効化命令が実行されると、変換バッファ無効化信号がシステム内の変換索引バッファ１６、１８、２０にブロードキャストされ、これらの分散された変換索引バッファ１６、１８、２０内に保持されたアドレス変換データの無効化を選択的にトリガする。
【００１６】
実行される変換バッファ無効化命令は、変換バッファ無効化命令を実行する処理要素４、６、８のアドレス変換コンテキスト内で処理要素４、６、８のうちの所与の１つによって実行される、一連のプログラム命令の一部である。アドレス変換コンテキストは、その中で変換バッファ無効化命令が実行され、それ自体のアドレス空間を利用して、当該処理要素においてどの仮想マシン実行環境が現在アクティブであるか、及び、当該処理要素においてどのプログラム・スレッドが現在アクティブであるかを含む。したがって、任意の時点における所与の処理要素４、６、８のアドレス変換コンテキストは、関係する処理要素４、６、８によって実行され得る複数の仮想マシン実行コンテキストの中から仮想マシン実行コンテキストを識別する仮想マシン識別子（ＶＭＩＤ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｉｄｅｎｔｉｆｉｅｒ）を含む変数を用いて表すことができる。アドレス変換コンテキストを指定する変数は、関係する処理要素４、６、８によって実行され得る複数のプロセスから所与のプロセスを識別するアドレス空間識別子（ＡＳＩＤ：Ａｄｒｅｓｓ  Ｓｐａｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）をさらに含み、スレッド内に変換バッファ無効化命令を含むことができる。
【００１７】
変換バッファ無効化命令が、その命令に対する特定時点においてアクティブなアドレス変換コンテキスト内において、処理要素４、６、８のうちの１つによって実行されると、当該変換バッファ有効化命令が実行されたアドレス変換コンテキストを指定する、変換バッファ無効化信号をブロードキャストすることになる。変換バッファ無効化信号の中には、発行する変換バッファ無効化命令のアドレス変換コンテキストを指定するデータが含まれる。このことにより、これらの変換バッファ無効化信号が、変換索引バッファ１６、１８、２０が格納するアドレス変換データ（一部又は全て）のフラッシュをトリガするか否かを、変換索引バッファ１６、１８、２０がゲーティングすることが可能となり、そのゲーティングは、変換バッファ無効化信号の元となるアドレス変換コンテキストが、これらの変換無効化信号を受信する所与の時点における変換索引バッファ１６、１８、２０のローカル・コンテキストに合致するか否かに基づいて行われる。このことにより、一貫性を維持する必要がない場合に不必要にアドレス変換データを削除することを回避でき、よって、実際には必要のないアドレス変換データのフラッシュの結果として、変換索引バッファのリフィル及び／又はトランザクショナル・メモリのトランザクション・アボートを要することなどによる性能の低下を回避することができる。
【００１８】
図２は、変換索引バッファ・メモリ２８、比較回路３０、及び、仮想マシン識別子ＶＭＩＤ、アドレス空間識別子ＡＳＩＤ、高アクセス値ＨＩ及び低アクセス値ＬＯの形態にあるバッファ・コンテキスト・データを格納するレジスタ３２、３４、３６及び３８を含む変換索引バッファ１６を含む、汎用プロセッサ４の形態にある処理要素を模式的に示す。汎用プロセッサ４は、命令デコーダ４０において一連のプログラム命令の中から実行するべきプログラム命令を受信し、命令デコーダ４０ではこれらのプログラム命令がデコードされ、後に複数の実行パイプライン４２、４４、４６の動作を制御する制御信号が作成される。これらの実行パイプラインは、メモリ・アクセス（ロード命令及びストア命令）を実施するプログラム命令の実行を担当し、且つ、変換索引バッファ１６の変換索引バッファ・メモリ２８内に格納されたアドレス変換データ４８を利用する、ロード・ストア・パイプライン４２を含む。
【００１９】
汎用プロセッサ４は、命令デコーダ４０において変換バッファ無効化命令ＴＬＢＩ（Ｔｒａｎｓｌａｔｉｏｎ  Ｂｕｆｆｅｒ  Ｉｎｖａｌｉｄａｔｉｏｎ  Ｉｎｓｔｒｕｃｔｉｏｎ）を受信すると、信号ライン５０上に変換バッファ無効化信号を生成するように働き、それ自体の変換索引バッファ１６及び、データ処理システム２内の任意の他の変換索引バッファ１８、２０のどちらにもブロードキャストされる。変換索引バッファ無効化命令ＴＬＢＩは、無効化される変換索引バッファ・エントリのアドレス値を引数Ｘとして指定する。
【００２０】
汎用プロセッサ４は、汎用プロセッサ４の現在の状態を表すデータを格納する、カレント・プログラム・ステータス・レジスタ５２を含む。この現在の状態は、汎用プロセッサ４内において複数の仮想マシン実行コンテンツのうちのいずれが現在アクティブであるか（現在実行されている一連のプログラム命令に対応する）を示す、汎用プロセッサ４に対する現在の仮想マシン識別子を含む。カレント・プログラム・ステータス・レジスタ５２は、当該プロセスに関するアドレス空間識別子ＡＳＩＤを用いて、複数のプロセスの中で実行している、現在アクティブなプロセスをさらに指定する。
【００２１】
カレント・プログラム・ステータス・レジスタ５２内に共に格納された仮想マシン識別子ＶＭＩＤ及びプロセス識別子ＡＳＩＤは、デコードされ、且つ実行される変換索引バッファ命令ＴＬＢＩに関するアドレス変換コンテキストの一部を表す。信号ライン５０上でブロードキャストされる変換バッファ無効化信号は、仮想マシン識別子ＶＭＩＤ、アドレス空間識別子ＡＳＩＤ、及び、アドレス変換データが無効化される対象のターゲット受信アドレス値Ｘを指定する信号を含む。このようにして、変換バッファ無効化信号は、実行される変換バッファ無効化命令ＴＬＢＩに関するアドレス変換コンテキストを指定する。
【００２２】
ブロードキャストされた変換バッファ無効化信号は、システム内の変換索引バッファ１６、１８、２０に送信され、それぞれの変換索引バッファ１６、１８、２０の中の比較回路３０に供給される。比較回路は、関係する変換索引バッファ１６、１８、２０内に格納されたアドレス変換データ４８に関するバッファ・コンテキスト・データが変換バッファ無効化信号で指定されたものと合致するかどうかを判定する。バッファ・コンテキスト・データの仮想マシン識別子ＶＭＩＤが変換バッファ無効化信号内で指定された仮想マシン識別子と合致し、バッファ・コンテキスト・データのアドレス空間識別子ＡＳＩＤもまた変換バッファ無効化信号のアドレス空間識別子と合致する場合、比較回路３０はアドレス変換データ４８をそのローカル変換索引バッファ・メモリ２８からフラッシュすることを許可する。このようなフラッシュは、格納データに無効としてマーキングするなど、様々な異なる形態を取ることがある。バッファ・コンテキスト・データ（ＶＭＩＤ、ＡＳＩＤ）が受信した変換バッファ無効化信号に関するアドレス変換コンテキストに合致しない場合は、ローカルに保持されたアドレス変換データ４８に対する無効化の動作は必要ないため、比較回路３０はアドレス変換データ４８をフラッシュさせない。
【００２３】
汎用プロセッサ４、６を含む、処理要素のうちの少なくとも幾つかは、トランスレイショナル・メモリ・アクセスをサポートする。このようなトランザクショナル・メモリ・アクセスは、それぞれのトランザクション開始点とトランザクション・コミット点とに挟まれたプログラム命令を含むトランザクションを提供する。このようなトランザクションは、トランザクション・コミット点に達する前にトランザクションがアボートされた場合には、その装置がトランザクション開始点に対応する状態に回復するよう、アトミックに実行される。このようなトランザクショナル・メモリ・アクセスは、共有メモリを利用する場合に、例えば、明示的にセット及びリセットされたメモリ・ロックを使用する必要性を回避することによって、システム性能の向上に役立つ。
【００２４】
このようなシステム内でメモリ・アクセス・トランザクションがアボートされる契機となり得る１つの状況が、ローカル変換索引バッファ１６、１８、２０内に格納されたアドレス変換データが不適切に変更される場合である。本開示は、関係するローカル変換索引バッファ１６内に格納された所与のアドレス変換データ４８を使用中に処理要素４によってアクセスされた最小アドレス値ＬＯ及び最大アドレス値ＨＩをトラッキングする、レジスタの形態にある範囲トラッキング回路３６、３８を提供する。ローカル変換索引バッファ１６がフラッシュされると、最大アドレス値ＨＩ及び最小アドレス値ＬＯは、アドレス空間の範囲内の最低点を表す値及びアドレス空間の範囲内の最高点を表す値にそれぞれリセットされる。アドレス・アクセスが続いて発生するたびに、レジスタ３６内に格納された最大値が現在のアドレス値と比較され、アドレス空間の範囲において、現在のアドレス値が現在格納されているＨＩの値よりも大きければ、レジスタ３６内に格納された値が現在のアドレス値に更新される。同様にして、最小アドレス値ＬＯが現在使用されているアドレス値と比較され、メモリ・アドレス空間において、現在のアドレス値が現在格納されている最小アドレス値ＬＯより小さければ、格納されている最小アドレス値ＬＯが現在のアドレス値に更新される。このようにして、レジスタ３６、３８はアドレス範囲をトラッキングする範囲トラッキング値を格納し、トランスレイショナル・メモリの現在保留中のトランザクションに関するいずれのメモリ・アクセスもそのアドレス範囲内に配置される。
【００２５】
所与の変換索引バッファ１６において変換バッファ無効化信号を受信すると、ローカル比較回路３０は、アドレス変換データが無効化される対象のターゲット受信アドレス値Ｘを、当該処理要素によって使用された全アドレス空間内のアドレス空間範囲をトラッキングする範囲トラッキング値ＨＩ、ＬＯと比較する。比較の結果、ターゲット受信アドレスＸ、又はターゲット受信アドレス範囲が、最小アドレス値ＬＯと最大アドレス値ＨＩとに挟まれた範囲（ローカル・プロセッサのアクティブ・アドレス範囲）の外にある場合、トランザクションが変換バッファ無効化信号によって伝えられたアドレス変換無効化の影響を受けないよう、関係する処理要素４はトランザクショナル・メモリのいずれの保留中のトランザクションも継続する。レジスタ３２、３４内に格納された所与のバッファ・コンテキスト・データＶＭＩＤ、ＡＳＩＤがどちらも受信したアドレス変換コンテキストＶＭＩＤ及びＡＳＩＤに合致する場合、且つ、受信したターゲット・アドレス値Ｘが最小アドレス値ＬＯと最大アドレス値ＨＩとに挟まれた範囲にある場合、比較回路３０は、当該ローカル処理要素４内のいずれの保留中のメモリ・トランザクションもアボートする信号を発行する。このようなメモリ・トランザクションのアボートが、関連するトランザクションの開始点に対応する状態への回復をトリガする。
【００２６】
所与の処理要素４、６、８は複数のプログラム・スレッドのインターリーブ実行をサポートすることができる（例えば、ＳＭＴプロセッサ内において）。これらのプログラム・スレッドのそれぞれは、それ自体のアドレス変換コンテキストを有することができる。これらのアドレス変換コンテキストは、変換索引バッファ１６、１８、２０内に格納されたＶＭＩＤ、ＡＳＩＤ、ＨＩ、及びＬＯの値で表される。図３は、アドレス変換バッファ・メモリ２８内に格納されたアドレス変換データ４８に関する複数のローカル・アドレス変換コンテキストを格納するために、複数のレジスタ３２、３２’、３４、３４’、３６、３６’、３８、３８’がどのように使用され得るかを模式的に示す。スレッド０又はスレッド１が現在アクティブであるか否かを示すスレッド指示信号を使用してマルチプレクサを切り替え、受信した変換バッファ無効化信号を有する信号を識別するアドレス変換コンテキストとの比較に、これらのアドレス変換コンテキストのうちのどちらを使用するべきかを選択する。
【００２７】
図４は、処理要素に対するアドレス範囲トラッキングがどのように使用されて変換バッファ無効化信号をゲーティングすることができるかを模式的に示す。システムのメモリ・アドレス空間５４は、ゼロから最上のアドレス値にわたる。最後の変換索引バッファのフラッシュ以降に、関係する処理要素によって実施されるメモリ・アクセスは、レジスタ３６、３８を用いて範囲トラッキング回路によってトラッキングされ、それによって、メモリ・アクセスが実施される毎に、現在格納されている、アクセスされていると記録されている範囲の最小アドレス値及び最大アドレス値と比較される。新たに受信したメモリ・アドレス値が現在トラッキングされている範囲の外にある場合、格納されたＨＩ及びＬＯの値は必要に応じて更新される。この挙動は、図４の左側に表される。
【００２８】
図４の右側は、無効化動作のためのそれぞれのターゲット・アドレスを指定する、受信した変換バッファ無効化信号を示す。これらのターゲット・アドレスが現在トラッキングされているメモリ・アドレス範囲の外にある場合、変換バッファ無効化信号は、ローカル処理要素の保留中のメモリ・アクセス・トランザクションに対していかなるアボートも引き起こさない。しかしながら、変換バッファ無効化信号が最後のＴＬＢフラッシュ以降に使用されている、現在トラッキング中のアドレスの範囲内にあるターゲット・アドレスを指定する場合は、ローカル処理要素４のいずれの保留中のメモリ・トランザクションに対してもメモリ・トランザクションのアボートをトリガする。
【００２９】
図５は、変換索引バッファのフラッシュ制御を模式的に示すフロー図である。処理は、変換バッファ無効化信号を受信するまでステップ５６で待機する。ステップ５８は、変換バッファ無効化信号の中で受信したＶＭＩＤの値を、関係する変換索引バッファのバッファ・コンテキスト・データの一部としてレジスタ３２内で保持されたＶＭＩＤの値と比較する。合致しない場合、フラッシュは実施されず、処理は終了する。合致するものがあれば、ステップ６０が、受信したアドレス空間識別子の値ＡＳＩＤを比較するよう働くが、このことはアクティブ・プロセスが変換バッファ無効化命令を含んだことを示し、バッファ・コンテキスト・データ、特にレジスタ３４内に格納されたＡＳＩＤ値に対する変換バッファ無効化信号を生じさせる。合致しない場合、処理は再び終了する。しかしながら、ステップ５８及びステップ６０のどちらにおいても合致する場合、処理はステップ６２に達し、変換索引バッファ２８内のアドレス変換データ４８がフラッシュされる（例えば、無効としてマーキングされる）。
【００３０】
図６は、トランザクションのアボート制御を模式的に示すフロー図である。処理は、変換バッファ無効化信号を受信するまでステップ６４で待機する。ステップ６６及び６８は再び、受信した仮想マシン識別子を表すＶＭＩＤ信号及び、発行元のトランザクション・バッファ無効化命令のプロセスを表すＡＳＩＤ信号と、ローカル変換索引バッファのバッファ・コンテキスト・データとの合致をチェックするよう働く。これらがどちらも合致しない場合、処理は終了し、トランザクションのアボートは実施されない。しかしながら、ＶＭＩＤ及びＡＳＩＤがどちらも合致すれば、処理はステップ７０に達し、受信した変換バッファ無効化信号のターゲット・アドレスＸと、レジスタ３６内に格納された現在格納されている最大アドレス値との間で比較を行う。受信したアドレスが格納された最大値ＨＩよりも小さい場合、処理はステップ７２に進む。受信したアドレスが格納されたＨＩ値よりも大きい場合、ターゲット・アドレスはアドレス変換データ４８を用いてアクセスされていたアドレスの範囲の外にあり、そのため、アボートは必要ない。ステップ７２において、変換バッファ無効化信号によって指定された、受信したターゲット・アドレスは、格納された最小アドレス値ＬＯと比較される。受信したアドレス値が格納された最小値ＬＯよりも小さい場合、トランザクションは実施されず、処理は再び終了する。しかしながら、ステップ７０及び７２をどちらもパスすると、それは受信したターゲット・アドレスが関係する変換索引バッファ４８を用いてアクセスされていたメモリ・アドレスのトラッキング範囲内にあることを示し、保留中のメモリ・トランザクションのうちの１つが無効化される対象であると示されていたアドレス変換データに依存している可能性があり、したがって、ステップ７４は、ローカル処理要素４内の全ての保留中のメモリ・トランザクションのトランザクション・アボートをトリガするよう働く。アドレス変換データもまた図５のフロー図に従って無効化されることは理解されるであろう。
【００３１】
図７は、使用される可能性のあるシミュレータの実装例を示す。前述した実施例が関係する技術をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実施する一方で、本明細書に記載する実施例に従って、コンピュータ・プログラムの使用を通じて実装される命令実行環境を提供することも可能である。ハードウェア・アーキテクチャのソフトウェア・ベースでの実装を提供する限りにおいて、このようなコンピュータ・プログラムはしばしばシミュレータと称される。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。典型的には、シミュレータの実装は、シミュレータ・プログラム５１０をサポートするホスト・オペレーティング・システム５２０を任意に実行する、ホスト・プロセッサ５３０上で動作することができる。幾つかの構成では、ハードウェアと、提供された命令実行環境との間にシミュレーションの複数レイヤがあってもよく、且つ／又は、同じホスト・プロセッサ上に提供された複数の独立した命令実行環境があってもよい。歴史的に、強力なプロセッサはリーズナブルな速度で実行するシミュレータの実装を提供することを求められてきたが、そのようなアプローチは、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行する要求がある場合など、特定の状況で正当化され得る。例えば、シミュレータの実装は、ホスト・プロセッサ・ハードウェアによってサポートされていない追加的な機能性を備える命令実行環境、又は、典型的には、異なるハードウェア・アーキテクチャに関する命令実行環境を提供することができる。シミュレーションの概要は、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁に記載されている。
【００３２】
特定のハードウェア構成体又は特徴に関して前述した実施例の範囲において、シミュレートされた実施例では、適切なソフトウェア構成体又は機能によって同等の機能性を提供することができる。例えば、シミュレートされた実施例において特定の回路をコンピュータ・プログラム・ロジックとして実装することができる。同様に、レジスタやキャッシュのようなメモリ・ハードウェアを、シミュレートされた実施例においてソフトウェア・データ構造として実装することができる。前述した実施例において言及した１つ又は複数のハードウェア要素がホスト・ハードウェア（例えば、ホスト・プロセッサ５３０）上にある構成においては、幾つかのシミュレートされた実施例は、適切な場合に、ホスト・ハードウェアを利用することができる。
【００３３】
シミュレータ・プログラム５１０は、コンピュータ可読記憶媒体（非一時的な媒体でよい）上に格納することができ、シミュレータ・プログラム５１０によってモデル化されたハードウェア・アーキテクチャのアプリケーション・プログラム・インタフェースと同じターゲット・コード５００（アプリケーション、オペレーティング・システム、及びハイパーバイザを含んでよい）にプログラム・インタフェース（命令実行環境）を提供する。したがって、ターゲット・コード５００のプログラム命令は、上述したレルム保護機能性に基づいたメモリ・アクセスの制御を含み、シミュレータ・プログラム５１０を使用した命令実行環境内から実行することができ、そのため、実際には上述した装置２のハードウェア機能を持たないホスト・コンピュータ５３０がこれらの機能をエミュレートすることができる。
【００３４】
少なくとも幾つかの実例は、仮想マシンを提供し、当該仮想マシンは、受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを１つ又は複数の変換バッファに格納するステップと、プログラム命令を実行するステップとを含む方法に従って動作する実行環境を提供し、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記１つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する。記憶媒体は、仮想マシンのコンピュータ・プログラムを格納することができる。記憶媒体は、非一時的な記憶媒体であってよい。
【００３５】
本明細書において、用語「〜するよう構成される」は、装置の要素が、定義された動作を実施することができる構成を有するという意味で使用される。これに関連して、「構成」はハードウェア又はソフトウェアの相互接続の構成又は方法を意味する。例えば、装置は定義された動作を提供する専用ハードウェアを有することができるか、或いは、プロセッサ又はその他の処理デバイスはその機能を実施するようプログラムされ得る。用語「〜するよう構成される」は、定義された動作を提供するために装置の要素が何らかの方法で変更される必要があることを含蓄するものではない。
【００３６】
本明細書に、本発明を説明する実施例を添付図面を用いて詳述したが、本発明はこれらの正確な実施例に限定されるものではなく、添付された特許請求の範囲によって定められた本発明の範囲及び意図から逸脱することなく、当業者による様々な変更や改良がなされ得ることを理解されたい。
【図１】
2020525905.tif 000003
【図２】
2020525905.tif 000004
【図３】
2020525905.tif 000005
【図４】
2020525905.tif 000006
【図５】
2020525905.tif 000007
【図６】
2020525905.tif 000008
【図７】
2020525905.tif 000009
【国際調査報告】
2020525905.tif 000010
2020525905.tif 000011
2020525905.tif 000012