JP2020525905A - アドレス変換データの無効化 - Google Patents

アドレス変換データの無効化 Download PDF

Info

Publication number
JP2020525905A
JP2020525905A JP2019570895A JP2019570895A JP2020525905A JP 2020525905 A JP2020525905 A JP 2020525905A JP 2019570895 A JP2019570895 A JP 2019570895A JP 2019570895 A JP2019570895 A JP 2019570895A JP 2020525905 A JP2020525905 A JP 2020525905A
Authority
JP
Japan
Prior art keywords
translation
address
buffer
given
context
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019570895A
Other languages
English (en)
Inventor
ジェイムズ ホースネル、マシュー
ジェイムズ ホースネル、マシュー
マグクリス、グリゴリオス
ロイ グリセンスウェイト、リチャード
ロイ グリセンスウェイト、リチャード
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2020525905A publication Critical patent/JP2020525905A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Machine Translation (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

アドレス変換データを格納する1つ又は複数のトランザクション・バッファ16、18、20を含むデータ処理システム2が、それぞれのアドレス変換コンテキストVMID、ASID、Xにおいて変換バッファ無効化命令TLBIを実行する。変換バッファ無効化命令の実行の結果として生成された変換バッファ無効化信号は、それぞれの変換バッファにブロードキャストされ、実行された変換バッファ無効化命令のアドレス変換コンテキストを指定する信号を含む。変換バッファ無効化信号内で指定されたこのアドレス変換コンテキストは、無効化の潜在的ターゲットである変換バッファによって受信した際に、これらの変換バッファ無効化信号がフラッシュされるか否かをゲーティングするために使用される。変換バッファ無効化信号内で提供されるアドレス変換コンテキスト・データはまた、ローカル・トランザクショナル・メモリ・アクセスに対するローカル・メモリ・トランザクションが変換バッファ無効化信号の受信に際してアボートされるか否かを制御するために使用される。

Description

本開示は、データ処理システムの分野に関する。より詳細には、本開示はデータ処理システム内に格納されたアドレス変換データの無効化に関する。
アドレス変換データを利用して受信したアドレスを変換後のアドレスにマッピングするデータ処理システムを提供することが知られている。例えば、プロセッサは仮想アドレス空間を用いて命令を実行することができ、ローカル変換バッファは、受信した仮想アドレスを変換後の物理アドレス、又は中間物理アドレスにマッピングするためのアドレス変換データを格納することができる(例えば、ハイパーバイザが複数の仮想マシン実行環境の存在をサポートする場合)。このようなシステム内では、アドレス変換が処理動作の速度を低下させることがなく、したがって、アドレス変換データをローカルに低遅延で利用できるよう、1つ又は複数のアドレス変換バッファをシステム全体にわたって、変換データを使用することになる処理回路の近くに分散させられることが重要である。
「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53〜63頁
しかしながら、アドレス変換データがシステム全体にわたって分散されると、そのデータに対するコヒーレンシ管理の問題が発生する。アドレス変換データのコヒーレンシを管理するメカニズムは、それ自体が処理性能を抑制するべきではない。
本開示の少なくとも幾つかの実施例は、データを処理するための装置であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための1つ又は複数の変換バッファと、
プログラム命令を実行するための処理回路とを含み、
前記処理回路が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置を提供する。
本開示の少なくとも幾つかの実施例は、データを処理するための装置であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための1つ又は複数の変換バッファ手段と、
プログラム命令を実行するための処理手段とを含み、
前記処理手段が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置を提供する。
本開示の少なくとも幾つかの実施例は、データを処理する方法であって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを1つ又は複数の変換バッファに格納するステップと、
プログラム命令を実行するステップとを含み、
所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、方法を提供する。
本開示の少なくとも幾つかの実施例は、ホスト・データ処理装置を制御して命令実行環境を提供するためのコンピュータ・プログラムであって、
受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための1つ又は複数の変換バッファ・データ構造と、
プログラム命令を実行するための処理プログラム・ロジックとを含み、
前記処理プログラム・ロジックが所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファ・データ構造に変換バッファ無効化信号をブロードキャストし、
前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、コンピュータ・プログラムを提供する。
コンピュータ・プログラムは、記憶媒体上に格納することができる。記憶媒体は、非一時的な記憶媒体であってよい。
本技術のさらなる態様、特徴、及び利点は、後述する実例の説明を添付図面と併せて読解することで明らかになるであろう。
ローカル変換バッファを利用する複数の処理要素を含むデータ処理システムを模式的に示す図である。 処理要素及びローカル変換バッファを模式的に示す図である。 マルチスレッド・プロセッサ内の各プログラム・スレッドに対するバッファ・コンテキスト・データの格納を模式的に示す図である。 変換バッファ無効化信号の動作をゲーティングするために使用される、処理要素に対するアドレス範囲トラッキングを模式的に示す図である。 変換索引バッファのフラッシュ制御を模式的に示すフロー図である。 トランザクションのアボート制御を模式的に示すフロー図である。 本技術のシミュレータの実装を模式的に示す図である。
図1は、汎用プロセッサ4及び6の形態にある複数の処理要素と、画像処理ユニット8とを含むデータ処理システム2を模式的に示す。これらの処理要素4、6、8のそれぞれは、ローカル・キャッシュ・メモリ10、12、14及びローカル変換索引バッファ16、18、20の形態にあるローカル変換バッファを含む。変換索引バッファ16、18、20は、受信したアドレスを変換後のアドレスにマッピングするために使用される、それぞれのアドレス変換データを格納する。受信したアドレスは、例えば、処理要素4、6、8によってローカルに使用される仮想アドレスでよく、そのローカル・キャッシュ・メモリ10、12、14内で使用されるアドレス・データに変換される。アドレス変換データは、そのような仮想アドレスを、物理アドレスPA(Physical Address)又は中間物理アドレスIPA(Intermediate Physical Address)にマッピングすることができる(例えば、ハイパーバイザ・プログラムを使用して複数の仮想マシン実行環境をサポートするシステムの場合において)。
処理要素4、6、8は、ローカル変換索引バッファ16、18、20を使用して受信したアドレスを変換後のアドレス(例えば、物理アドレス)に置き換え、その後、変換後のアドレスは、相互接続部24を介して、汎用プロセッサ4、6、及び主共有メモリ26によって共有されるさらなるキャッシュ・メモリ22などの、メモリ・システム階層内の他の要素に発信される。
処理要素4、6、8のそれぞれの内部でローカルに変換索引バッファ16、18、20を用意することにより、変換データが変換索引バッファ16、18、20内にある場合に、これらの処理要素が高速に且つ低レイテンシでアドレス・マッピングを実行することが可能になる。変換索引バッファ16、18、20はしばしば、処理要素内のクリティカル・パスの一部を形成することがあり、変換索引バッファ16、18、20が処理要素から当該一部を形成するのは、変換索引バッファ16、18、20が迅速に且つ効率良く動作することが重要であり、そうでなければ、それらの関連する処理要素4、6、8の全体的な性能が低下する可能性があるような形態で行われる。
データ処理システム2の異なる部位内で使用されるアドレス変換データは、データ処理システムの異なる部分によって適用されるメモリ・マッピングの一貫した全体制御を提供するよう管理され、一貫性及びデータの完全性を保証する。マッピング・データは、使用中にしばしば変更されることがある。異なる変換索引バッファ16、18、20内にローカルに保持されたアドレス変換データの異なる複製間で一貫性を保証するために、処理要素4、6、8のいずれかによって実行することができる変換バッファ無効化命令がその一連のプログラム命令内で提供される。このような変換バッファ無効化命令が実行されると、変換バッファ無効化信号がシステム内の変換索引バッファ16、18、20にブロードキャストされ、これらの分散された変換索引バッファ16、18、20内に保持されたアドレス変換データの無効化を選択的にトリガする。
実行される変換バッファ無効化命令は、変換バッファ無効化命令を実行する処理要素4、6、8のアドレス変換コンテキスト内で処理要素4、6、8のうちの所与の1つによって実行される、一連のプログラム命令の一部である。アドレス変換コンテキストは、その中で変換バッファ無効化命令が実行され、それ自体のアドレス空間を利用して、当該処理要素においてどの仮想マシン実行環境が現在アクティブであるか、及び、当該処理要素においてどのプログラム・スレッドが現在アクティブであるかを含む。したがって、任意の時点における所与の処理要素4、6、8のアドレス変換コンテキストは、関係する処理要素4、6、8によって実行され得る複数の仮想マシン実行コンテキストの中から仮想マシン実行コンテキストを識別する仮想マシン識別子(VMID:Virtual Machine Identifier)を含む変数を用いて表すことができる。アドレス変換コンテキストを指定する変数は、関係する処理要素4、6、8によって実行され得る複数のプロセスから所与のプロセスを識別するアドレス空間識別子(ASID:Adress Space Identifier)をさらに含み、スレッド内に変換バッファ無効化命令を含むことができる。
変換バッファ無効化命令が、その命令に対する特定時点においてアクティブなアドレス変換コンテキスト内において、処理要素4、6、8のうちの1つによって実行されると、当該変換バッファ有効化命令が実行されたアドレス変換コンテキストを指定する、変換バッファ無効化信号をブロードキャストすることになる。変換バッファ無効化信号の中には、発行する変換バッファ無効化命令のアドレス変換コンテキストを指定するデータが含まれる。このことにより、これらの変換バッファ無効化信号が、変換索引バッファ16、18、20が格納するアドレス変換データ(一部又は全て)のフラッシュをトリガするか否かを、変換索引バッファ16、18、20がゲーティングすることが可能となり、そのゲーティングは、変換バッファ無効化信号の元となるアドレス変換コンテキストが、これらの変換無効化信号を受信する所与の時点における変換索引バッファ16、18、20のローカル・コンテキストに合致するか否かに基づいて行われる。このことにより、一貫性を維持する必要がない場合に不必要にアドレス変換データを削除することを回避でき、よって、実際には必要のないアドレス変換データのフラッシュの結果として、変換索引バッファのリフィル及び/又はトランザクショナル・メモリのトランザクション・アボートを要することなどによる性能の低下を回避することができる。
図2は、変換索引バッファ・メモリ28、比較回路30、及び、仮想マシン識別子VMID、アドレス空間識別子ASID、高アクセス値HI及び低アクセス値LOの形態にあるバッファ・コンテキスト・データを格納するレジスタ32、34、36及び38を含む変換索引バッファ16を含む、汎用プロセッサ4の形態にある処理要素を模式的に示す。汎用プロセッサ4は、命令デコーダ40において一連のプログラム命令の中から実行するべきプログラム命令を受信し、命令デコーダ40ではこれらのプログラム命令がデコードされ、後に複数の実行パイプライン42、44、46の動作を制御する制御信号が作成される。これらの実行パイプラインは、メモリ・アクセス(ロード命令及びストア命令)を実施するプログラム命令の実行を担当し、且つ、変換索引バッファ16の変換索引バッファ・メモリ28内に格納されたアドレス変換データ48を利用する、ロード・ストア・パイプライン42を含む。
汎用プロセッサ4は、命令デコーダ40において変換バッファ無効化命令TLBI(Translation Buffer Invalidation Instruction)を受信すると、信号ライン50上に変換バッファ無効化信号を生成するように働き、それ自体の変換索引バッファ16及び、データ処理システム2内の任意の他の変換索引バッファ18、20のどちらにもブロードキャストされる。変換索引バッファ無効化命令TLBIは、無効化される変換索引バッファ・エントリのアドレス値を引数Xとして指定する。
汎用プロセッサ4は、汎用プロセッサ4の現在の状態を表すデータを格納する、カレント・プログラム・ステータス・レジスタ52を含む。この現在の状態は、汎用プロセッサ4内において複数の仮想マシン実行コンテンツのうちのいずれが現在アクティブであるか(現在実行されている一連のプログラム命令に対応する)を示す、汎用プロセッサ4に対する現在の仮想マシン識別子を含む。カレント・プログラム・ステータス・レジスタ52は、当該プロセスに関するアドレス空間識別子ASIDを用いて、複数のプロセスの中で実行している、現在アクティブなプロセスをさらに指定する。
カレント・プログラム・ステータス・レジスタ52内に共に格納された仮想マシン識別子VMID及びプロセス識別子ASIDは、デコードされ、且つ実行される変換索引バッファ命令TLBIに関するアドレス変換コンテキストの一部を表す。信号ライン50上でブロードキャストされる変換バッファ無効化信号は、仮想マシン識別子VMID、アドレス空間識別子ASID、及び、アドレス変換データが無効化される対象のターゲット受信アドレス値Xを指定する信号を含む。このようにして、変換バッファ無効化信号は、実行される変換バッファ無効化命令TLBIに関するアドレス変換コンテキストを指定する。
ブロードキャストされた変換バッファ無効化信号は、システム内の変換索引バッファ16、18、20に送信され、それぞれの変換索引バッファ16、18、20の中の比較回路30に供給される。比較回路は、関係する変換索引バッファ16、18、20内に格納されたアドレス変換データ48に関するバッファ・コンテキスト・データが変換バッファ無効化信号で指定されたものと合致するかどうかを判定する。バッファ・コンテキスト・データの仮想マシン識別子VMIDが変換バッファ無効化信号内で指定された仮想マシン識別子と合致し、バッファ・コンテキスト・データのアドレス空間識別子ASIDもまた変換バッファ無効化信号のアドレス空間識別子と合致する場合、比較回路30はアドレス変換データ48をそのローカル変換索引バッファ・メモリ28からフラッシュすることを許可する。このようなフラッシュは、格納データに無効としてマーキングするなど、様々な異なる形態を取ることがある。バッファ・コンテキスト・データ(VMID、ASID)が受信した変換バッファ無効化信号に関するアドレス変換コンテキストに合致しない場合は、ローカルに保持されたアドレス変換データ48に対する無効化の動作は必要ないため、比較回路30はアドレス変換データ48をフラッシュさせない。
汎用プロセッサ4、6を含む、処理要素のうちの少なくとも幾つかは、トランスレイショナル・メモリ・アクセスをサポートする。このようなトランザクショナル・メモリ・アクセスは、それぞれのトランザクション開始点とトランザクション・コミット点とに挟まれたプログラム命令を含むトランザクションを提供する。このようなトランザクションは、トランザクション・コミット点に達する前にトランザクションがアボートされた場合には、その装置がトランザクション開始点に対応する状態に回復するよう、アトミックに実行される。このようなトランザクショナル・メモリ・アクセスは、共有メモリを利用する場合に、例えば、明示的にセット及びリセットされたメモリ・ロックを使用する必要性を回避することによって、システム性能の向上に役立つ。
このようなシステム内でメモリ・アクセス・トランザクションがアボートされる契機となり得る1つの状況が、ローカル変換索引バッファ16、18、20内に格納されたアドレス変換データが不適切に変更される場合である。本開示は、関係するローカル変換索引バッファ16内に格納された所与のアドレス変換データ48を使用中に処理要素4によってアクセスされた最小アドレス値LO及び最大アドレス値HIをトラッキングする、レジスタの形態にある範囲トラッキング回路36、38を提供する。ローカル変換索引バッファ16がフラッシュされると、最大アドレス値HI及び最小アドレス値LOは、アドレス空間の範囲内の最低点を表す値及びアドレス空間の範囲内の最高点を表す値にそれぞれリセットされる。アドレス・アクセスが続いて発生するたびに、レジスタ36内に格納された最大値が現在のアドレス値と比較され、アドレス空間の範囲において、現在のアドレス値が現在格納されているHIの値よりも大きければ、レジスタ36内に格納された値が現在のアドレス値に更新される。同様にして、最小アドレス値LOが現在使用されているアドレス値と比較され、メモリ・アドレス空間において、現在のアドレス値が現在格納されている最小アドレス値LOより小さければ、格納されている最小アドレス値LOが現在のアドレス値に更新される。このようにして、レジスタ36、38はアドレス範囲をトラッキングする範囲トラッキング値を格納し、トランスレイショナル・メモリの現在保留中のトランザクションに関するいずれのメモリ・アクセスもそのアドレス範囲内に配置される。
所与の変換索引バッファ16において変換バッファ無効化信号を受信すると、ローカル比較回路30は、アドレス変換データが無効化される対象のターゲット受信アドレス値Xを、当該処理要素によって使用された全アドレス空間内のアドレス空間範囲をトラッキングする範囲トラッキング値HI、LOと比較する。比較の結果、ターゲット受信アドレスX、又はターゲット受信アドレス範囲が、最小アドレス値LOと最大アドレス値HIとに挟まれた範囲(ローカル・プロセッサのアクティブ・アドレス範囲)の外にある場合、トランザクションが変換バッファ無効化信号によって伝えられたアドレス変換無効化の影響を受けないよう、関係する処理要素4はトランザクショナル・メモリのいずれの保留中のトランザクションも継続する。レジスタ32、34内に格納された所与のバッファ・コンテキスト・データVMID、ASIDがどちらも受信したアドレス変換コンテキストVMID及びASIDに合致する場合、且つ、受信したターゲット・アドレス値Xが最小アドレス値LOと最大アドレス値HIとに挟まれた範囲にある場合、比較回路30は、当該ローカル処理要素4内のいずれの保留中のメモリ・トランザクションもアボートする信号を発行する。このようなメモリ・トランザクションのアボートが、関連するトランザクションの開始点に対応する状態への回復をトリガする。
所与の処理要素4、6、8は複数のプログラム・スレッドのインターリーブ実行をサポートすることができる(例えば、SMTプロセッサ内において)。これらのプログラム・スレッドのそれぞれは、それ自体のアドレス変換コンテキストを有することができる。これらのアドレス変換コンテキストは、変換索引バッファ16、18、20内に格納されたVMID、ASID、HI、及びLOの値で表される。図3は、アドレス変換バッファ・メモリ28内に格納されたアドレス変換データ48に関する複数のローカル・アドレス変換コンテキストを格納するために、複数のレジスタ32、32’、34、34’、36、36’、38、38’がどのように使用され得るかを模式的に示す。スレッド0又はスレッド1が現在アクティブであるか否かを示すスレッド指示信号を使用してマルチプレクサを切り替え、受信した変換バッファ無効化信号を有する信号を識別するアドレス変換コンテキストとの比較に、これらのアドレス変換コンテキストのうちのどちらを使用するべきかを選択する。
図4は、処理要素に対するアドレス範囲トラッキングがどのように使用されて変換バッファ無効化信号をゲーティングすることができるかを模式的に示す。システムのメモリ・アドレス空間54は、ゼロから最上のアドレス値にわたる。最後の変換索引バッファのフラッシュ以降に、関係する処理要素によって実施されるメモリ・アクセスは、レジスタ36、38を用いて範囲トラッキング回路によってトラッキングされ、それによって、メモリ・アクセスが実施される毎に、現在格納されている、アクセスされていると記録されている範囲の最小アドレス値及び最大アドレス値と比較される。新たに受信したメモリ・アドレス値が現在トラッキングされている範囲の外にある場合、格納されたHI及びLOの値は必要に応じて更新される。この挙動は、図4の左側に表される。
図4の右側は、無効化動作のためのそれぞれのターゲット・アドレスを指定する、受信した変換バッファ無効化信号を示す。これらのターゲット・アドレスが現在トラッキングされているメモリ・アドレス範囲の外にある場合、変換バッファ無効化信号は、ローカル処理要素の保留中のメモリ・アクセス・トランザクションに対していかなるアボートも引き起こさない。しかしながら、変換バッファ無効化信号が最後のTLBフラッシュ以降に使用されている、現在トラッキング中のアドレスの範囲内にあるターゲット・アドレスを指定する場合は、ローカル処理要素4のいずれの保留中のメモリ・トランザクションに対してもメモリ・トランザクションのアボートをトリガする。
図5は、変換索引バッファのフラッシュ制御を模式的に示すフロー図である。処理は、変換バッファ無効化信号を受信するまでステップ56で待機する。ステップ58は、変換バッファ無効化信号の中で受信したVMIDの値を、関係する変換索引バッファのバッファ・コンテキスト・データの一部としてレジスタ32内で保持されたVMIDの値と比較する。合致しない場合、フラッシュは実施されず、処理は終了する。合致するものがあれば、ステップ60が、受信したアドレス空間識別子の値ASIDを比較するよう働くが、このことはアクティブ・プロセスが変換バッファ無効化命令を含んだことを示し、バッファ・コンテキスト・データ、特にレジスタ34内に格納されたASID値に対する変換バッファ無効化信号を生じさせる。合致しない場合、処理は再び終了する。しかしながら、ステップ58及びステップ60のどちらにおいても合致する場合、処理はステップ62に達し、変換索引バッファ28内のアドレス変換データ48がフラッシュされる(例えば、無効としてマーキングされる)。
図6は、トランザクションのアボート制御を模式的に示すフロー図である。処理は、変換バッファ無効化信号を受信するまでステップ64で待機する。ステップ66及び68は再び、受信した仮想マシン識別子を表すVMID信号及び、発行元のトランザクション・バッファ無効化命令のプロセスを表すASID信号と、ローカル変換索引バッファのバッファ・コンテキスト・データとの合致をチェックするよう働く。これらがどちらも合致しない場合、処理は終了し、トランザクションのアボートは実施されない。しかしながら、VMID及びASIDがどちらも合致すれば、処理はステップ70に達し、受信した変換バッファ無効化信号のターゲット・アドレスXと、レジスタ36内に格納された現在格納されている最大アドレス値との間で比較を行う。受信したアドレスが格納された最大値HIよりも小さい場合、処理はステップ72に進む。受信したアドレスが格納されたHI値よりも大きい場合、ターゲット・アドレスはアドレス変換データ48を用いてアクセスされていたアドレスの範囲の外にあり、そのため、アボートは必要ない。ステップ72において、変換バッファ無効化信号によって指定された、受信したターゲット・アドレスは、格納された最小アドレス値LOと比較される。受信したアドレス値が格納された最小値LOよりも小さい場合、トランザクションは実施されず、処理は再び終了する。しかしながら、ステップ70及び72をどちらもパスすると、それは受信したターゲット・アドレスが関係する変換索引バッファ48を用いてアクセスされていたメモリ・アドレスのトラッキング範囲内にあることを示し、保留中のメモリ・トランザクションのうちの1つが無効化される対象であると示されていたアドレス変換データに依存している可能性があり、したがって、ステップ74は、ローカル処理要素4内の全ての保留中のメモリ・トランザクションのトランザクション・アボートをトリガするよう働く。アドレス変換データもまた図5のフロー図に従って無効化されることは理解されるであろう。
図7は、使用される可能性のあるシミュレータの実装例を示す。前述した実施例が関係する技術をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実施する一方で、本明細書に記載する実施例に従って、コンピュータ・プログラムの使用を通じて実装される命令実行環境を提供することも可能である。ハードウェア・アーキテクチャのソフトウェア・ベースでの実装を提供する限りにおいて、このようなコンピュータ・プログラムはしばしばシミュレータと称される。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。典型的には、シミュレータの実装は、シミュレータ・プログラム510をサポートするホスト・オペレーティング・システム520を任意に実行する、ホスト・プロセッサ530上で動作することができる。幾つかの構成では、ハードウェアと、提供された命令実行環境との間にシミュレーションの複数レイヤがあってもよく、且つ/又は、同じホスト・プロセッサ上に提供された複数の独立した命令実行環境があってもよい。歴史的に、強力なプロセッサはリーズナブルな速度で実行するシミュレータの実装を提供することを求められてきたが、そのようなアプローチは、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行する要求がある場合など、特定の状況で正当化され得る。例えば、シミュレータの実装は、ホスト・プロセッサ・ハードウェアによってサポートされていない追加的な機能性を備える命令実行環境、又は、典型的には、異なるハードウェア・アーキテクチャに関する命令実行環境を提供することができる。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53〜63頁に記載されている。
特定のハードウェア構成体又は特徴に関して前述した実施例の範囲において、シミュレートされた実施例では、適切なソフトウェア構成体又は機能によって同等の機能性を提供することができる。例えば、シミュレートされた実施例において特定の回路をコンピュータ・プログラム・ロジックとして実装することができる。同様に、レジスタやキャッシュのようなメモリ・ハードウェアを、シミュレートされた実施例においてソフトウェア・データ構造として実装することができる。前述した実施例において言及した1つ又は複数のハードウェア要素がホスト・ハードウェア(例えば、ホスト・プロセッサ530)上にある構成においては、幾つかのシミュレートされた実施例は、適切な場合に、ホスト・ハードウェアを利用することができる。
シミュレータ・プログラム510は、コンピュータ可読記憶媒体(非一時的な媒体でよい)上に格納することができ、シミュレータ・プログラム510によってモデル化されたハードウェア・アーキテクチャのアプリケーション・プログラム・インタフェースと同じターゲット・コード500(アプリケーション、オペレーティング・システム、及びハイパーバイザを含んでよい)にプログラム・インタフェース(命令実行環境)を提供する。したがって、ターゲット・コード500のプログラム命令は、上述したレルム保護機能性に基づいたメモリ・アクセスの制御を含み、シミュレータ・プログラム510を使用した命令実行環境内から実行することができ、そのため、実際には上述した装置2のハードウェア機能を持たないホスト・コンピュータ530がこれらの機能をエミュレートすることができる。
少なくとも幾つかの実例は、仮想マシンを提供し、当該仮想マシンは、受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを1つ又は複数の変換バッファに格納するステップと、プログラム命令を実行するステップとを含む方法に従って動作する実行環境を提供し、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する。記憶媒体は、仮想マシンのコンピュータ・プログラムを格納することができる。記憶媒体は、非一時的な記憶媒体であってよい。
本明細書において、用語「〜するよう構成される」は、装置の要素が、定義された動作を実施することができる構成を有するという意味で使用される。これに関連して、「構成」はハードウェア又はソフトウェアの相互接続の構成又は方法を意味する。例えば、装置は定義された動作を提供する専用ハードウェアを有することができるか、或いは、プロセッサ又はその他の処理デバイスはその機能を実施するようプログラムされ得る。用語「〜するよう構成される」は、定義された動作を提供するために装置の要素が何らかの方法で変更される必要があることを含蓄するものではない。
本明細書に、本発明を説明する実施例を添付図面を用いて詳述したが、本発明はこれらの正確な実施例に限定されるものではなく、添付された特許請求の範囲によって定められた本発明の範囲及び意図から逸脱することなく、当業者による様々な変更や改良がなされ得ることを理解されたい。

Claims (18)

  1. データを処理するための装置であって、
    受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための1つ又は複数の変換バッファと、
    プログラム命令を実行するための処理回路とを含み、
    前記処理回路が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
    前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置。
  2. 前記装置が、複数の仮想マシン実行コンテキストの実行をサポートし、前記所与のアドレス変換コンテキストが、前記変換バッファ無効化命令の仮想マシン実行コンテキストを識別するための仮想マシン識別子を含む、請求項1に記載の装置。
  3. 前記装置が、それぞれのアドレス空間変換マッピングを有する複数のプロセスの実行をサポートし、前記所与のアドレス変換コンテキストが、前記複数のプロセスの中の前記変換バッファ無効化命令のプロセスを識別するためのアドレス空間識別子を含む、請求項1又は2に記載の装置。
  4. 前記1つ又は複数の変換バッファの中の所与の変換バッファが、前記所与の変換バッファ内に格納された所与のアドレス変換データのアドレス変換コンテキストを指定する所与のバッファ・コンテキスト・データを格納する、請求項1から3までのいずれか一項に記載の装置。
  5. 前記所与の変換バッファに関するコンテキスト比較回路を含み、前記所与のバッファ・コンテキスト・データと前記所与のアドレス変換コンテキストを指定する前記信号との比較を実施する、請求項4に記載の装置。
  6. 前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号に合致する場合、前記比較回路は前記所与のアドレス変換データのフラッシュを許可し、
    前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号と異なる場合、前記比較回路は前記所与のアドレス変換データのフラッシュを抑止する、請求項5に記載の装置。
  7. 前記処理回路が、前記所与の変換バッファ内に格納された前記所与のアドレス変換データを用いる処理要素を含み、
    前記処理要素が、トランザクショナル・メモリ・アクセスをサポートし、それによって、トランザクション開始点とトランザクション・コミット点とに挟まれたプログラム命令を含むトランザクションが、アトミックに実行され、前記トランザクション・コミット点に達する前にアボートされ、前記トランザクション開始点に対応する状態に前記装置を回復することができ、
    前記処理要素が、前記比較に基づいて、保留中のトランザクションを選択的にアボートする、請求項4、5、及び6のいずれか一項に記載の装置。
  8. 前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号と異なる場合、前記処理要素が前記保留中のトランザクションを継続する、請求項7に記載の装置。
  9. 前記変換バッファ無効化信号が、アドレス変換データが無効化される対象の1つ又は複数のターゲット受信アドレス値を指定し、
    前記所与の変換バッファが、前記所与の変換バッファ内に格納された前記所与の変換データを使用中に前記処理要素からアクセスされる最小アドレス値及び最大アドレス値をトラッキングするための範囲トラッキング回路を含み、
    前記1つ又は複数のターゲット受信アドレス値が前記最小アドレス値と前記最大アドレス値とに挟まれた範囲の外にある場合、前記処理要素が前記保留中のトランザクションを継続する、請求項7又は8に記載の装置。
  10. 前記所与のバッファ・コンテキスト・データが前記所与のアドレス変換コンテキストを指定する前記信号と合致し、前記1つ又は複数のターゲット受信アドレス値が前記最小アドレス値及び前記最大アドレス値によって挟まれた範囲内にある場合、前記処理要素が前記保留中のトランザクションをアボートする、請求項9に記載の装置。
  11. 前記処理要素が、複数のプログラム・スレッドのインターリーブ実行をサポートし、前記所与の変換バッファが、前記複数のプログラム・スレッドのそれぞれについて、所与のバッファ・コンテキスト・データと、前記最小アドレス値及び前記最大アドレス値を特徴付ける範囲トラッキング・データとを格納する、請求項9又は10に記載の装置。
  12. 前記処理要素が、汎用プロセッサ及び画像処理ユニットのうちの1つを含む、請求項7から11までのいずれか一項に記載の装置。
  13. 前記アドレス変換データが、
    仮想アドレスと物理アドレスとのマッピング、
    仮想アドレスと中間物理アドレスとのマッピング、
    のうちの1つを提供する、請求項1から12までのいずれか一項に記載の装置。
  14. 前記1つ又は複数の変換バッファが、1つ又は複数の変換索引バッファを含む、請求項1から13までのいずれか一項に記載の装置。
  15. データを処理するための装置であって、
    受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための1つ又は複数の変換バッファ手段と、
    プログラム命令を実行するための処理手段とを含み、
    前記処理手段が、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
    前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、装置。
  16. データを処理する方法であって、
    受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを1つ又は複数の変換バッファ内に格納するステップと、
    プログラム命令を実行するステップとを含み、
    所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファに変換バッファ無効化信号をブロードキャストし、
    前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、方法。
  17. ホスト・データ処理装置を制御して命令実行環境を提供するためのコンピュータ・プログラムであって、
    受信したアドレスを変換後のアドレスにマッピングするためのそれぞれのアドレス変換データを格納するための1つ又は複数の変換バッファ・データ構造と、
    プログラム命令を実行するための処理プログラム・ロジックとを含み、
    前記処理プログラム・ロジックが、所与のアドレス変換コンテキストを用いて実行する一連のプログラム命令内の変換バッファ無効化命令に応答して、前記1つ又は複数の変換バッファ・データ構造に変換バッファ無効化信号をブロードキャストし、
    前記変換バッファ無効化信号が前記所与のアドレス変換コンテキストを指定する、コンピュータ・プログラム。
  18. 請求項17に記載のコンピュータ・プログラムを格納する記憶媒体。
JP2019570895A 2017-06-28 2018-06-01 アドレス変換データの無効化 Pending JP2020525905A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17386022.2 2017-06-28
EP17386022.2A EP3422192B1 (en) 2017-06-28 2017-06-28 Address translation data invalidation
PCT/EP2018/064497 WO2019001896A1 (en) 2017-06-28 2018-06-01 INVALIDATION OF ADDRESS TRANSLATION DATA

Publications (1)

Publication Number Publication Date
JP2020525905A true JP2020525905A (ja) 2020-08-27

Family

ID=59350848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019570895A Pending JP2020525905A (ja) 2017-06-28 2018-06-01 アドレス変換データの無効化

Country Status (8)

Country Link
US (1) US11615032B2 (ja)
EP (1) EP3422192B1 (ja)
JP (1) JP2020525905A (ja)
KR (1) KR102635247B1 (ja)
CN (1) CN110770709B (ja)
IL (1) IL270987B (ja)
TW (1) TWI790242B (ja)
WO (1) WO2019001896A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977183B2 (en) * 2018-12-11 2021-04-13 International Business Machines Corporation Processing a sequence of translation entry invalidation requests with regard to draining a processor core
US10915456B2 (en) 2019-05-21 2021-02-09 International Business Machines Corporation Address translation cache invalidation in a microprocessor
CN112463657B (zh) * 2019-09-09 2024-06-18 阿里巴巴集团控股有限公司 一种地址转换缓存清除指令的处理方法和处理装置
US11210233B2 (en) * 2020-01-07 2021-12-28 International Business Machines Corporation System and method for handling address translation invalidations using an address translation invalidation probe
US11615033B2 (en) * 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
WO2023034662A1 (en) * 2021-09-02 2023-03-09 Nuvia, Inc. System and methods for invalidating translation information in caches
US11748300B2 (en) * 2021-11-18 2023-09-05 Vmware, Inc. Reverse deletion of a chain of snapshots

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
US20140075151A1 (en) * 2012-09-07 2014-03-13 International Business Machines Corporation Detection of conflicts between transactions and page shootdowns
JP2017517040A (ja) * 2014-02-21 2017-06-22 エイアールエム リミテッド 格納されたアドレス変換の無効化

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206916B2 (en) * 2004-03-08 2007-04-17 Sun Microsystems, Inc. Partial address compares stored in translation lookaside buffer
US7802055B2 (en) * 2006-04-19 2010-09-21 Qualcomm Incorporated Virtually-tagged instruction cache with physically-tagged behavior
US8005661B2 (en) * 2007-05-07 2011-08-23 Nec Laboratories America, Inc. Modeling and verification of concurrent systems using SMT-based BMC
US10146545B2 (en) * 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9086987B2 (en) * 2012-09-07 2015-07-21 International Business Machines Corporation Detection of conflicts between transactions and page shootdowns
US10310973B2 (en) 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10169091B2 (en) * 2012-10-25 2019-01-01 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
GB2528061B (en) * 2014-07-08 2021-04-21 Advanced Risc Mach Ltd Translating between memory transactions of first type and memory transactions of a second type
US9940287B2 (en) 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
US9898418B2 (en) * 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
US10037280B2 (en) * 2015-05-29 2018-07-31 Qualcomm Incorporated Speculative pre-fetch of translations for a memory management unit (MMU)
US9733689B2 (en) * 2015-06-27 2017-08-15 Intel Corporation Hardware apparatuses and methods to perform transactional power management
US11023233B2 (en) * 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
US20140075151A1 (en) * 2012-09-07 2014-03-13 International Business Machines Corporation Detection of conflicts between transactions and page shootdowns
JP2017517040A (ja) * 2014-02-21 2017-06-22 エイアールエム リミテッド 格納されたアドレス変換の無効化

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ROBERT BEDICHEK: "Some Efficient Architecture Simulation Techniques", PROCEEDINGS OF THE WINTER 1990 USENIX CONFERENCE, JPN7022001883, 22 January 1990 (1990-01-22), US, pages 53 - 63, ISSN: 0004898126 *

Also Published As

Publication number Publication date
EP3422192B1 (en) 2020-08-12
IL270987A (en) 2020-01-30
IL270987B (en) 2022-06-01
TWI790242B (zh) 2023-01-21
TW201907308A (zh) 2019-02-16
KR102635247B1 (ko) 2024-02-08
WO2019001896A1 (en) 2019-01-03
CN110770709B (zh) 2023-10-20
US20200167292A1 (en) 2020-05-28
US11615032B2 (en) 2023-03-28
KR20200023380A (ko) 2020-03-04
EP3422192A1 (en) 2019-01-02
CN110770709A (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
US11615032B2 (en) Address translation data invalidation
CN107735775B (zh) 用于使用与指针相关联的范围信息来执行指令的装置和方法
JP5608594B2 (ja) プレロード命令制御
US10564973B2 (en) Apparatus and method for sharing branch information storage entries between threads that share an address translation regime
US20190220279A1 (en) Simulation of exclusive instructions
JP6874264B2 (ja) ベクトルアトミックメモリ更新命令
CN112639750A (zh) 用于控制存储器存取的装置及方法
CN108463810B (zh) 存储器地址变换管理
KR20240022656A (ko) 메모리 매핑 무효화 요청의 동시 프로세싱
US9223600B1 (en) In-processor dynamic address redirection table for substituting instruction strings
US11842195B2 (en) Conditional yield to hypervisor instruction
US11409551B2 (en) Emulating VPID correctly for a nested hypervisor
JP2022502729A (ja) メモリ・アクセス制御
US11550651B2 (en) Execution circuits using discardable state
JP7369720B2 (ja) アクションをトリガするための装置及び方法
TWI801622B (zh) 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體
JP2024523150A (ja) メモリマッピング無効化要求の同時処理
Taylor Cachekata: memory hierarchy optimization via dynamic binary translation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220720

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20221018