JP7136888B2 - 例外マスク更新命令後のトランザクションの非アボート処理の許可 - Google Patents

例外マスク更新命令後のトランザクションの非アボート処理の許可 Download PDF

Info

Publication number
JP7136888B2
JP7136888B2 JP2020516676A JP2020516676A JP7136888B2 JP 7136888 B2 JP7136888 B2 JP 7136888B2 JP 2020516676 A JP2020516676 A JP 2020516676A JP 2020516676 A JP2020516676 A JP 2020516676A JP 7136888 B2 JP7136888 B2 JP 7136888B2
Authority
JP
Japan
Prior art keywords
transaction
exception
processing
instruction
circuitry
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.)
Active
Application number
JP2020516676A
Other languages
English (en)
Other versions
JP2020535512A (ja
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 JP2020535512A publication Critical patent/JP2020535512A/ja
Application granted granted Critical
Publication of JP7136888B2 publication Critical patent/JP7136888B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4825Interrupt from clock, e.g. time of day
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本技術は、データ処理の分野に関する。より詳細には、本技術は、トランザクショナル・メモリに関する。
データ処理システムは、データ処理の多数のスレッドを実行することができる。時には、スレッドは共有リソースにアクセスする必要があり、データ処理動作の特性上、一度スレッドが共有リソースとのやり取りを開始すると、動作のセットは、当該リソースを用いて、動作中に別のスレッドが当該リソースにアクセスすることなく、アトミックに完了しなければならないことがある。
このスレッド間の競合を処理するための1つの技術が、ロックを使用して、少なくとも1つのターゲット・リソースへの排他的アクセスを制御することであろう。例えば、1つのスレッドが、特定のアドレス領域内のデータへのアクセスを開始すると、当該スレッドは、ロック変数を設定してロックの所有権を主張し、その後、ロックを所有するスレッドがロックの所有権を有する間、ロック変数をチェックしている他のスレッドは、ロックが既に主張されていて、そのため当該アドレス領域とやり取りをするコードのセクションに入ることができないと判定することができる。このようなロック・ベースのアプローチは、競合が起こらないことを保証するロックの所有権を持たない限り、別スレッドとの競合が発生し得るため、各スレッドはデフォルトで、共有リソースにアクセスするコードのセクションに入ることができないと見なす、という点で悲観的と捉えることができる。しかし、ロック識別子はしばしば、多くのリソース(例えば、アドレスの範囲)への排他的アクセスを制御することができるため、1つのスレッドがロック変数によって保護されたリソース・セット内の特定のリソースにアクセスする場合に、別スレッドが同じリソースにアクセスすることが確約されているわけではない。従って、ロック・ベースのアプローチは、スレッド間の競合が稀な場合においては、スレッドが、共有リソースを使用するコードのクリティカル・セクションに入るまでに、ロックがリリースされるのを不必要に待つ可能性があるため、性能劣化を招くことがある。
共有リソースにアクセスするスレッド間の競合を処理するための、より楽観的なアプローチに、トランザクショナル・メモリ・サポートの使用がある。データ処理システムは、処理回路によるデータ処理のスレッド内でのトランザクションの実行をサポートするための回路を有することができる。トランザクションは、トランザクションの開始を標示するトランザクション開始命令と、トランザクションの終了を標示するトランザクション終了命令との間で実行される、スレッドの命令であってよい。トランザクション開始命令と終了命令との間では、処理回路が、それらの間にある命令を投機的に実行し、トランザクション終了命令に到達するまで、これらの投機的に実行される命令の結果のコミットを回避する。トランザクション開始命令の実行の後に(ただしトランザクション終了命令に到達する前に)アボート・イベントが発生すると、トランザクションがアボートされ、投機的実行結果は破棄され得る。トランザクションをアボートする原因は数多くあるが、1つの原因は、別のスレッドによるメモリ・アクセスとの競合の検出であろう。そのため、本アプローチでは、他のスレッドとの競合は発生しないものと見なして、コードのクリティカル・セクションの処理を楽観的に開始し、競合を検出することなくクリティカル・セクションの終了に到達すれば、トランザクションの結果はコミットされることができる。競合の発生が稀な場合においては、トランザクショナル・メモリ・サポートを使用することにより、より多くのスレッドがそれらのコードのクリティカル・セクションを同時に処理することが可能となり、性能を向上することができる。
「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁
少なくともいくつかの実例は、命令に応答してデータ処理を実施するための処理回路であって、前記処理回路が、前記処理回路によるデータ処理のスレッド内でのトランザクションの実行をサポートするためのトランザクショナル・メモリ・サポート回路を含み、前記トランザクションが、トランザクション開始命令とトランザクション終了命令との間で投機的に実行される前記スレッドの命令を含み、それについて、前記処理回路が、前記トランザクション終了命令に到達するまで前記投機的に実行される命令の結果のコミットを回避し、前記トランザクション終了命令に到達する前にアボート・イベントが発生すると、前記トランザクションの処理をアボートするよう構成される、前記処理回路と、例外の1つ又は複数のサブセットが有効化であるか、又は無効化であるかを指定する例外マスク情報に応じて、例外をマスクするかどうかを判定するための例外処理回路とを含み、前記例外マスク情報を更新して、前記トランザクションの処理の開始時に無効化された、例外の少なくとも1つのサブセットを有効化するための、トランザクション内で実行される例外マスク更新命令に応答して、前記処理回路が、前記例外マスク情報を更新し、前記例外マスク更新命令に続く前記トランザクションの1つ又は複数の後続の命令のアボートされていない処理を許可するよう構成される、装置を提供する。
少なくともいくつかの実例は、命令に応答して、処理回路を用いてデータ処理を実施するステップであって、前記処理回路が、前記処理回路によるデータ処理のスレッド内でのトランザクションの実行をサポートするためのトランザクショナル・メモリ・サポート回路を含み、前記トランザクションが、トランザクション開始命令とトランザクション終了命令との間で投機的に実行される前記スレッドの命令を含み、それについて、前記処理回路が、前記トランザクション終了命令に到達するまで前記投機的に実行される命令の結果のコミットを回避し、前記トランザクション終了命令に到達する前にアボート・イベントが発生すると、前記トランザクションの処理をアボートするよう構成される、ステップと、例外に応答して、例外の1つ又は複数のサブセットが有効であるか、又は無効であるかを指定する例外マスク情報に応じて、前記例外をマスクするかどうかを判定するステップと、前記例外マスク情報を更新して、前記トランザクションの処理の開始時に無効化された、例外の少なくとも1つのサブセットを有効化するための、トランザクション内で実行される例外マスク更新命令に応答して、前記例外マスク情報を更新し、前記例外マスク更新命令に続く前記トランザクションの1つ又は複数の後続の命令のアボートされていない処理を許可するステップとを含む、データ処理方法を提供する。
少なくともいくつかの実例は、データ処理のスレッド内でのトランザクションの実行をサポートする処理プログラム・ロジックであって、前記トランザクションが、トンランザクション開始命令とトランザクション終了命令との間で投機的に実行されるスレッドの命令を含み、それについて、前記処理プログラム・ロジックが、前記トランザクション終了命令に到達するまで前記投機的に実行される命令の結果のコミットを回避し、前記トランザクション終了命令に到達する前にアボート・イベントが発生すると、前記トランザクションの処理をアボートするよう構成される、処理プログラム・ロジックと、例外の1つ又は複数のサブセットが有効であるか、又は無効であるかを指定する例外マスク情報に応じて、例外をマスクするかどうかを判定するための例外処理プログラム・ロジックとを含み、前記例外マスク情報を更新して、前記トランザクションの処理の開始時に無効化された例外の少なくとも1つのサブセットを有効化するための、トランザクション内で実行される例外マスク更新命令に応答して、前記処理プログラム・ロジックが、前記例外マスク情報を更新し、前記例外マスク更新命令に続く前記トランザクションの1つ又は複数の後続の命令のアボートされていない処理を許可するよう構成される、ホスト・データ処理装置を制御して命令を実行するための命令実行環境を提供するためのコンピュータ・プログラムを提供する。
上述したコンピュータ・プログラムを格納する記憶媒体が提供されてよい。記憶媒体は、非一時的なコンピュータ・プログラム記憶媒体であってよい。
本技術のさらなる態様、特徴、及び利点は、後述する実例の説明を添付図面と併せて読解することで明らかになるであろう。
トランザクショナル・メモリ・サポート回路を含む装置の実例を模式的に示す図である。 トランザクションの処理の実例を示す図である。 例外マスク情報の2つの実例を示す図である。 トランザクション内で例外マスク更新命令が実行される際の、トランザクションのアボートの比較例を示す図である。 トランザクションの途中で、例外マスク更新が、予め無効化された例外の処理を有効化することができる場合に起こり得る問題を示す図である。 マスク更新によって有効化された例外がトランザクションのアボートをトリガする場合に、トランザクション内での例外マスク更新を可能とし、状態情報をレポートすることによって、この問題に対処する技術を示す図である。 トランザクションの処理の方法を示すフロー図である。 使用され得るシミュレータの実例を示す図である。
データ処理装置は、処理回路によるデータ処理のスレッド内でのトランザクションの実行をサポートするためのトランザクショナル・メモリ・サポート回路を有する処理回路を有することができる。トランザクションは、トランザクション開始命令とトランザクション終了命令との間で投機的に実行されるスレッドの命令を含み、それについて、処理回路は、トランザクション終了命令に到達するまでトランザクションの投機的に実行される命令の結果のコミットを回避し、トランザクション終了命令に到達する前にアボート・イベントが発生すると、トランザクションの処理をアボートすることができる。
装置は、命令の処理中に起こり得る例外条件の処理を制御するための例外処理回路を有することができる。例外条件は、他の処理が実施され得るよう、処理回路によって実施される処理を停止するよう要求する、何らかのイベントであってよい。例えば、例外は、無効な、マッピングされていない、若しくはアクセス不可能なメモリ・アドレスにソフトウェアがアクセスを試みることによって起こるメモリ障害、未定義の命令の実行、又は、実施されているセキュリティ保護を侵害するソフトウェアによって実行される動作などの、ソフトウェアによってトリガされる例外を含んでよい。例外はまた、ユーザがデバイス上のボタンを押下する、外部装置が装置にリクエストを送信する、周辺装置が信号を送信する、又は、処理回路自体によって実行される命令に直接依らないその他のイベントなどの、外部イベントによってトリガされるハードウェアの割り込みを含み得る。例外処理回路は、例外の1つ又は複数のサブセットが有効であるか、又は無効であるかを指定することができる例外マスク情報に基づいて、特定の例外をマスクにより除外する機能性を有することができる。
典型的に、例外マスク情報を更新する命令は、トランザクション内で禁止されており、トランザクションの処理中に、例外マスク情報を更新する命令に遭遇する(encounter)と、トランザクションがアボートされるよう、アボート・イベントを引き起こす。これは、典型的に、トランザクション開始時における例外マスク状態と、トランザクション内のその後の例外マスク状態との不一致によって起こるライブロック状態を回避するために実施される。
しかし、本発明者らにより、トランザクション中の例外マスク更新命令を抑止する必要がないことが判明した。例外マスク情報を更新して、トランザクションの処理の開始時に無効化された、例外の少なくとも1つのサブセットを有効化するための、トランザクション内で実行される例外マスク更新命令に応答して、処理回路は、例外マスク情報を更新し、例外マスク更新命令に続くトランザクションの1つ又は複数の後続の命令のアボートされていない処理を許可することができる。故に、例外マスク更新命令に遭遇した際に、アボートをトリガしたり、例外マスク情報の更新を抑止したりする必要はない。このことにより、従来は不可能であった、トランザクショナル・メモリのメカニズムを、例外マスク更新命令を含む処理のスレッドに対して使用する機会が増大する。このことが有用である理由は、1つの業者によって書かれたソフトウェアの一部が、しばしば、別の業者によって書かれたソフトウェアの一部、又は、前記1つ目のソフトウェア内で実行される、その他の業者によって書かれた特定の関数を参照するため、プログラマ又はコンパイラが、実行される全てのコードが例外マスク更新命令を含むかどうかを知ることは困難であり、故に、例外マスク更新命令があることで起こるアボートによって失敗し得るトランザクションを繰り返し実行しようとし、又、ロック・ベースのメカニズムを用いるような非トランザクショナルのアプローチを用いる場合は、十分な数のアボートが検出されるまでに時間がかかることがあるため、このようなコードは、前述した技術を用いなければ、低性能となり得ることである。これに対し、例外マスク更新を超えてトランザクションの処理を継続する機能性を用いれば、このようなコードの性能を向上することができる。
トランザクショナル・メモリ・サポート回路は、トランザクション開始命令に応答して取得されるトランザクション回復状態データを格納するための回復状態ストレージ回路を有することができる。処理回路は、アボート・イベントに応答して、トランザクション回復状態データを復元することができる。トランザクション回復状態データは、例外マスク情報を含むことができる。そのため、トランザクションの本体内に、トランザクションの処理の開始時に無効化された例外の少なくとも1つのサブセットを有効化する例外マスク更新命令がある場合、トランザクションがアボートされれば、例外マスク情報は前の値に復元されることができ、故に、例外の少なくとも1つのサブセットは再び無効化される。
このことにより、トランザクションの処理中の有効な例外の発生に応答して、処理回路がアボート・イベントをトリガするよう構成されるため、問題が生じ得る。例外が発生すると、例外を適用(take)した後に実施される後続の処理は、トランザクション内で実施される動作の一部でなく、当該トランザクションの投機的実行結果のセットの中に記録されてはならない結果を生成することになる。同様に、例外によってアクセスされるアドレスと、他のスレッドによってアクセスされるアドレスとの競合は、トランザクション自体と同じ方法でフラグ化されなくてもよい。例外処理をトランザクション処理と区別するための十分なハードウェアのリソースを用意し、トランザクションを後に再開することは、非常に複雑であり、追加費用を正当化することは難しく、それ故、トランザクションの処理中に有効な例外が発生した場合にはトランザクションを単にアボートする方が簡単であろう。
しかし、例外によってトランザクションをアボートすると、例外の提供は、トランザクションの回復状態データが復元されるまで保留される。これは、例外が、トランザクションがアボートされるならば、トランザクションは二度と発生しないものとするように、アーキテクチャの状態を参照するべきだからである。従って、予め無効化された例外のサブセットがトランザクション中に有効化されることができるよう、トランザクションをアボートすることなく、トランザクション中に例外マスク更新命令を実行できれば、これらの新たに有効化された例外の1つが発生し、これによりトランザクションがアボートされ、前に取得された回復状態の復元によって、例外を適用する前に例外のサブセットが無効化される。そして、例外は保留状態を維持し、ソフトウェアはトランザクションの再開を試みることができる。次にトランザクションの実行を試みる際、例外マスク更新命令に再び遭遇すると、サブセットの例外を再び有効化し、保留中の例外が再びアボートをトリガし、これが、いつまでも例外を解決することなく、又、いつまでもトランザクションを完了することなく、同じトランザクションの実行を何度も試みる長いループとなり、ライブロック状態を引き起こすことがある。実際には、ソフトウェアは通常、トランザクションの再開を試みることを中止し、アボートの数が閾値を超えると、非トランザクショナルな方法を用いて同等の動作を実行するためのメカニズムを有するため、無期限にプロセッサをハングアップさせるわけではない。しかしながら、これを判定するにはある程度の時間がかかり、その間に何度もトランザクションの処理を試みることで、多くの無駄な処理が発生し、非トランザクショナルな方法を用いて動作が最終的に実行されるまでに長い遅延が発生し得る。これが、トランザクショナル・メモリの典型的なアプローチが、トランザクション内の例外マスク更新命令を無効化してきた、又は、トランザクション中にアボートをトリガする、1つの理由である。
これに対して、上述したアプローチを用いると、例外マスク更新を実行することができ、トランザクションの処理は、トランザクションをアボートすることなく、例外マスク更新命令を超えて継続することを許可される。依然として例外マスク更新命令の後にトランザクションをアボートすることはできるが(例えば、例外又は競合が発生する場合)、これは少なくともトランザクションの処理を継続し、(アボートが発生しない場合)トランザクションの終了に到達し、例外マスク情報がトランザクションの途中で変更された状態を有するかに関わらず、結果をコミットする機会を供与する。
トランザクションの処理中の有効な例外の発生に応答して、有効な例外がトランザクションの処理の開始時に無効化された場合、処理回路は、アボート状態情報を所定の値に設定することができる。これに対して、トランザクションに対して発生するアボート・イベントに応答して、アボート・イベントが、有効な例外の発生以外のイベントによってトリガされる場合、又は、トランザクションの処理の開始時にも有効化された有効な例外の発生によってトリガされる場合、処理回路は、アボート状態値を所定の値以外の値に設定することができる。従って、トランザクションがアボートされた時のアボート状態情報を確認することによって、ソフトウェアは、トランザクションの途中で有効化された例外の結果としてトランザクションがアボートされたケースと、他の潜在的理由によるアボートとを区別することができる。ソフトウェアは続いて、例えば、アボート状態情報が所定の値を有する場合に、コードはトランザクショナル・モードでの実行を再試行するべきでないことを判定することができる。例えば、ソフトウェアは、代わりに非トランザクショナル・モードでの同等の関数を実行する(例えば、コード内で同等の非トランザクショナル・モードの動作を提供するパスへ分岐する)ことができ、例えば、ロック・ベースのメカニズムを使用して、複数スレッドによる共有リソースへの同時アクセスを回避することができる。従って、アボート状態情報を提供することによって、ライブロック状態のリスクを軽減し、重大な性能ボトルネックのリスクを伴わずに例外マスク状態情報をトランザクションの途中で変更することを可能にし、それ故に、例外が有効であるか、無効であるかの状態を変更する必要があるコードに対して、トランザクショナル・メモリ・ベースのメカニズムを使用する機会が増大する。
アボート状態情報は、様々な方法で表現され得る。いくつかの実例では、アボート状態情報は、状態レジスタ内のフラグであってよく、これは、有効な例外がトランザクションのアボートをトリガし、そのトランザクションが開始したときにその有効な例外が無効化されていた際に第1の値に設定され、その他の種別のアボートについては第2の値に設定されることができる。あるいは、アボート状態情報は、トランザクションのアボートに対する様々な要因を表す、様々な符号化を用いた複数のビットを有する、一般的なアボート要因コードであってよい。アボート状態コードの可能な値の1つは、アボートが、トランザクションをアボートする時点で有効であったが、トランザクション開始時には無効化されていた例外によるものであることを示すよう割り当てられた、特別な値であってよい。このケースでは、トランザクションが、トランザクションの途中で有効化された例外によってアボートされる場合、例外がトランザクションの処理の開始時に既に有効化されていたケースと比較して、アボート状態コードの異なる状態によって反映されることになる。
例外マスク情報は、様々な方法で表現される。いくつかのケースでは、例外マスク情報は、2つ以上の異なる種別の例外について、例外の各種別が有効であるか、又は無効であるかを別々に指定することができる。例えば、例外マスク情報内の1つのフラグが、デバッグ関連の例外が有効であるか、又は無効であるかを示し、別のフラグが、メモリ障害の例外が有効であるか、又は無効であるかを示すことなどが可能である。この種の例外マスク情報を用いる場合、例外マスク更新命令は、特定の種別の例外について(又は、2つ以上の種別の例外について)、有効/無効フラグを変更して、フラグを無効状態から有効状態へ変更する命令であってよい。
あるいは、例外マスク情報は、例外優先閾値を指定してもよい。例外処理回路は、例外の優先度と例外優先閾値との比較に応じて、例外をマスクするかどうかを判定することができる。そのため、現在無効な例外のサブセットは、例外優先閾値より低い優先度を有する例外である可能性がある(随意に、例外優先閾値と等しい優先度を有する例外も無効化され得る)。例外優先度が、数値によって様々に表現され得ることは理解されるであろう。例えば、最小の数値(例えば、ゼロ)が最も重要な種類の例外を示すことができ、例えば、優先度0の例外が、優先度3よりも高い優先度を有すると見なすことができる。あるいは、他のアプローチでは、優先順位の最大の数値を用いて最も重要な優先度を表してもよい(例えば、優先度15が優先度12よりも高い優先度の例外を表す)。従って、本願において優先度という用語は、当該重要度を表すために使用される実際の数値に関係なく、例外の相対的な重要度を意味する。例外マスク情報が例外優先閾値を指定する実例において、上述した例外マスク更新命令は、より大きな例外のサブセットが有効化されるように、より低い(より重要でない)優先度を示すよう、閾値の例外優先度を更新する命令であってよい。
上述の実例は、予め無効化された例外を有効化する例外マスク更新命令について論じているが、予め有効化された例外を無効化するよう例外マスク情報を更新する、他の種別の例外マスク更新命令もまた、トランザクションをアボートすることなく、トランザクション内で実行され得る。
トランザクショナル・メモリ・サポート回路は、トランザクショナル・メモリのメカニズムを用いたトランザクションの実行をサポートするための多くのリソースを含むことができる。例えば、トランザクショナル・メモリ・サポート回路は、トランザクション開始命令に応答して取得された、トランザクションのアボートに際して復元されるべきトランザクション回復状態を格納するための回復状態ストレージ回路を含むことができる。いくつかのケースでは、外側のトランザクションのトランザクション開始命令は、トランザクション回復状態の取得をトリガすることができ、内側のトランザクションについてのトランザクション回復状態の取得は抑制され得る(トランザクション開始命令に遭遇した時点におけるトランザクションのネスト深さがゼロより大きい場合)。
トランザクショナル・メモリ・サポート回路はまた、少なくとも1つのスレッドの少なくとも1のトランザクションについて、少なくともいくつかの投機的に実行された命令の結果を格納するための投機的実行結果ストレージ回路を含むことができる。レジスタ上で動作する一般的な演算命令は、回復状態により、状態が実行のより早い時点に巻き戻された際に、それらの結果を後に破棄させることができるため、単純にこれらのレジスタに書き込みを行うが、いくつかのケースでは、特定の種別の命令のみが、投機的実行結果ストレージ回路に格納される結果を有することができ、例えば、メモリに書き込みを行うためのストア命令は、トランザクションをコミットすることができるまで、投機的実行結果ストレージ回路に投機的に保持される格納データを有することができる。
トランザクショナル・メモリ・サポート回路はまた、第1のスレッドのトランザクション内で実施される所与のアドレスへのデータ・アクセスと、別のスレッドによって実施される同一アドレスへのデータ・アクセスとの競合を検出するための競合検知回路を含むことができる。アボート・イベントは、競合の検出に応答して、競合検出回路によってトリガされ得る。アボート・イベントのその他の要因には、トランザクションの処理中に発生する中断若しくは例外、トランザクションのさらなる投機的実行結果を収容するめの、トランザクショナル・メモリ・サポート回路内のストレージ容量の不足、又は、トランザクション内でアクセスを許可されていない特定の命令との遭遇が含まれ得る。トランザクショナル・メモリ・サポート回路はまた、トランザクション内の命令によってアクセスされるアドレスをトラッキングするためのアドレス・トラッキング回路を含むことができ、競合検出回路はトラッキングされたアドレスを使用して他のスレッドとの競合を識別することができる。
対応するコンピュータ・プログラムが、命令を実行するための命令実行環境を提供するよう、ホスト・データ処理装置を制御することができ、処理プログラム・ロジックが、上述したような例外マスク更新命令に続く命令のアボートされていない処理を有効化する。このようなコンピュータ・プログラムにより、それ自体がトランザクショナル・メモリ・サポート回路を持たない一般的なホスト・データ処理装置が、そのような特性を提供する実際のハードウェアが無いにも関わらず、トランザクショナル・メモリの機能性及び、ネスト深さの改善されたテスティングの恩恵を受けることが可能となり得る。むしろ、コンピュータ・プログラムは、この機能性をエミュレートし、一般的なホスト・データ処理装置が、そのようなハードウェア特性を提供する装置上での実行を意図したコードを実行できるようにする、命令のセット又はデータ構造などのプログラム・ロジックを提供する。
図1は、ハードウェア・トランザクショナル・メモリ(HTM)をサポートするデータ処理装置2の実例を示す。本装置は、データ処理動作を実施するための命令を実行するための処理ロジック4を有する。例えば、処理ロジック4は、加算、乗算、AND、ORなどの算術若しくは論理演算を実施するための算術論理演算ユニット(ALU:Arithmetic/Logic Unit)、浮動小数点オペランドに対する動作を実施するための浮動小数点ユニット、又は、複数のデータ要素を含むベクトル・オペランドに対するベクトル処理を実施するためのベクトル処理ユニットなどの、様々な種別の処理動作を実行するための実行ユニットを含むことができる。アーキテクチャ・レジスタ6のセットは、処理ロジック4によって実行される命令のオペランドを格納し、実行された命令の結果を格納するために提供される。命令デコーダ8は、命令キャッシュ10からフェッチされた命令をデコードし、関連する動作を実施するよう処理ロジック4又はデータ処理装置2のその他の要素を制御するための制御信号を生成する。ロード/ストア・ユニット12もまた、(命令デコーダ8によってデコードされたロード命令に応答して)データ・キャッシュ14又は主メモリ16からアーキテクチャ・レジスタ6にデータ値をロードするためのロード動作と、(命令デコーダ8によってデコードされたストア命令に応答して)アーキテクチャ・レジスタ6からデータ・キャッシュ14又はメモリ16にデータ値を格納するためのストア動作とを実施するために提供される。
装置2はまた、ハードウェア・トランザクショナル・メモリ(HTM)をサポートするための様々なリソースを提供するトランザクショナル・メモリ・サポート回路20を有する。トランザクショナル・メモリ・サポート回路20内のHTMリソースは、例えば、トランザクションの投機的実行結果を格納するための投機的実行結果ストレージ22、トランザクションによってアクセスされるアドレスをトラッキングするためのアドレス・トラッキング回路24、競合が検出された際にトランザクションをアボートすることができるよう、トランザクションによって実施されるデータ・アクセスと、他のスレッドによって実施されるデータ・アクセスとの競合を検出するための競合検出回路26、及び、トランザクションがアボートされた際にトランザクションの投機的実行結果を上書きするために、アーキテクチャの状態を復元することができるよう、トランザクション開始時にアーキテクチャ・レジスタ6からアーキテクチャ状態データのスナップショットを格納するための回復状態ストレージ回路28を含むことができる。
装置2はまた、現在の処理を停止し、他の何らかの動作に切り替えるよう処理ロジック4に要求するイベントを表す、例外32の処理を制御する例外処理回路30を有する。メモリ16に格納された例外ハンドラ・コードは、特定の種別の例外に応答して実施されるべき動作を定義することができ、また、例外処理回路30は、異なる種別の例外について対応する例外ハンドラのアドレスを示す例外ベクトル・テーブルを保持することができる。アーキテクチャ状態6は、例外処理回路30が起こり得る例外32のサブセットに対して対処するべきかを判定するための例外マスク情報を提供するための、例外マスク・レジスタ34及び例外優先マスク・レジスタ36を含むことができる。
図2は、トランザクショナル・メモリ・サポート回路20及び処理ロジック4を用いた、所与のスレッド内におけるトランザクションの実行例を示す。トランザクションは、トランザクション開始命令(tstart)及びトランザクション終了命令(tcommit)によって挟まれた、プログラム・コードのセクションである。図2に示すように、トランザクション開始命令に応答して、アーキテクチャ・レジスタ6内の現在のアーキテクチャ状態が取得され、回復状態ストレージ回路28に格納される。処理ロジック4が、tstart命令に続く後続の命令の投機的実行の実施を開始し、これらの命令が実行されるのに伴い、これらの命令によってアクセスされるアドレスが、アドレス・トラッキング回路24によってトラッキングされ、また、競合検出回路26が、トラッキングされたアドレスと、他のスレッドに応答してロード/ストア・ユニット12を用いてアクセスされたアドレスとの競合を検出する。トランザクション内の命令の少なくともいくつかの投機的実行結果は、投機的実行結果ストレージ回路22内に格納される。例えば、ストア命令STRに応答してキャッシュ又はメモリに格納された値は、トランザクションが保留されている間、投機的実行結果ストレージ22に保持されることができる。その間にアボート・イベントが発生することなく、トランザクション終了命令(tcommit)に到達すれば、トランザクション終了命令に応答して、投機的実行結果がコミットされる。トランザクションのコミットに際し、当該スレッドについての、投機的実行結果ストレージ22に格納されたいずれの結果も、データ・キャッシュ14又はメモリ16に書き込まれることができ、もはやアーキテクチャ状態をトランザクション開始命令に遭遇する以前の時点に巻き戻す必要がないため、回復状態28は破棄されるか、又は上書きを許可される。
一方、アボート・イベントが発生する場合、例えば、トランザクションによって既にアクセスされているアドレスに別のスレッドがアクセスする時に競合検出回路26によって競合が検出された場合、トランザクションのアボートがトリガされ、回復状態が、回復状態ストレージ28からアーキテクチャ・レジスタ6に復元される。アボート・イベントの他の要因には、例えば、トランザクション内で実行不可の命令の実行、所与のトランザクションによって要求される、投機的実行結果若しくはアドレスを処理するための、投機的実行結果ストレージ22若しくはアドレス・トラッキング回路24内のリソース不足、又は、トランザクション中に受信した中断がある。
図3は、例外マスク・レジスタ34及び例外優先マスク・レジスタ36のコンテンツ例を示す。例外マスク・レジスタは、一連のフラグ38を含み、そのそれぞれが例外32の特定の種別に対応し、且つ、例外が有効であるか、又は無効であるかを指定する。図3に示すマッピングにおいて、フラグ値1は、例外が有効である(マスクされない)ことを示し、フラグ値0は、例外種別が無効である(マスクされる)ことを示すが、その逆のマッピングもまた使用され得ることは理解されるであろう。例外種別が無効である場合、その例外が発生したとしても、処理ロジック4は中断されないことになる。しかし、無効な例外についての例外信号のアサーションは保留状態を維持し、例外が保留されている間に、例外がマスク解除される(有効化される)と、例外はプロセッサ4に伝達され得る。
同様に、例外優先マスク・レジスタ36は、閾値の優先度を定義することができる。閾値より低いか、又はそれに等しい優先度を有する例外は、無効である(マスクされる)と考えることができ、閾値より高い優先度の例外は有効である(マスク解除される)と考えることができる。レジスタ34、36内のマスク情報は、処理される例外を処理ロジック4に伝達するかを判定するためだけに使用される情報ではないことは理解されるであろう。例えば、優先度は、複数の有効な例外が発生した場合に、優先度がより低い例外より先に優先度がより高い例外が伝達されるように、使用されることもできる。同様に、例外の処理ロジック4への伝達は、現在実行されているコードの優先度と、以後の例外に関する優先度との比較に依存してもよい。
図4は、トランザクション中の例外マスク・レジスタ34、36への変更を処理するための典型的なアプローチを、比較のために示す。例外マスク更新命令は例外マスク・レジスタ34又は例外優先マスク・レジスタ36内の値を変更することができる。典型的に、このような命令は、例外マスク・レジスタ34、36への更新を含むトランザクションが完了することができないよう、トランザクションのアボートを引き起こすことができる。これは、例外マスク更新命令が例外のサブセットを有効化するか、又は無効化するかに関わらず、実施されることができるが、図5に示すように、さらに重大な問題は、例外マスク更新命令の結果、トランザクション開始時に無効化された、さらなる命令のサブセットが有効化される場合に発生する。
図5は、例外マスク更新をトランザクション中に実施することができ、トランザクションが例外マスク更新の先に進むことができる場合に発生し得る、ライブロック問題を示す。図5は、トランザクション開始命令、tstartが特定の例外Aのサブセットが無効化される時点において実行される場合の例を示す。例外Aのサブセットは、対応する例外マスク・フラグ38が無効化される特定の種別の例外であるか、又は、レジスタ36内の現在の優先閾値より低いか、若しくはそれに等しい優先度を有する例外のサブセットであってよい。次に、トランザクションの命令の投機処理が始まり、例外マスク・レジスタ34、36のうち1つ又は両方の更新をトリガする例外マスク更新命令50に到達し、ここで例外Aのサブセットが有効化される。続いて、サブセットA内の例外が発生し、これによってトランザクションがアボートされる。この時点で、回復ストレージ28に格納された回復状態は、アーキテクチャ・レジスタ6に復元され、レジスタ34及び36に関連する例外マスク情報も復元される。トランザクション開始命令の時点で例外Aのサブセットは無効であったため、この時点で、状態の復元により例外Aが再び無効化される。通常、例外はトランザクションがアボートした後に適用されるが、状態の復元により例外Aのサブセットが無効化されるため、例外はマスクされ、故に、適用されない。それでもなお、対応する例外信号32は保留状態を維持する。
このトランザクションを含むソフトウェアは、続いて、トランザクションのスケジュール変更を試み、図5の右側に示すように、トランザクション開始命令から再び開始する。再び、回復状態が取得され、トランザクションの処理が始まるが、例外Aは保留状態を維持する。従って、例外マスク更新命令に再び到達すると、例外Aは有効化、且つ、マスク解除され、又、例外が依然として保留されているため、トランザクションは再びアボートすることになる。これにより、再びこの回復状態の復元がトリガされ、アボート時に保留されている状態と回復状態ストレージ28が示す状態との相違に起因して、例外Aの無効化がトリガされる。従って、これは、トランザクションを最初に実行しようと試みた際に発生したものと同じ条件である。ソフトウェアは、再びトランザクションの繰り返しを試みることがあり、これによって、ソフトウェアがトランザクションを繰り返し実行しようとし続けるライブロック・ループとなる可能性があり、例外Aのサブセットが有効化された時点において、当該サブセットの保留されている例外があり、これが即座にトランザクションをアボートするために、トランザクションは失敗し続ける。このライブロック・ループは、例外がデアサートされるか、又は、ソフトウェアが、トランザクションの実行を十分に試みたと判定し、非トランザクショナル・モードでの実行に切り替えるまで、継続し得る。このようなライブロック・ループは、性能に悪影響を及ぼすため、典型的に、このことを理由に、例外マスク更新命令がいずれもトランザクションをアボートする、図4のアプローチが取られている。
これに対して、図6は異なるアプローチを示す。本実例では、例外マスク更新命令50をトランザクション中に実行することができ、例外マスク更新命令50に続くトランザクションの命令のアボートされていない実行が許可される。競合検出回路26による競合の検出、投機的実行結果ストレージ22若しくはアドレス・トラッキング回路24内のリソース不足、又は、例外の発生などの他の理由から、例外マスク更新命令の後にトランザクションをアボートすることはあるが、アボートを要するイベントが他に発生しなければ、例外の少なくとも1つのサブセットについてマスク情報を無効状態から有効状態に切り替える例外マスク更新命令50が含まれていたとしても、トランザクションは、トランザクション終了命令tcommitに到達することができる。このことによって、従来はトランザクショナル・モードを使用することができなかった、さらなるコード・シーケンスが、これを使用可能となり、ロック・ベースのコードなどの、より悲観的なモデルよりも、むしろトランザクショナル・モードを使用することによって、性能確保の機会が増大する。
現在は有効であってトランザクション開始時には無効化されていた例外によってトランザクションをアボートする際のライブロック状態のリスクを軽減するため、トランザクション・アボート状態レジスタ52内のアボート状態値は、アボートの要因を示す所定の値に設定される。図6は、2つの別のアプローチをアボート状態情報で示す。1つの実例では、アボート状態レジスタ52は、トランザクション開始時に予め無効化された例外によってアボートがトリガされた際に、第1の値(例えば、バイナリ1)に設定されるフラグ54を有することができる。別のアプローチでは、アボート状態レジスタ52は、現在は有効であってトランザクション開始時に予め無効化された例外によってアボートがトリガされたことを示す、いくつかの特定のビット・パタン[x y z]を有することができる状態コードを(異なるビット・パタンを用いた他の全てのアボート要因の状態コードと共に)格納することができる。アボート状態情報を表す方法に関わらず、これは、ソフトウェアがアボート要因を判定することを可能とするためのアーキテクチャ上のサポートを提供する。ソフトウェアは、アボート状態情報52を読み取り、例外の有効化がアボートを引き起こしたことがアボートの要因であり、トランザクションが繰り返されれば、これが再び発生し得ることを判定することができる。従って、ソフトウェアは、トランザクションを再試行せず、例えば、代わりにロック・ベースの実行を使用することを判定することができる。故に、このことによって、ライブロックが起こる機会が減少し、一方で、例外マスク更新を含むコードにトランザクショナル・モードを使用する機会が増大する。
図7は、トランザクショナル・モードでの命令の処理を示すフロー図である。ステップ100において、命令デコーダ8がトランザクション開始命令に遭遇する。命令デコーダ8は、制御信号を生成し、これがステップ102において、レジスタ6から現在のアーキテクチャ状態(レジスタ34、36内の例外マスク情報を含む)を取得するよう、処理ロジック4を制御し、取得した状態を回復状態ストレージ28内に格納する。実装によっては、この回復状態の取得は、保留中のトランザクションが他に無い段階で実行される、最初のトランザクション開始命令についてのみ実施され得る。トランザクションのネスティングが発生する場合、前のトランザクションの終了に到達する前に第2のトランザクション開始命令に遭遇すると、複雑さを軽減するため、これらのさらにネスティングされたトランザクションに対する回復状態の取得が抑制される。
ステップ104において、トランザクション開始命令に続く命令の投機的実行を開始する。アドレス・トラッキング回路24が、トランザクションの命令によってアクセスされるアドレスの記録を開始し、競合検出回路26がこれらのアドレスと、他のスレッドによってアクセスされるアドレスとの競合をチェックする。
ステップ106において、命令デコーダ8が、トランザクション開始時に無効化された例外のサブセットを有効化する例外マスク更新命令に遭遇したかをチェックし、遭遇していれば、ステップ108において、レジスタ34、36のうち1つ又は両方の例外マスク情報を更新するよう処理ロジック4が制御され、続いてトランザクションのアボートされていない投機的実行を継続する。従って、例外マスク更新は、トランザクションのアボートをトリガしない。例外マスク更新に遭遇しなければ、ステップ110において、何らかのアボート・イベントが発生していないかをチェックする。アボート・イベントには、例えば、有効な例外(例外マスク・レジスタ34若しくは例外優先マスク・レジスタ36によって現在マスクされていない)の発生、競合検出回路26によって検出された競合、トランザクション内で実行不可の命令の実行、又は、HTMトラッキング構造22、24のうち1つの、現在のトランザクションについての情報をさらに格納するための容量の不足がある。
アボート・イベントが発生する場合、ステップ112において、トランザクションがアボートされ、回復状態が回復状態ストレージ28からアーキテクチャ・レジスタ36に復元される。ステップ114において、処理ロジック4又は例外処理回路30が、アボート・イベントがトランザクションの開始時に無効化された、有効な例外に起因するかを判定する。これは、新たに復元された例外マスク・レジスタ34及び例外優先マスク・レジスタ36を、アボートを引き起こした例外の属性と比較することによって判定される。アボート・イベントがトランザクションの開始時に無効化された、有効な例外に起因するならば、ステップ116において、アボート状態レジスタ52が所定の値に設定される。そうでない場合、アボート状態レジスタ52は、アボートの要因を表す別の値に設定される。これが、ソフトウェアに要因に関する通知を行い、ソフトウェアは、アボート状態情報に応じて、トランザクション実行の再試行の繰り返しへ、又は、代わりのロック・ベースのコードへ、条件分岐させることができる。従って、トランザクション中にマスク解除された、有効な例外によってトリガされるアボートを識別する特定の状態値を含むアボート状態情報によって、アボートされたトランザクションに対応する動作の再スケジュールの方法について、より良い判定を下すことが可能となる。
ステップ110においてアボート・イベントが発生しなければ、トランザクション処理は続行する。ステップ120において、命令デコーダ8が、トランザクション終了命令(tcommit)に遭遇したかを判定し、遭遇していれば、制御信号が生成され、ステップ122において、トランザクションのいずれの投機的実行結果もコミットし、トランザクションに関する回復状態ストレージ28内の回復状態の破棄又は上書きを許可するよう処理ロジック4をトリガする。投機的実行結果のコミットには、例えば、投機的実行結果ストレージ22からのストア命令の結果をデータ・キャッシュ14又はメモリ16に書き込むことが含まれる。場合によっては、投機的実行結果のコミットは、全てのトランザクション終了命令について実施されるとは限らない。例えば、ネスティングされたトランザクションでは、ネスティングされたセットの外側のトランザクションの最終的なトランザクション終了命令のみが、投機的実行結果のコミットをトリガすることができ、内側のトランザクションのトランザクション終了命令はいずれも無視される。また、場合によっては、トランザクション終了命令に到達する際、投機的実行結果が実際にコミットされるかどうかをチェックする他の基準があってもよい。
ステップ120において、トランザクション終了命令が未だ到達していなければ、本方法は、ステップ106に戻り、ステップ106、110、及び120でチェックされたイベントのうち少なくとも1つが発生するまで周回する。
図8は、使用され得るシミュレータ実装を示す。前述した実施例が、本発明を、関係技術をサポートする特定の処理ハードウェアを動作させる装置及び方法に関して実施する一方、コンピュータ・プログラムの使用を通じて実装される、本明細書に記載する実施例に従う命令実行環境を提供することもまた可能である。ハードウェア・アーキテクチャのソフトウェア・ベースでの実装を提供する限りにおいて、このようなコンピュータ・プログラムはしばしば、シミュレータと称される。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。典型的には、シミュレータ実装はホスト・プロセッサ230上で稼働し、任意に、シミュレータ・プログラム210をサポートするホスト・オペレーティング・システム220を実行する。いくつかの構成では、ハードウェアと提供された命令実行環境との間にシミュレーションの複数のレイヤを含み、且つ/又は、同一ホスト・プロセッサ上に提供される複数の個別の命令実行環境を含むことができる。従来、リーズナブルな速度で実行するシミュレータ実装を提供するために強力なプロセッサが必要とされてきたが、このようなアプローチは、互換性又は再使用の理由で別のプロセッサにネイティブなコードを実行する要求がある場合などの特定の状況で正当化される。例えば、シミュレータ実装は、ホスト・プロセッサ・ハードウェアによってサポートされていない、追加的な機能性を有する命令実行環境を提供するか、又は、典型的には異なるハードウェア・アーキテクチャに関する命令実行環境を提供することができる。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁に記載されている。
特定のハードウェア構成又は特性に関して上述された実施例の範囲において、シミュレートされた実施例では、適切なソフトウェア構成又は特性によって同等の機能性が提供され得る。例えば、シミュレートされた実施例において、特定の回路がコンピュータ・プログラム・ロジックとして実装され得る。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレートされた実施例においてはソフトウェア・データ構造として実装され得る。上述した実施例で参照したハードウェア要素のうち1つ又は複数がホスト・ハードウェア(例えば、ホスト・プロセッサ230)上にある構成において、いくつかのシミュレートされた実施例は、適切な場合に、このホスト・ハードウェアを利用することができる。
シミュレータ・プログラム210は、コンピュータ可読記憶媒体(非一時的な媒体であってよい)上に格納されることができ、ターゲット・コード200(アプリケーション、オペレーティング・システム及びハイパーバイザを含んでよい)に、シミュレータ・プログラム210によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インタフェースと同じプログラム・インタフェース(命令実行環境)を提供する。そのため、ターゲット・コード200のプログラム命令は、シミュレータ・プログラム210を用いて命令実行環境内から実行され、前述の装置2のハードウェア特性を実際には持たないホスト・コンピュータ230がこれらの特性をエミュレートできるよう、トランザクション内の例外マスク更新命令を前述した方法で処理する。
本願において、用語「~ように構成された」は、装置の構成要素が所定の動作を実施することができる構成を有することを意味する。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味する。例えば、装置は、所定の動作を提供する専用ハードウェアを有するか、又は、プロセッサ若しくは他の処理デバイスがその機能を実施するようプログラムされることができる。「~よう構成される」は、装置の構成要素が、所定の動作を提供するために何らかの方法で変更される必要があることを含意するものではない。
本発明の例示的な実施例を、添付図面を参照して本明細書に詳述したが、本発明がこれらの詳細な実施例に制限されるものではなく、添付された特許請求の範囲によって定められた本発明の範囲及び思想から逸脱することなく、当業者によって様々な変更及び改善が成され得ることは理解されたい。

Claims (15)

  1. 命令に応答してデータ処理を実施する処理回路であって、前記処理回路が、前記処理回路によるデータ処理のスレッド内でのトランザクションの実行をサポートするための、トランザクショナル・メモリ・サポート回路を含み、前記トランザクションが、トランザクション開始命令とトランザクション終了命令との間で投機的に実行される前記スレッドの命令を含み、それについて、前記処理回路が、前記トランザクション終了命令に到達するまで、前記投機的に実行される命令の結果のコミットを回避し、且つ、前記トランザクション終了命令に到達する前にアボート・イベントが発生すると、前記トランザクションの処理をアボートするよう構成される、処理回路と、
    例外の1つ又は複数のサブセットが有効であるか、又は無効であるかを指定する例外マスク情報に応じて、例外をマスクするかどうかを判定するための例外処理回路とを含み、
    前記例外マスク情報を更新して、前記トランザクションの処理の開始時に無効化された例外の少なくとも1つのサブセットを有効化するための、トランザクション内で実行される例外マスク更新命令に応答して、前記処理回路が、前記例外マスク更新命令に続く前記トランザクションの1つ又は複数の後続の命令のアボートされてない処理を許可するよう構成される、装置。
  2. 前記トランザクショナル・メモリ・サポート回路が、前記トランザクション開始命令に応答して取得された、トランザクション回復状態データを格納するための回復状態ストレージ回路を含む、請求項1に記載の装置。
  3. 前記処理回路が、前記アボート・イベントに応答して、前記トランザクション回復状態データを復元するよう構成される、請求項2に記載の装置。
  4. 前記トランザクション回復状態データが、前記例外マスク情報を含む、請求項2又は3に記載の装置。
  5. 前記処理回路が、トランザクションの処理中の有効な例外の発生に応答して、前記アボート・イベントをトリガするよう構成される、請求項1から4までのいずれかに記載の装置。
  6. 前記トランザクション回復状態データが前記例外マスク情報を含み、
    トランザクションの処理中の有効な例外の発生に応答して、前記処理回路が、前記アボート・イベントをトリガし、前記トランザクション回復状態データが復元されるまで、例外の提供を保留するよう構成される、請求項3に記載の装置。
  7. トランザクションの処理中の有効な例外の発生に応答して、前記有効な例外が前記トランザクションの処理の開始時に無効化されていた場合に、前記処理回路がアボート状態情報を所定の値に設定するよう構成される、請求項5又は6に記載の装置。
  8. トランザクションのアボート・イベントが発生したことに応答して、前記アボート・イベントが、有効な例外の発生以外のイベントによってトリガされるか、又は、トランザクションの処理の開始時に有効化されていた有効な例外の発生によってトリガされる場合に、前記処理回路が、前記アボート状態情報を前記所定の値以外の値に設定するよう構成される、請求項7に記載の装置。
  9. 前記例外マスク情報が、例外の複数の種別に対して別々に、例外の各種別が有効であるか、又は無効であるかを指定する、請求項1から8までのいずれかに記載の装置。
  10. 前記例外マスク情報が、例外優先閾値を指定し、前記例外処理回路が、例外の優先度と前記例外優先閾値との比較に応じて、前記例外をマスクするかどうかを判定するよう構成される、請求項1から9までのいずれかに記載の装置。
  11. 前記トランザクショナル・メモリ・サポート回路が、
    前記投機的に実行された命令の前記結果を格納するための投機的実行結果ストレージ回路、及び、
    トランザクション内の命令によってアクセスされるアドレスをトラッキングするためのアドレス・トラッキング回路のうちの、
    少なくとも1つを含む、請求項1から10までのいずれかに記載の装置。
  12. 前記トランザクショナル・メモリ・サポート回路が、第1のスレッドのトランザクション内で実行される所与のアドレスへのデータ・アクセスと、別のスレッドによって実行される同一アドレスへのデータ・アクセスとの競合を検出するための競合検出回路を含む、請求項1から11までのいずれかに記載の装置。
  13. 前記競合検出回路が、前記競合の検出に応答して、前記アボート・イベントをトリガするよう構成される、請求項12に記載の装置。
  14. 命令に応答して、処理回路を用いてデータ処理を実施するステップであって、前記処理回路が、前記処理回路によるデータ処理のスレッド内でのトランザクションの実行をサポートするためのトランザクショナル・メモリ・サポート回路を含み、前記トランザクションが、トランザクション開始命令とトランザクション終了命令との間で投機的に実行される前記スレッドの命令を含み、それについて、前記処理回路が、前記トランザクション終了命令に到達するまで、前記投機的に実行される命令の結果のコミットを回避し、且つ、前記トランザクション終了命令に到達する前にアボート・イベントが発生すると、前記トランザクションの処理をアボートするよう構成される、ステップと、
    例外に応答して、例外の1つ又は複数のサブセットが有効であるか、又は無効であるかを指定する例外マスク情報に応じて、前記例外をマスクするかどうかを判定するステップと、
    前記例外マスク情報を更新して、前記トランザクションの処理の開始時に無効化された例外の少なくとも1つのサブセットを有効化するための、トランザクション内で実行される例外マスク更新命令に応答して、前記例外マスク情報を更新し、前記例外マスク更新命令に続く前記トランザクションの1つ又は複数の後続の命令のアボートされていない処理を許可する、ステップとを含む、データ処理方法。
  15. ホスト・データ処理装置を制御して、命令を実行するための命令実行環境を提供するためのコンピュータ・プログラムであって、
    データ処理のスレッド内でのトランザクションの実行をサポートする処理プログラム・ロジックであって、前記トランザクションが、トンランザクション開始命令とトランザクション終了命令との間で投機的に実行されるスレッドの命令を含み、それについて、前記処理プログラム・ロジックが、前記トランザクション終了命令に到達するまで、前記投機的に実行される命令の結果のコミットを回避し、且つ、前記トランザクション終了命令に到達する前にアボート・イベントが発生すると、前記トランザクションの処理をアボートするよう構成される、処理プログラム・ロジックと、
    例外の1つ又は複数のサブセットが有効であるか、又は無効化であるかを指定する例外マスク情報に応じて、例外をマスクするかどうかを判定するための例外処理プログラム・ロジックとを含み、
    前記例外マスク情報を更新して、前記トランザクションの処理の開始時に無効化された例外の少なくとも1つのサブセットを有効化するための、トランザクション内で実行される例外マスク更新命令に応答して、前記処理プログラム・ロジックが、前記例外マスク情報を更新し、前記例外マスク更新命令に続く前記トランザクションの1つ又は複数の後続の命令のアボートされていない処理を許可するよう構成される、コンピュータ・プログラム。
JP2020516676A 2017-09-29 2018-08-21 例外マスク更新命令後のトランザクションの非アボート処理の許可 Active JP7136888B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17386031.3A EP3462312B1 (en) 2017-09-29 2017-09-29 Permitting unaborted processing of transaction after exception mask update instruction
EP17386031.3 2017-09-29
PCT/EP2018/072495 WO2019063200A1 (en) 2017-09-29 2018-08-21 NON-INTERRUPTED TRANSACTION PROCESSING AUTHORIZATION AFTER EXCEPTION MASK UPDATE INSTRUCTION

Publications (2)

Publication Number Publication Date
JP2020535512A JP2020535512A (ja) 2020-12-03
JP7136888B2 true JP7136888B2 (ja) 2022-09-13

Family

ID=60143663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020516676A Active JP7136888B2 (ja) 2017-09-29 2018-08-21 例外マスク更新命令後のトランザクションの非アボート処理の許可

Country Status (8)

Country Link
US (1) US11663034B2 (ja)
EP (1) EP3462312B1 (ja)
JP (1) JP7136888B2 (ja)
KR (1) KR102599689B1 (ja)
CN (1) CN111133418B (ja)
IL (1) IL273129B2 (ja)
TW (1) TWI786181B (ja)
WO (1) WO2019063200A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194584B1 (en) * 2019-07-19 2021-12-07 Marvell Asia Pte, Ltd. Managing out-of-order retirement of instructions
CN117279529A (zh) 2021-05-10 2023-12-22 日本烟草产业株式会社 气溶胶产生装置的电源单元
JPWO2022239515A1 (ja) 2021-05-10 2022-11-17
EP4338628A1 (en) 2021-05-10 2024-03-20 Japan Tobacco, Inc. Power supply unit for aerosol generation device
JPWO2022239378A1 (ja) 2021-05-10 2022-11-17

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015523651A (ja) 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピューティング環境においてマシン命令を実行するための方法、システム、およびプログラム(トランザクション開始/終了命令)
US20150242218A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments
US20150378543A1 (en) 2013-03-07 2015-12-31 Mitsubishi Electric Corporation Engineering tool
US20160132337A1 (en) 2012-02-02 2016-05-12 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
US20170177338A1 (en) 2015-12-18 2017-06-22 International Business Machines Corporation Management of asynchronous interrupts in a transactional memory multiprocessor environment

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1105069A (en) * 1976-04-15 1981-07-14 John W. Daughton Control system for electrostatographic machines
JPS63238630A (ja) * 1987-03-26 1988-10-04 Toshiba Corp マイクロプロセツサの割込み制御装置
US6024486A (en) * 1996-06-05 2000-02-15 Compaq Computer Corporation Data error detection and correction
US6173248B1 (en) * 1998-02-09 2001-01-09 Hewlett-Packard Company Method and apparatus for handling masked exceptions in an instruction interpreter
FR2775370B1 (fr) * 1998-02-20 2001-10-19 Sgs Thomson Microelectronics Procede de gestion d'interruptions dans un microprocesseur
JP3600095B2 (ja) * 1999-12-07 2004-12-08 松下電器産業株式会社 割り込み管理装置及び割り込み管理方法
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
JP4971676B2 (ja) * 2006-04-28 2012-07-11 ルネサスエレクトロニクス株式会社 割り込み制御回路及び割り込み制御方法
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US8914620B2 (en) * 2008-12-29 2014-12-16 Oracle America, Inc. Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
JP5214537B2 (ja) * 2009-05-25 2013-06-19 株式会社東芝 マルチプロセッサシステム
US8225139B2 (en) * 2009-06-29 2012-07-17 Oracle America, Inc. Facilitating transactional execution through feedback about misspeculation
US9477515B2 (en) * 2009-12-15 2016-10-25 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US20120227045A1 (en) * 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8438568B2 (en) * 2010-02-24 2013-05-07 International Business Machines Corporation Speculative thread execution with hardware transactional memory
US9256369B2 (en) * 2012-04-18 2016-02-09 Samsung Electronics Co., Ltd. Programmable memory controller
US9740549B2 (en) * 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9442737B2 (en) * 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
GB2499277B (en) 2012-08-30 2014-04-02 Imagination Tech Ltd Global register protection in a multi-threaded processor
US9081607B2 (en) * 2012-10-24 2015-07-14 International Business Machines Corporation Conditional transaction abort and precise abort handling
US9824039B2 (en) * 2013-09-09 2017-11-21 International Business Machines Corporation Signal interrupts in a transactional memory system
US9146774B2 (en) * 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
US9348522B2 (en) * 2013-12-12 2016-05-24 International Business Machines Corporation Software indications and hints for coalescing memory transactions
US9207967B2 (en) * 2014-01-07 2015-12-08 Red Hat, Inc. Using nonspeculative operations for lock elision
US9817693B2 (en) 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
JP6438353B2 (ja) 2015-05-27 2018-12-12 ルネサスエレクトロニクス株式会社 半導体装置及び診断テスト方法
US9952895B2 (en) * 2015-06-27 2018-04-24 Vmware, Inc. Implementing pseudo non-masking interrupts behavior using a priority interrupt controller

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160132337A1 (en) 2012-02-02 2016-05-12 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
JP2015523651A (ja) 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピューティング環境においてマシン命令を実行するための方法、システム、およびプログラム(トランザクション開始/終了命令)
US20150378543A1 (en) 2013-03-07 2015-12-31 Mitsubishi Electric Corporation Engineering tool
US20150242218A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments
US20170177338A1 (en) 2015-12-18 2017-06-22 International Business Machines Corporation Management of asynchronous interrupts in a transactional memory multiprocessor environment

Also Published As

Publication number Publication date
TW201915761A (zh) 2019-04-16
WO2019063200A1 (en) 2019-04-04
US11663034B2 (en) 2023-05-30
IL273129B2 (en) 2024-04-01
CN111133418A (zh) 2020-05-08
IL273129A (en) 2020-04-30
US20200278882A1 (en) 2020-09-03
CN111133418B (zh) 2023-12-22
EP3462312B1 (en) 2022-08-17
JP2020535512A (ja) 2020-12-03
TWI786181B (zh) 2022-12-11
IL273129B1 (en) 2023-12-01
KR102599689B1 (ko) 2023-11-08
KR20200061361A (ko) 2020-06-02
EP3462312A1 (en) 2019-04-03

Similar Documents

Publication Publication Date Title
JP7136888B2 (ja) 例外マスク更新命令後のトランザクションの非アボート処理の許可
US20030167292A1 (en) Method and apparatus for performing critical tasks using speculative operations
TWI812750B (zh) 交易式比較及丟棄指令
US10853223B2 (en) Simulation of transactions
US11347539B2 (en) Checking lock variables for transactions in a system with transactional memory support
EP3462308B1 (en) Transaction nesting depth testing instruction
US20230315510A1 (en) A technique for handling transactions in a system employing transactional memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220713

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220901

R150 Certificate of patent or registration of utility model

Ref document number: 7136888

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150