JP2018511119A - トランザクション実行に応じて追跡データを生成する装置及び方法 - Google Patents

トランザクション実行に応じて追跡データを生成する装置及び方法 Download PDF

Info

Publication number
JP2018511119A
JP2018511119A JP2017545261A JP2017545261A JP2018511119A JP 2018511119 A JP2018511119 A JP 2018511119A JP 2017545261 A JP2017545261 A JP 2017545261A JP 2017545261 A JP2017545261 A JP 2017545261A JP 2018511119 A JP2018511119 A JP 2018511119A
Authority
JP
Japan
Prior art keywords
transaction
tracking
resource
item
control signal
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.)
Granted
Application number
JP2017545261A
Other languages
English (en)
Other versions
JP6708657B2 (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 JP2018511119A publication Critical patent/JP2018511119A/ja
Application granted granted Critical
Publication of JP6708657B2 publication Critical patent/JP6708657B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or 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/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/466Transaction processing
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

状態データに対する更新を生成するために実行される複数のプログラム命令を含むトランザクションを実行し、トランザクションが競合せず完了した場合に更新をコミットし、複数のプログラム命令の実行中に追跡制御信号を生成する処理回路を備える装置を提供する。この処理回路は、複数のプログラム命令の実行中に少なくとも1つのリソースを使用する。トランザクション追跡回路が、追跡制御信号に応じて追跡アイテムを生成する。このトランザクション追跡回路は、プログラム命令の実行中に少なくとも1つのリソースの使用レベルが変化したことを示す追跡制御信号に応じて、少なくとも1つのリソースの使用レベルを示す少なくとも1つの追跡アイテムを生成する。

Description

本技術は、データ処理システムに関する。本技術は、特に、トランザクションをサポートするデータ処理システムの分野に関連する。
トランザクションをサポートするデータ処理システムとして、トランザクションの複数のプログラム命令を投機的に実行して状態データの更新を生成し、このトランザクションが競合せずに完了すれば更新をコミットするデータ処理システムが提供され得る。更新は、トランザクションが競合せずに完了した場合にのみコミットされるので、コミットされるまでの更新を、投機的更新とも呼ぶ。トランザクションの終了前の如何なる時点でも、トランザクションは競合により中断され得る、つまり終了前に完了することがあり、これによりデータ処理システムは、トランザクション開始前の状態に巻き戻される、つまり元に戻る。したがって、この「巻き戻し」は、トランザクションの一部として実行される命令と、他で実行される命令との間で競合が起こると発生する。トランザクションの間、投機的に更新された状態は、トランザクション・メモリに格納される。競合が起こらず、トランザクションが中断されなければ、トランザクションの終了時に、そのトランザクションは「コミット」され、この時点で、投機的状態(つまりトランザクションの状態)が、データ処理システムの実際の状態に置き換わる。
このようなトランザクションは、例えば、共有メモリを使用するマルチスレッド処理を容易とするために使用され得る。マルチスレッド処理では、メモリアクセスにおいて競合が発生した場合には投機的更新をコミットさせない機能に依拠して、共有メモリ内のデータ値を使用する複数のトランザクションを並列に進行させ得るものである。大抵の場合このような競合は発生しないので、並列処理はメモリロックの使用などのより強固な機構のオーバーヘッドに対応する必要なく効率的に進行し、たとえ競合が発生したとしても、状態データの投機的更新はコミットされる前なので、復旧が可能である。
第1の構成例から見れば、状態データに対する更新を生成するために実行される複数のプログラム命令を含むトランザクションを実行し、前記トランザクションが競合せず完了した場合に前記更新をコミットし、前記複数のプログラム命令の実行中に追跡制御信号を生成する処理回路であって、前記プログラム命令の実行中に少なくとも1つのリソースを使用する処理回路と、前記追跡制御信号に応じて追跡アイテムを生成するトランザクション追跡回路であって、前記プログラム命令の実行中に前記少なくとも1つのリソースの使用レベルが変化したことを示す前記追跡制御信号に応じて、前記少なくとも1つのリソースの前記使用レベルを示す少なくとも1つの追跡アイテムを生成するトランザクション追跡回路とを備える装置が提供される。
第2の構成例によると、状態データに対する更新を生成するために複数のプログラム命令を含むトランザクションを実行し、前記トランザクションが競合せず完了した場合に前記更新をコミットし、少なくとも1つのリソースを使用する前記複数のプログラム命令の実行中に追跡制御信号を生成し、前記追跡制御信号に応じて追跡アイテムを生成する方法において、前記プログラム命令の実行中に前記少なくとも1つのリソースの使用レベルが変化したことを示す前記追跡制御信号に応じて、前記少なくとも1つのリソースの前記使用レベルを示す少なくとも1つの追跡アイテムを生成する追跡アイテムの生成方法を提供する。
第3の構成例によると、状態データに対する更新を生成するために複数のプログラム命令を含むトランザクションを実行する手段と、前記トランザクションが競合せず完了した場合に前記更新をコミットする手段と、少なくとも1つのリソースが使用される前記複数のプログラム命令の実行中に追跡制御信号を生成する生成手段と、前記追跡制御信号に応じて前記追跡アイテムを生成する手段とを備える装置において、前記生成する生成手段が、前記プログラム命令の実行中に前記少なくとも1つのリソースの使用レベルが変化したことを示す前記追跡制御信号に応じて、前記少なくとも1つのリソースの前記使用レベルを示す少なくとも1つの追跡アイテムを生成する装置を提供する。
例として、以下の添付図面に示す実施形態を参照して本発明をさらに説明する。
図1は、トランザクションを含む一連のプログラム命令を概略的に示す。 図2Aは、トランザクションの実行を概略的に示すフロー図である。 図2Bは、ネスティッド・トランザクションの実行を概略的に示すフロー図である。 図3は、一実施形態に係る装置を概略的に示す図である。 図4は、トランザクション内の命令の実行がリソースの使用度に与える影響を示す図である。 図5は、一実施形態に係るトランザクション実行中の追跡アイテムの生成を概略的に示すフロー図である。 図6は、一実施形態に係るトランザクションの一部についての追跡データアイテムの生成を概略的に示すフロー図である。 図7は、一実施形態に係るネスティッド・トランザクション実行中の追跡アイテムの生成を概略的に示すフロー図である。 図8は、追跡アイテムを使ってどのように今後のトランザクションの実行に影響を与えられるかを概略的に示す図である。
添付の図面を参照して実施形態を説明する前に、実施形態とそれに関連する利点を以下に説明する。
トランザクション・メモリが組み込まれたシステムなどの、トランザクションをサポートする処理システム内では、複数のプログラム命令を実行して状態データ(例えばアーキテクチャ状態データ)に対する投機的更新を生成し、当該トランザクションが競合せず完了した場合に、この投機的更新を許可(コミット)するように動作する。例えとして、トランザクションは、記憶場所に対するロード動作または格納動作を含み、このようなロード・格納動作が、トランザクションの外部から同一の記憶場所に対してアクセスしようとして競合を起こす(または競合を起こし得る)アクセスがなく完了した場合に、これらトランザクションの結果がコミットされ、アーキテクチャシステムの状態が更新される。競合が起こると、このトランザクションは中断され、保存済みの以前の状態データを用いて、トランザクションが実行される前の時点までシステムの状態を「ロールバック」する。そしてこのトランザクションをしばらくしてから繰り返して競合せずに完了するかを確認するか、例外を発生させるか、別の方法で(例えばロック機構を用いて)実行させるか、ないしは当該システムの特定の形態に応じて処理してもよい。
トランザクションを中断させ得る競合のその他の種類としては、トランザクションを管理するリソースの使い果たし(例えば一時記憶装置やネスティッド・トランザクションの深さカウンタなど)や、Data Abort(MMU異常)などの例外や割り込みなど、トランザクションを中断させるものを含む。
ある構成の一例において、状態データに対する投機的更新を生成するために実行される複数(1以上)のプログラム命令を含むトランザクションを実行し、トランザクションが競合せず完了した場合に投機的更新をコミットし、複数のプログラム命令の実行中に追跡制御信号を生成する処理回路であって、プログラム命令の実行中に少なくとも1つのリソースを使用する処理回路と、追跡制御信号に応じて追跡アイテムを生成するトランザクション追跡回路であって、プログラム命令の実行中に少なくとも1つのリソースの使用レベルが変化したことを示す追跡制御信号に応じて、少なくとも1つのリソースの使用レベルを示す少なくとも1つの追跡アイテムを生成するトランザクション追跡回路とを備える装置が提供される。
本発明の発明者らは、トランザクションの重要イベントに関わるデータを取得することで特別な利点が得られるということに気付いた。重要イベントとは、例えば、トランザクションの実行中に使用するリソース(トランザクション・メモリなど)の使用レベルの変化であり得る。例えば、使用レベルの変化は、メモリのキャッシュラインや領域に新たなアクセスや書き込みがあると起こり得る。このような情報を得ることで、リソースの使用度をよりよく制御し、また、今後のトランザクションをより効率的に実行することが可能となる。したがって、本技術は、トランザクションの一部として実行される命令が、トランザクション状態に追加する(トランザクション・メモリの使用量が上昇する)か、トランザクション状態の一部を上書きする(トランザクション・メモリの使用量は変化しない)か、そのいずれでもない(これもトランザクション・メモリの使用量は変化しない)かを示す情報を得ることに関わり得る。そしてこのような情報は、リソースの使用レベルが変化したことを示す追跡アイテムを生成するのに使用できる。
あるトランザクションについて生成した追跡データアイテムを分析することにより、そのトランザクションのプロファイリングを行うことができる。例えば、トランザクションが実行中に使用するリソースの割合を決定することは、特に複数のプロセッサを備える異機種混在システムにおいて有用であり、システムリソースをより効率的に使用するためにどのプロセッサを使ってトランザクションを実行するかについてより適切な決断を下すことができる。
いくつかの実施形態において、処理回路は、少なくとも1つのリソースの使用レベルの変化を検出し、処理回路は、追跡制御信号において、少なくとも1つのリソースの使用レベルの変化を特定する。したがって、処理回路が生成する追跡制御信号は、少なくとも1つのリソースの使用レベルの変化を示し得る。そして追跡制御信号はトランザクション追跡回路に渡されてよく、トランザクション追跡回路は、追跡制御信号で特定される少なくとも1つのリソースの使用レベルの変化に基づいて追跡アイテムを生成する。
いくつかの実施形態において、トランザクション追跡回路が、追跡制御信号から、少なくとも1つのリソースの使用レベルの変化を判断する。このような実施形態では、トランザクション追跡回路自体が、処理回路によって生成される追跡制御信号に基づいて少なくとも1つのリソースの使用レベルを把握し得る。例えば、処理回路が、あるリソースが使用中である旨を示す追跡制御信号を生成して、トランザクション追跡回路が、この追跡制御信号から、このリソースが新たに使用されている(よって少なくとも1つのリソース全体の使用レベルを変化させる)ものかどうかを判定し得る。
いくつかの実施形態において、少なくとも1つのリソースは、複数の領域を含むストレージ構造であり、使用レベルの変化は、新たな領域がアクセスされるたびに検出される。例えば、使用レベルの変化は、ストレージ構造の新たな領域に書き込みがあると起こり得る。いくつかの実施形態において、トランザクション・メモリはキャッシュを用いて実現され、ストレージ構造はキャッシュの少なくとも一部であり、上記領域の各々は、キャッシュラインであり得る。キャッシュラインは、トランザクションを構成する命令を実行することにより投機的に変化した状態の1以上の要素を記憶し得る。
例えば、ダイレクトマップ方式のキャッシュでは、このストレージ構造はキャッシュ全体である。セット連想方式のキャッシュでは、あるデータを格納できる場所がキャッシュ内に複数ある。キャッシュは複数のウェイに分割され、複数の場所はそれぞれ、ウェイ毎に1つの場所を含む。例えば、2ウェイ連想方式キャッシュでは、あるデータを格納できる場所が2箇所ある。複数の場所は、キャッシュセットとも呼ばれる。例えば、2ウェイ連想方式キャッシュでは、各データは2つのウェイを含むキャッシュセットに格納できる。キャッシュセットの全てのウェイが埋まってしまうというのが、重要イベントの他の例であり得る。または、重要イベントは、キャッシュセットの全てのウェイが埋まってしまった後で、同じキャッシュセットへの書き込みが行われようとした場合であり得る。いずれの状況も、投機的状態を格納するスペースがないために、トランザクションの実行を継続できず、トランザクションが中断され得るという状況を表す。このようなトランザクションのプロファイリングにより、今後のトランザクションは、より連想度の高いキャッシュを有するプロセッサで実行すべきであることを判断できる。逆に、高連想度キャッシュは不要であり、より連想度の低いキャッシュを使用し得ることが判断されるかもしれない。
いくつかの実施形態において、複数の追跡アイテムは、複数の領域の1つが新たにアクセスされたことを示す少なくとも1つのリソース追跡アイテムを含む。例えば、ある領域(キャッシュラインなど)が新たにアクセスされると、この領域が新たにアクセスされたことを示す追跡アイテムが生成され得る。
いくつかの実施形態において、複数の追跡アイテムは、アクセスされた複数の領域の数を特定する少なくとも1つのリソース追跡アイテムを含む。例えば、この追跡アイテムは、トランザクション開始後にアクセスされた領域の数の累積数を提供し得る。このような情報を用いて、リソース使用度の経時的変化をすばやく判断すること、また、特定の時点での瞬間的リソース使用度を判断することが可能となる。例えば、リソース追跡アイテムは、(例えばトランザクションの中断またはコミットによる)トランザクションの終了に応じて生成され得る。少なくとも1つのリソース追跡アイテムを用いて、トランザクション実行中のリソース使用度をプロファイリングできる。
アクセスされた複数の領域の数をリソース追跡アイテムに示すことにより、追跡ストリームのサイズを低減でき、またこれにより、効率的にいくつかのリソース追跡アイテムを1つにまとめることができることから、追跡ストリームを記憶するメモリのリソース要件を下げることができる。さらに、追跡アイテムを、循環バッファに格納する場合もある。この場合、しばらくするとバッファヘッドが上書きされ得る。アクセスされた複数の領域の数を示すことにより、バッファヘッドが上書きされても、効率的なプロファイリングを行うことが可能となり得る。しかし、新たな領域がアクセスされるたびにその旨を示すことにより、リソース使用度を常時把握する必要がなくなるため、追跡アイテムを生成するのに必要なハードウェアの量を減らせる。
複数の追跡アイテムは、トランザクションのトランザクション深さを特定する少なくとも1つの追跡アイテムを含み得る。トランザクションは、別のトランザクションにネストされている場合がある。トランザクションの深さは、現在のトランザクションが開始される前にエントリされた、このトランザクション自体を含み得る親トランザクションの数として定義することができる。トランザクションの深さは、カウンタを使って追跡できる。しかし、全てのカウンタ同様、そのカウンタに格納できる最大値がある。あるトランザクションが、カウンタの最大値を超えるような深さにネストされている場合、このトランザクション(および潜在的に全てのコンテナ・トランザクション)は、中断せざるを得ないかもしれない。このように深さカウンタの変化は重要イベントであるので、トランザクションのトランザクション深さを示す情報を含む追跡アイテムを出力することは有用である。深さカウンタ自体もまた、その使用レベルの変化により追跡アイテムを生成させる少なくとも1つのリソースの一例であり得る。これにより、トランザクションの現在のネストレベルが、トランザクションを中断させるような段階に近づきつつあるという警告を与えることができる。
いくつかの実施形態において、複数の追跡アイテムは、トランザクションが開始したことを示すトランザクション開始追跡アイテムおよびトランザクションが終了したことを示すトランザクション終了追跡アイテムの少なくとも一方を含む。これにより、重要イベントを、特定のトランザクションに関するとして追跡することが可能となる。
いくつかの実施形態において、トランザクション終了追跡アイテムはリソース追跡アイテムでもある。特に、トランザクションが終了したことを示す追跡アイテムと同一の追跡アイテムが、リソースの使用レベルが変化したことを示してもよい。同様に、他の追跡アイテムも二重機能性を有してもよい。したがって、追跡アイテムに与えられた名称は、その機能の全てを表すわけではない。
いくつかの実施形態において、複数の追跡アイテムのうち少なくともいくつかの追跡アイテムは、タイムスタンプを含む。例えば、トランザクション開始追跡アイテムおよび前記トランザクション終了追跡アイテムの少なくとも一方が、それぞれトランザクションの開始および終了の命令が実行された時刻を示すタイムスタンプを含み得る。タイムスタンプを提供することにより、特定の重要イベントがいつ発生したかを判断できる。マルチプロセッサシステムでは特に、各プロセッサ間で実行されるトランザクションに関する重要イベントがどのように発生したかを判断可能となり得る。これは、トランザクションの実行中に起こる競合の性質および原因を判断するのに役立つ。
いくつかの実施形態において、複数の追跡アイテムの少なくとも1つが、トランザクションの実行に使用したプロセッサ・サイクルの数を示すサイクル数を含む。例えば、終了追跡アイテムが、トランザクションの実行に使用したプロセッサ・サイクルの数を示すサイクル数を含んでよい。このような情報を用いて、プロセッサをどの程度使用してトランザクションを実行したかを判断できる。
複数の追跡アイテムは、トランザクションが中断されたことを示すトランザクション中断追跡アイテムを含み得る。トランザクションは、競合が発生すると中断される。例えば、あるプロセッサがデータの修正を行うトランザクションを実行し、別のプロセッサが同じデータの修正を試みる別のトランザクションを実行する場合、2つの異なるプロセッサが同時に同一データを修正しようとする結果、競合が起こる。これにより、通常、トランザクションが中断される。トランザクション中断追跡アイテムが生成される場合は、このトランザクション中断追跡アイテムは、トランザクションが中断された理由を示し得る。例えば、トランザクション中断追跡アイテムは、前述のように、発生した競合について言及してもよい。トランザクションが中断される別の理由は、トランザクションの実行中に投機的状態を保持するのに使用され得るトランザクション・メモリが不足した場合である。
装置は、トランザクション追跡回路の動作に影響を与える制御パラメータを格納するための制御ストレージを備え得る。例えば、制御ストレージは、トランザクション追跡回路の動作を許可または禁止するイネーブルパラメータを記憶してもよい。
制御ストレージは、トランザクション追跡回路が動作するトランザクションの数を制御するサンプリングパラメータを記憶し得る。全てのトランザクションをサンプリングするより、トランザクション(および、必要に応じて、これらのトランザクション内にネストするトランザクション)の一部だけをサンプリングする方が望ましい場合が多い。サンプリングパラメータは、例えば、トランザクション追跡回路がサンプリングするトランザクション(および、必要に応じて、これらにネストするトランザクション)の割合を示す割合、またはトランザクション追跡回路がトランザクション(および、必要に応じて、これらにネストするトランザクション)をサンプリングする確率を示す確率のいずれかであり得る。
いくつかの実施形態において、処理回路は、さらに、トランザクション内の命令以外の命令を実行する。すなわち、処理回路は、どのトランザクションの一部でもない命令を実行し得る。
装置は、少なくともいくつかの命令において動作するプログラム追跡回路を備え得る。例えば、プログラム追跡回路は、各命令の実行結果に関するデバッグ情報を提供する追跡アイテムを提供し得る。その一方、トランザクション追跡回路は、トランザクション実行中に使用する少なくとも1つのリソースの使用レベルの変化などの、トランザクションに関わる重要イベントについての追跡アイテムを生成し得る。したがって、トランザクション内の命令について、プログラム追跡回路が生成する追跡アイテム群およびトランザクション追跡回路が生成する追跡アイテム群の、2つの追跡アイテム群が生成され得る。
処理回路は、第1のプロセッサと第2のプロセッサとを備え得る。そのような実施形態において、装置は、今後のトランザクションの実行に第1のプロセッサおよび第2のプロセッサのどちらを使用するかに影響を与える制御情報を更新する分析モジュールを備え得る。例えば、第1のプロセッサと第2のプロセッサとは、異なる能力を有し得る。そのような場合、トランザクション追跡回路が生成した追跡アイテムを用いて、トランザクションのプロファイリングを行い、今後そのトランザクションを実行するときは、第1のプロセッサと第2のプロセッサのどちらを使用するのが適切であるかを判断できる。例えば、第1のプロセッサおよび第2のプロセッサの一方がより少ないリソースを使用可能であってよい。生成された追跡アイテムに基づいて、特定のトランザクションを実行するにはリソース数がより少ないプロセッサの方が適していると判断することが可能となり得る。この場合、使用エネルギーを低減のために、よりリソース数の少ないプロセッサでトランザクションを実行する方が望ましいかもしれない。同様に、前回トランザクションを実行した時にリソースが不足した場合は特に、このトランザクションを今後実行する時にはよりリソース数が少ないプロセッサは望ましくない旨を、生成される追跡アイテムが示してよい。したがって、今後のトランザクションの中断・巻き戻しの可能性を低減するために、そのようなトランザクションを今後はよりリソース数の多いプロセッサで実行し得る。このような分析モジュールは、例えば、処理回路で実行されるソフトウェアとして提供され得る。
特定の実施形態について図面を参照して説明する。
図1は、処理回路が実行し得る一連のプログラム命令2を概略的に示す。この一連のプログラム命令は、マルチスレッド・システム内のスレッドを実行するものであり得ることが理解されよう。または、一連のプログラム命令は、実行するプログラム命令の唯一のスレッドであってもよい。図1に示す一連のプログラム命令には、トランザクション開始命令TStartおよびトランザクション終了命令TEndが含まれる。これらの命令はそれぞれ、命令IA,IB,IC,IDを含むトランザクションの境界線を示す。処理回路は、TStartとTEndとによって区切られるこれらの命令を実行して、状態データに対する投機的更新を生成する。この投機的更新は、トランザクションが競合せずに完了したと判定されるまでシステム内のメモリやその他記憶リソース(例えばシャドーレジスタやロールバック可能な専用メモリなど)に記憶され、完了が判定されると、システムにコミットされる(例えば、システムのアーキテクチャ状態を更新して、記憶しているロールバックデータを破棄することにより別のトランザクションのサポートに向けて関連の記憶リソースを確保する)。投機的更新を記憶するのに使用される記憶リソースを、トランザクション・メモリとも呼ぶ。
図2Aは、複数のプログラム命令を含むトランザクションの実行を概略的に示すフロー図である。ステップ24において、処理は、トランザクション開始命令(TStart)の実行を待つ。そしてステップ26において、例えば状態データに対する投機的更新をトランザクション完了まで記憶するためのリソースといった、使用するトランザクション・リソースを割り当てる。ステップ28において、トランザクション内の1つ目の命令を選択する。ステップ30において、その時点で競合が検出されたか否かを判定する。競合が検出されている場合、ステップ32において投機的更新を破棄し、fixupルーチンにジャンプし(もしくはトランザクションが失敗した旨をソフトウェアに提示し)、ステップ26で割り当てられたトランザクション・リソースを、他のトランザクションで使用できるように返還する。
ステップ30で競合が検出されなかった場合は、ステップ34において、選択中の命令を実行する。そしてステップ36において、ステップ34の実行結果を状態データに対する投機的更新として、割り当てられたトランザクション・リソースに格納する。ステップ38において、次の命令を選択する。ステップ40において、選択中の命令がトランザクション終了命令(TEnd)であるか否かを判定する。この命令がトランザクション終了命令でない場合、ステップ30に処理を戻す。この命令がトランザクション終了命令であるとステップ40で判定した場合、ステップ42において、割り当てられたトランザクション・リソースに記憶している投機的更新をコミットして、システムのアーキテクチャ状態を更新する。
図2Bは、フラット・トランザクション・ネスティングをサポートするように図2Aのトランザクション実行を変形させたものを概略的に示すフロー図である。ステップ26において、トランザクション・リソースを割り当てると、トランザクション・ネスト深さカウンタを「1」に設定する。ステップ38で次の命令が選択されると、ステップ35において、選択中の命令がトランザクション開始命令か否かを判定する。選択中の命令がトランザクション開始命令である場合、ステップ37において深さカウンタをインクリメントし、処理をステップ30に戻す。
選択中の命令がトランザクション開始命令でないとステップ35で判定した場合、ステップ40において、選択中の命令がトランザクション終了命令であるか否かを判定する。選択中の命令がトランザクション終了命令でない場合、処理をステップ30に戻す。選択中の命令がトランザクション終了命令である場合、ステップ39において深さカウンタをデクリメントし、ステップ41において深さカウンタの値がゼロであるか否かを判定する。深さカウンタがゼロでない場合、再び処理をステップ30に戻す。深さカウンタがゼロである場合、図3Aのように処理をステップ42に進める。
図2Bの作用は、フラットネスティッド・トランザクションの深さを追跡し、ステップ24で開始したトランザクションの終了時に、割り当てられたトランザクション・リソースに記憶された投機的更新をコミットすることである。中断とは、全てのネスティッド・トランザクションが中断されることである。その他の実施形態において、完全なトランザクション・ネスティングをサポートすることも可能である。
図3は、一実施形態に係る装置44を概略的に示す。装置44は、トランザクションを含む一連の命令2並びにトランザクションの一部を形成しない命令を実行する処理回路46を備える。
本実施形態の処理回路46は、トランザクション内の命令の実行結果としての投機的状態を記憶するトランザクション・メモリとしてキャッシュ48を使用する。また、キャッシュ48は、プログラム命令を取得するために使用でき、さらに、汎用メモリ50と組み合わせて記憶階層の一部としても使用できる。投機的状態は、トランザクションがコミットまたは中断されるまでキャッッシュ48に記憶される。トランザクションがコミットされると、キャッシュに記憶されたトランザクション状態は、メモリ50に格納されることが許され、メモリ50で他の処理回路がトランザクション状態にアクセスできるようになる。中断された場合は、トランザクション状態は破棄される。
キャッシュ48は、トランザクションの実行中に使用されるリソースの一例である。特に、トランザクションの実行中には様々なデータ値が変更されるので、そのように変更される値をキャッシュ48のキャッシュラインに記憶できる。同じ値を繰り返し変更しても、キャッシュ内のその値が替わるだけである。したがって、リソースの使用度は変わらない。しかし、追加のデータ値が替わると、キャッシュ48の使用レベル(すなわちリソース使用量)が上昇する。装置44はさらに、命令の実行中に処理回路46が使用する少なくとも1つのリソースの使用レベルの変化を示す追跡制御信号を処理回路から受信するトランザクション追跡モジュール52を備える。このようなリソースが新たに使用されると、TResource追跡アイテムが出力される。本実施形態において、上記の少なくとも1つのリソースはキャッシュ48であり、制御信号は、使用レベルが変化すると、トランザクション追跡モジュール52に直接通知する。しかし、他の実施形態においては、追跡制御信号は、キャッシュ48のある一部が使用されたことを示すものであり、トランザクション追跡モジュール52は、そのキャッシュ48の一部が新たに使用されているか否かを常に把握し、必要であればTResource追跡アイテムを作成しなくてはならない。
トランザクション追跡モジュール52は、追跡メモリ54に格納される追跡アイテムを生成する。これらの追跡アイテムを分析モジュール56で分析して、トランザクションのプロファイリングを行うことができる。この分析モジュール56は、例えば、プロファイリングの結果をメモリ50に格納してよく、このプロファイリングの結果によって処理回路46の挙動が影響される。例えば、分析モジュール56は、リソース使用度(例えば、あるトランザクションを実行するのに処理回路46がキャッシュ48をどれだけ使用するか)が十分に低いと判定した場合、今後同じトランザクションを実行するときには、小さいキャッシュを備えるプロセッサ上で実行したり、トランザクションの実行能力に影響を及ぼし得るような別の形状/構成(より低い連想度を有するなど)上で実行したりしてもよい。これにより、その他の処理回路を停止させることができるので、エネルギー節約に繋がり得る。同様に、利用可能なリソースが不足していることによりトランザクションの実行が中断された場合(例えば、キャッシュ48の大きさが十分でなかった場合)は、分析モジュール56のプロファイリングにより、今後このトランザクションを処理回路46が実行する際、より大きいキャッシュにアクセスできるプロセッサ(またはより高い連想度を有するものなど、別の形状/構成を有するもの)で実行させることができる。これにより、トランザクションが今後、実行中に繰り返し中断されることを阻止する。分析モジュールは、分析回路としてハードウェアで実装してもよいし、例えば処理回路46上で実行され得るソフトウェアで実装してもよい。図3に示す実施形態において、装置44は、トランザクション追跡モジュール52の他に、プログラム追跡モジュール60を備える。プログラム追跡モジュール60もまた、命令の実行に応じて追跡メモリ54に格納される追跡アイテムを生成し得る。この命令は、トランザクションの一部であってもいいし、なくてもいい。しかし、プログラム追跡モジュール60がトランザクション追跡モジュール52と異なるのは、トランザクション追跡モジュール52が生成する追跡アイテムがリソース使用度の変化などのトランザクション自体の重要イベントに関わるものであるのに対し、プログラム追跡モジュール60が生成する追跡アイテムは、ある命令の実行に直接的に関わるものであるという点である。トランザクション追跡動作を制御する制御レジスタ58が任意で設けられてもよい。特に、トランザクション追跡モジュールが行う追跡をオン/オフするイネーブルパラメータ47が用いられる。さらに、サンプリングすべきトランザクションの数を示すサンプリングパラメータ49も用いられ得る。サンプリングパラメータは、例えば、サンプリングすべきトランザクションの割合や、あるトランザクションがサンプリングされる確率を表すことができる。ここで挙げたパラメータに加えて、あるいは代えて、他のパラメータを設けることもできる。
図4は、トランザクション中に、命令の実行によってリソース(特にキャッシュ48によって実装されるトランザクション・メモリ)がどのような影響を受けるかを示す。トランザクションは、命令IA,IB,IC,IDによって構成される。トランザクション開始時には、トランザクション追跡モジュール52の追跡アイテムとしてTStartパケットが出力される。本実施形態では、命令IA,IB,IC,IDのそれぞれが値を更新させる。これらの命令はトランザクションの一部を構成するので、投機的に実行され、トランザクションの終了時にのみコミットされる。それまでは、投機的状態(すなわち投機的に更新された値)はトランザクション・メモリ、つまりキャッシュ48に記憶され得る。キャッシュ48は複数のキャッシュライン62により構成される。
トランザクション内でデータ値が更新されると、新しい値がキャッシュラインに格納される。この新たな値が書き込まれたキャッシュラインにこれまで書き込みがなかった場合は、キャッシュ48の使用レベルが上昇する。命令が同じデータ値を複数回アクセスする場合(例えば、同一のデータ値への書き込みが繰り返し行われる場合)や、書き込み済みのキャッシュラインに記憶されているデータ値を更新する場合は、キャッシュ48の使用レベルは変わらない。
この例では、キャッシュラインは64バイト長であるとする。命令IAは、アドレス64に保持されるデータ値を更新させる。これは、キャッシュライン1(64/64=1)内にある。このトランザクションではキャッシュライン1にこれまで書き込みがなく、リソース/キャッシュ48の使用度の上昇を意味するので、TResourceパケットが追跡アイテムとして出力される。この例では、TResourceパケットはリソース/キャッシュ48全体の使用度を示すので、命令IAの実行により、キャッシュ48の使用レベルは1となる。命令IBは、アドレス240にアクセスする。これはキャッシュライン3(240/64=3、余り48)内にある。このトランザクションではキャッシュライン3にこれまで書き込みがなかったので、別のTResourceパケットが出力され、これは、リソース/キャッシュ48の使用レベルが2に上昇したことを表す。命令ICは、アドレス68にアクセスする。これもキャッシュライン1(68/64=1、余り4)内にある。新たなキャッシュラインへの書き込みではない(キャッシュライン1はすでに命令IAによってアクセスされている)ので、キャッシュ/リソース48の使用度は上昇しない。よって、トランザクション追跡モジュール52によって追跡アイテムは出力されない。命令IDは、アドレス352にアクセスする。このアドレスは、このトランザクションにおいてこれまで書き込みがなかったキャッシュライン5(352/64=5、余り32)内にあるので、これもまた、リソース/キャッシュ48の使用レベルの変化を意味する。よって、TResourceパケットが出力され、これは、リソース使用レベルが3になった(つまり、トランザクション開始から3つのリソースライン1,3,5に書き込まれた)ことを示す。この場合のリソース使用度の変化は、発生する重要イベントの一例であり、トランザクションのプロファイリングの目的で使用できる。本実施形態では、TResourceパケット(追跡アイテム)は、リソース/キャッシュ48全体の使用レベルを示すことに留意されたい。これは、追跡アイテムの完全な履歴がなくともプロファイリングが可能であるという理由から、追跡アイテムが循環バッファに格納される場合に好都合である。これは、新しいエントリが古いエントリに取って代わると、循環バッファで最終的に起こる。他の実施形態においては、新たなアクセスのたびにTResourceパケットが生成されてもよく、当該パケットが生成されるたびに、プロファイリング動作中のリソース使用レベル判定を行う必要があり得る。これにより、TResourceパケットがリソース使用度を表すマルチビットの絶対値を含む必要がなくなるので、好都合である。代わりに、TResourceパケットは、単一ビットまたは0ビットであり得るデルタ値を保持だけでよい。
いくつかの実施形態では、トランザクションの最後に1つのTResourceパケットを出力して、そのトランザクション中のリソース全体の使用度を示してもよい。
いくつかの実施形態では、キャッシュ48はセット連想方式であり得る。例えば、それぞれが2つのウェイの4つのキャッシュセットを有するキャッシュで使用された場合の同じ命令群を考える。
命令IAは、セット1(64/64=1)内にあるアドレス64に書き込む。命令IBは、セット3(240/64=3、余り48)内にあるアドレス240に書き込む。命令ICは、アドレス68に書き込む。これもキャッシュセット1(68/64=1、余り4)内にあるので、この命令によりリソース使用度は上昇しない。命令IDはアドレス352に書き込む。これは、セット1(352/64=5、余り32、そして5の4による剰余=1)内にある。これは、命令IA,ICによって書き込まれるキャッシュラインとは異なるベースアドレスであるため、異なるキャッシュライン(セットの他方のウェイのキャッシュライン)である。したがってこの命令はセット1の2つ目のウェイにアクセスするものであり、新たなキャッシュラインが使用されたことになる。
追跡アイテム自体も、多様なフォーマットを有し得る。例えば、いくつかの追跡アイテム(TStartパケット、TEndパケットなど)はタイムスタンプを含んでよい。他の実施形態では、すべてのパケットがタイムスタンプを含んでよい。これにより、マルチプロセッサシステムにおける複数のプロセッサの挙動の比較を容易にすることができる。いくつかの実施形態では、TEnd追跡アイテムが、トランザクションの実行中に使用された処理回路46のサイクルの数を示すサイクル数を含んでよい。
図5は、一実施形態に係るトランザクション追跡モジュール52の動作を示すフローチャートである。ステップ64において、新たな命令を実行する際、制御レジスタ58のイネーブルパラメータ47が設定されているか否かを判定する。イネーブルパラメータ47は、トランザクション追跡モジュール52が追跡アイテムを生成するか否かを制御する。このパラメータが設定されていない場合、フローはステップ64に戻る。すなわち、イネーブルパラメータ47が設定されるまで、フローはここから進まない。イネーブルパラメータ47が設定されている場合、ステップ66において、処理回路46が実行中の命令がトランザクションの1つ目の命令であるか否かを判定する。そうである場合、ステップ68において、追跡アイテムとしてTStartパケットを出力し、フローはステップ64に戻る。そうでない場合、ステップ70において、トランザクションが現在実行中であるか否かを判定する。フローは、そうである場合はステップ64に戻り、そうでない場合はステップ72に進む。ステップ72において、トランザクションが終了するか否かを判定する。トランザクションの終了は、例えば、中断(トランザクションの失敗)、またはトランザクションの正常終了によって起こる。正常終了の場合はコミットが発生し得る。トランザクションが終了するとステップ72で判定した場合、ステップ74において、トランザクションが中断されるか否かを判定する。トランザクションが中断される場合は、ステップ76において、追跡アイテムとしてTAbortパケットを出力し、そうでない場合は、ステップ78において、追跡アイテムとしてTEndパケットを出力する。いずれにしても、フローはステップ64に戻る。なお、いくつかの実施形態では、TAbortパケットは中断がなぜ起こったのかを示す理由を含んでよい。トランザクションが終了しないとステップ72で判定した場合は、ステップ80において、現在実行中の命令によって処理回路46が使用するリソースの使用レベルが引き上げられたか否かを判定する。そうでない場合は、フローはステップ64に戻り、そうである場合は、ステップ82において追跡パケットとしてTResourceパケットを出力し、フローはステップ64に戻る。
なお、図5のフローチャートの1回の繰り返しは、新たな命令の実行を表す。特に、ステップ64は、新たな命令に対して起こる。
図6は、トランザクションの一部を追跡させるサンプリングパラメータ49がある場合の、一実施例に係るトランザクション追跡モジュール52の動作の例を示すフローチャートである。このパラメータは、あるトランザクションが追跡される確率、または追跡されるトランザクションの割合を示す割合を定めることができる。
この場合もステップ64において、新たな命令に対して、イネーブルパラメータ47が設定されているか否かを判定し、イネーブルパラメータ47が設定されている場合、フローはステップ84に進み、サンプリングされたトランザクションを現在実行中であるか否かを判定する。すなわち、サンプル・フラグが立てられているか否かを判定する。そうでない場合、ステップ66において、当該命令がトランザクションの1つ目の命令であるか否かを判定する。当該命令がトランザクションの1つ目の命令でない場合、フローはステップ64に戻り、トランザクションの1つ目の命令である場合、ステップ88において、現在の命令をサンプリングすべきか否かを判定する。図3を参照して説明したように、これは、割合または確率に基づいて判定できる。サンプリングパラメータ49がサンプリングするトランザクションの割合を表す場合は、新しい命令の発生に応じてインクリメントするカウンタがサンプリングパラメータの値に達するたびに、当該新しい命令をサンプリングしてカウンタをリセットするという方法が可能である。確率を表す場合には、乱数を生成して、この乱数が上記確率未満である場合に、新しい命令をサンプリングしてもよい。いずれにしても、現在のトランザクションをサンプリングしないとステップ88で判定した場合、フローはステップ64に戻る。そうでない場合、フローはステップ90に進み、サンプル・フラグを立てて、次回のステップ84実行時の結果に影響を与える。そしてフローはステップ68に進み、TStartパケットを出力して、新たなトランザクションが開始されたことを示す。そしてフローはステップ64に戻る。一方、実行中の命令がサンプリングしたトランザクションの一部であるとステップ84で判定した(例えばサンプル・フラグが立てられている)場合、ステップ72において、トランザクションが終了するか否かを判定する。これは、前述のように、トランザクションのコミットまたは中断によるものであり得る。
トランザクションが終了しない場合、ステップ80において、現在の命令がリソースの使用度を引き上げるか否かを判定する。そうでない場合、フローはステップ64に戻り、そうである場合、ステップ82において、前述のようにTResourceパケットを出力する。ステップ72でトランザクションが終了する場合、ステップ74において、トランザクションが中断されたか否かを判定する。そうでない場合、トランザクションは(コミットにより)正常に終了するので、ステップ78においてTEndパケットを出力する。ステップ92においてサンプル・フラグを解除して、現在のトランザクションがサンプリングされたトランザクションではないことを示す。そしてフローはステップ64に戻る。一方、現在のトランザクションが中断されるとステップ74で判定した場合、ステップ76においてTAbortパケットを出力する。そしてフローは、前述のようにステップ92に進む。
図7は、一部のトランザクションだけをサンプリング(追跡)する、ネスティッド・トランザクションがあり得る実施形態に係るトランザクション追跡モジュール52の動作を示すフローチャートである。このフローチャートは、図6のフローチャートと類似しており、同一の処理には同様の符号を使用した。図7に示す実施形態の主な相違点は、トランザションが開始されるとインクリメントされ、トランザクションが終了するとデクリメントされる深さカウンタが設けられていることである。さらに、トランザクションをサンプリング・追跡する場合、そのトランザクション内の全てのトランザクションもサンプリング・追跡する。なお、本実施形態では、1つのトランザクションが中断されると、全てのトランザクションが中断される。さらに、ネスティッド(入れ子)トランザクションは、最外(一番低い)トランザクションが終了するまで終了しない。したがって、本実施形態では、ネスト内の全てのトランザクションを追跡するか、いずれのトランザクションも追跡しないかのどちらかである。他の実施形態では、その外側のトランザクションを追跡していなくても、トランザクションを追跡し得る。このような実施形態では、変形したTStartパケットおよびTEndパケットを使用して、追跡中のトランザクションがネスティッド・トランザクションである旨を示してもよい。これは、フラグを含むこと、TStartNested命令およびTEndNested命令を出すこと、または開始・終了するトランザクションの深さを示す深さカウンタの値をTStartパケットおよびTEndパケットに含めることにより達成され得る。フラグを含む、または単に異なるタイプのパケット(TStartNestedおよびTEndNested)を用いると、より少ない情報しか表す必要がないのでパケットが小さくて済むというのが、利点の一つである。逆に、循環バッファを用いる場合、深さカウントの値を含める代わりに、追跡アイテムのリストの先頭がその最後尾によって書き換えられ始めた時に、さらなる情報を判定することも可能であり得る。
他の実施形態では、(内側の)ネスティッド・トランザクションの追跡が始まると、この追跡は、最外のトランザクションが終了するまで継続され得る。
なお、深さカウンタ自体が、使用レベル追跡対象のリソースの一例であり得る。例えば、ネスティッド・トランザクションが開始すると、深さカウンタが上がり、TResourceパケットが出力され得る(ステップ82)。同様に、深さカウンタが下がると、その変化を示すためにTResourceパケット(ステップ82)が出力され得る。
図7に示す実施形態では、ステップ67において、現在のトランザクションが最外のトランザクションの1つ目の命令かどうかを尋ねる。そうである場合フローはステップ88に進み、そうでない場合フローは前述のようにステップ64に戻る。したがって、最外のトランザクションの開始時にのみ追跡が開始され得る。
ステップ90でサンプル・フラグを設定した後、ステップ92において深さカウンタを1に設定する。そしてフローはステップ68に進み、TStartパケットを出力する。さらに、現在実行中の命令がサンプリングしたトランザクションのものであるとステップ84で判定した場合、ステップ94において、新たな(ネスティッド)トランザクションが開始されるかを判定する。そうである場合、ステップ96において、深さカウンタをインクリメントして、フローはステップ68に進みTStartパケットを出力する。一方、ステップ94で新たな(ネスティッド)トランザクションが開始されない場合、フローはステップ72に進み、前述のように、トランザクションが終了するか否かを判定する。さらに、ステップ74においてトランザクションが中断されると判定すると、ステップ76においてTAbortパケットを出力した後、ステップ98においてサンプル・フラグを解除してから、フローはステップ64に戻る。一方、トランザクションが中断されないとステップ74で判定した場合、ステップ78においてTEndパケットを出力し、ステップ100において深さカウンタをデクリメントし、フローはステップ102に進む。深さカウンタが0ではない(つまり最外のトランザクションにまだ達していない)とステップ102で判定した場合、フローはステップ64に戻り、そうでない場合、フローはステップ98に進んでサンプル・フラグを解除する。
図8は、「小」処理装置106および「大」処理装置108が設けられた実施形態を示す。さらに、処理回路46は、例えば「小」処理装置106および「大」処理装置108の一方で動作する、ソフトウェアとして実装し得るスケジューラ104を備える。このスケジューラは、メモリ50に記憶され得る分析モジュール56からのプロファイリング出力を用いて、今後のトランザクションの実行がどのように扱われるべきかを判断できる。処理装置106,108は、それぞれが、プロセッサ110とキャッシュ48とを備える。さらに、処理装置106,108は、共有キャッシュ112にもアクセスできる。本実施形態では、小処理装置106は、例えば、大処理装置108よりも小さいキャッシュ48を有するので、より少ないエネルギーを使用する。よって、分析モジュール56によるプロファイリングを使って、どちらの装置が今後のトランザクションの実行に最適であるかを判断できる。特に、プロファイリングによって、キャッシュなどの少ないリソースでトランザクションを実行できるというような判断が可能となる。したがって、スケジューラ104は、次回トランザクションが実行される際には、小処理装置106で実行されるように決定する。これにより、はるかに大きい大処理装置108を使うよりもエネルギーを節約でき、これは、大処理装置108が待機状態となり電源をオフできるとなると特にそうなる。一方、特定のトランザクションが多くのリソース使用を要求する場合、スケジューラ104は、今後のトランザクションの実行を大処理装置108で行うことにより、小処理装置106上でリソース不足によりトランザクションが無事に完了しないという事態を回避しようとすることができる。同様に、高連想度キャッシュが必要であることや低連想度キャッシュを使用し得ることを決定してもよい。例えば、リソース使用レベルは、キャッシュセットに残るウェイの数であり得る。この数が所定値(0など)を下回った場合、次回のトランザクション実行時は、キャッシュ内のウェイの数が不足にならないように、より連想度の高いキャッシュ上でトランザクションを実行するのが望ましいかもしれない。一方、ウェイの数が所定値を上回った状態である場合、次回はより連想度の低いキャッシュ上で実行するのが望ましいかもしれない。
本願では、「〜ように構成される」という表現は、装置の要素が、定義される動作を行うことが可能な構成を有する、という意味で用いられる。この関係において、「構成」は、ハードウェアやソフトウェアの仕組みや相互接続の態様を意味する。例えば、装置は、定義の動作を提供する専用のハードウェアを有してもよいし、プロセッサやその他処理装置がその機能を果たすようにプログラミングされてもよい。「構成される」とは、定義の動作を提供するために、装置の要素に対して何らかの変更が必要であることを示唆するものではない。
添付の図面を参照して本発明の例示的実施形態を詳細に説明してきたが、本発明は上記の具体的な実施形態に限定されるものではなく、前掲の請求範囲により定められる本発明の範囲と精神から逸脱しない範囲で当業者によって様々な変更、追加、変形がなされてよいことを理解されたい。例えば、本発明の範囲を逸脱しない範囲で、従属請求項の特徴と独立請求項の特徴とを多様に組み合わせることができる。

Claims (27)

  1. 状態データに対する更新を生成するために実行される複数のプログラム命令を含むトランザクションを実行し、前記トランザクションが競合せず完了した場合に前記更新をコミットし、前記複数のプログラム命令の実行中に追跡制御信号を生成する処理回路であって、前記プログラム命令の実行中に少なくとも1つのリソースを使用する処理回路と、
    前記追跡制御信号に応じて追跡アイテムを生成するトランザクション追跡回路であって、前記プログラム命令の実行中に前記少なくとも1つのリソースの使用レベルが変化したことを示す前記追跡制御信号に応じて、前記少なくとも1つのリソースの前記使用レベルを示す少なくとも1つの追跡アイテムを生成するトランザクション追跡回路とを備える、装置。
  2. 前記処理回路が、前記少なくとも1つのリソースの前記使用レベルの変化を検出し、
    前記処理回路が、前記追跡制御信号において、前記少なくとも1つのリソースの前記使用レベルの変化を特定する、請求項1に記載の装置。
  3. 前記トランザクション追跡回路が、前記追跡制御信号から、前記少なくとも1つのリソースの前記使用レベルの変化を判断する、請求項1または2に記載の装置。
  4. 前記少なくとも1つのリソースが、複数の領域を含むストレージ構造であり、
    前記使用レベルの変化が、新たな領域がアクセスされるたびに検出される、請求項1〜3のいずれか一項に記載の装置。
  5. 前記ストレージ構造が、キャッシュの少なくとも一部であり、
    前記領域の各々が、キャッシュラインである、請求項4に記載の装置。
  6. 前記複数の追跡アイテムが、前記複数の領域の1つが新たにアクセスされたことを示す少なくとも1つのリソース追跡アイテムを含む、請求項4または5に記載の装置。
  7. 前記複数の追跡アイテムが、アクセスされた前記複数の領域の数を特定する少なくとも1つのリソース追跡アイテムを含む、請求項4〜6のいずれか一項に記載の装置。
  8. 前記複数の追跡アイテムが、トランザクションのトランザクション深さを特定する少なくとも1つの追跡アイテムを含む、請求項1〜7のいずれか一項に記載の装置。
  9. 前記複数の追跡アイテムが、トランザクションが開始したことを示すトランザクション開始追跡アイテムおよびトランザクションが終了したことを示すトランザクション終了追跡アイテムの少なくとも一方を含む、請求項1〜8のいずれか一項に記載の装置。
  10. 前記トランザクション終了追跡アイテムが、リソース追跡アイテムでもある、請求項6または7に従属する請求項9に記載の装置。
  11. 前記複数の追跡アイテムのうち少なくともいくつかの追跡アイテムが、タイムスタンプを含む、請求項1〜10のいずれか一項に記載の装置。
  12. 前記トランザクション開始追跡アイテムおよび前記トランザクション終了追跡アイテムの少なくとも一方が、タイムスタンプを含む、請求項9に従属する請求項11に記載の装置。
  13. 前記複数の追跡アイテムの少なくとも1つが、前記トランザクションの実行に使用したプロセッサ・サイクルの数を示すサイクル数を含む、請求項1〜12のいずれか一項に記載の装置。
  14. 前記終了追跡アイテムが、前記トランザクションの実行に使用したプロセッサ・サイクルの数を示すサイクル数を含む、請求項9または10に従属する請求項13に記載の装置。
  15. 前記複数の追跡アイテムが、トランザクションが中断されたことを示すトランザクション中断追跡アイテムを含む、請求項1〜14のいずれか一項に記載の装置。
  16. 前記トランザクション中断追跡アイテムが、前記トランザクションが中断された理由を示す、請求項15に記載の装置。
  17. 前記トランザクション追跡回路の動作に影響を与える制御パラメータを格納するための制御ストレージを備える、請求項1〜16のいずれか一項に記載の装置。
  18. 前記制御ストレージが、前記トランザクション追跡回路の動作を許可または禁止するイネーブルパラメータを記憶する、請求項17に記載の装置。
  19. 前記制御ストレージが、前記トランザクション追跡回路が動作するトランザクションの数を制御するサンプリングパラメータを記憶する、請求項17または18に記載の装置。
  20. 前記サンプリングパラメータが、前記トランザクション追跡回路がサンプリングするトランザクションの割合を示す割合、または前記トランザクション追跡回路が前記トランザクションをサンプリングする確率を示す確率のいずれかである、請求項19に記載の装置。
  21. 前記処理回路が、さらに、トランザクション内の命令以外の命令を実行する、請求項1〜20のいずれか一項に記載の装置。
  22. 少なくともいくつかの命令において動作するプログラム追跡回路を備える、請求項1〜21のいずれか一項に記載の装置。
  23. 前記処理回路が、第1のプロセッサと第2のプロセッサとを備える、請求項1〜22のいずれか一項に記載の装置。
  24. 今後のトランザクションの実行に前記第1のプロセッサおよび前記第2のプロセッサのどちらを使用するかに影響を与える制御情報を更新する分析モジュールを備える、請求項23に記載の装置。
  25. 前記分析モジュールが、前記処理回路上で実行されるソフトウェアである、請求項24に記載の装置。
  26. 状態データに対する更新を生成するために複数のプログラム命令を含むトランザクションを実行し、
    前記トランザクションが競合せず完了した場合に前記更新をコミットし、
    少なくとも1つのリソースを使用する前記複数のプログラム命令の実行中に追跡制御信号を生成し、
    前記追跡制御信号に応じて追跡アイテムを生成する方法において、
    前記プログラム命令の実行中に前記少なくとも1つのリソースの使用レベルが変化したことを示す前記追跡制御信号に応じて、前記少なくとも1つのリソースの前記使用レベルを示す少なくとも1つの追跡アイテムを生成する、追跡アイテムの生成方法。
  27. 状態データに対する更新を生成するために複数のプログラム命令を含むトランザクションを実行する手段と、
    前記トランザクションが競合せず完了した場合に前記更新をコミットする手段と、
    少なくとも1つのリソースが使用される前記複数のプログラム命令の実行中に追跡制御信号を生成する生成手段と、
    前記追跡制御信号に応じて追跡アイテムを生成する手段とを備える装置において、
    前記生成する生成手段が、前記プログラム命令の実行中に前記少なくとも1つのリソースの使用レベルが変化したことを示す前記追跡制御信号に応じて、前記少なくとも1つのリソースの前記使用レベルを示す少なくとも1つの追跡アイテムを生成する、装置。
JP2017545261A 2015-03-04 2016-02-11 トランザクション実行に応じて追跡データを生成する装置及び方法 Active JP6708657B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1503632.0A GB2536871A (en) 2015-03-04 2015-03-04 An apparatus and method to generate trace data in response to transactional execution
GB1503632.0 2015-03-04
PCT/GB2016/050331 WO2016139446A1 (en) 2015-03-04 2016-02-11 An apparatus and method to generate trace data in response to transactional execution

Publications (2)

Publication Number Publication Date
JP2018511119A true JP2018511119A (ja) 2018-04-19
JP6708657B2 JP6708657B2 (ja) 2020-06-10

Family

ID=52876474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017545261A Active JP6708657B2 (ja) 2015-03-04 2016-02-11 トランザクション実行に応じて追跡データを生成する装置及び方法

Country Status (8)

Country Link
US (1) US10776120B2 (ja)
EP (1) EP3265914B1 (ja)
JP (1) JP6708657B2 (ja)
KR (1) KR102527423B1 (ja)
CN (1) CN107278296B (ja)
GB (1) GB2536871A (ja)
IL (1) IL254160B (ja)
WO (1) WO2016139446A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020537222A (ja) * 2017-10-10 2020-12-17 エイアールエム リミテッド トランザクショナル・メモリ用サポートを備えるシステムでの、トランザクションに関するロック変数の確認
JP2021511587A (ja) * 2018-01-25 2021-05-06 エイアールエム リミテッド コミット・ウィンドウ移動要素
JP2022510763A (ja) * 2018-11-28 2022-01-28 アーム・リミテッド トランザクショナル・メモリのための装置及びデータ処理方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10379990B2 (en) * 2016-06-29 2019-08-13 Oracle International Corporation Multi-dimensional selective tracing
US11868818B2 (en) 2016-09-22 2024-01-09 Advanced Micro Devices, Inc. Lock address contention predictor
US10795820B2 (en) * 2017-02-08 2020-10-06 Arm Limited Read transaction tracker lifetimes in a coherent interconnect system
US11258682B2 (en) * 2017-08-03 2022-02-22 Chicago Mercantile Exchange Inc. Compressed message tracing and parsing
WO2019197811A1 (en) * 2018-04-11 2019-10-17 Arm Limited Exception handling in transactions
US10747645B2 (en) * 2018-04-27 2020-08-18 Microsoft Technology Licensing, Llc Selectively tracing portions of computer process execution
US10783031B2 (en) * 2018-08-20 2020-09-22 Arm Limited Identifying read-set information based on an encoding of replaceable-information values
US11106658B2 (en) * 2018-11-28 2021-08-31 Snowflake Inc. Task scheduling in database systems
US11204995B2 (en) * 2019-09-04 2021-12-21 International Business Machines Corporation Cache line cleanup for prevention of side channel attack
US12079175B2 (en) * 2020-10-19 2024-09-03 Splunk Inc. Streaming synthesis of distributed traces from machine logs

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US9280397B2 (en) * 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US8776063B2 (en) 2008-11-26 2014-07-08 Oracle America, Inc. Method and system for hardware feedback in transactional memory
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8041690B2 (en) * 2009-01-27 2011-10-18 International Business Machines Corporation Storing information for dynamically enlisted resources in a transaction
US20120227045A1 (en) * 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
CN102346460B (zh) * 2011-05-27 2013-11-13 运软网络科技(上海)有限公司 一种基于事务的服务控制系统及其控制方法
US20130047169A1 (en) 2011-08-16 2013-02-21 Computer Associates Think, Inc. Efficient Data Structure To Gather And Distribute Transaction Events
US9298469B2 (en) * 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9342454B2 (en) * 2012-08-02 2016-05-17 International Business Machines Corporation Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses
US9619284B2 (en) * 2012-10-04 2017-04-11 Intel Corporation Dynamically switching a workload between heterogeneous cores of a processor
CN103294534B (zh) * 2012-11-01 2017-02-08 北京安天电子设备有限公司 一种分布式系统的任务管理系统及方法
RU2635044C2 (ru) * 2013-06-27 2017-11-08 Интел Корпорейшн Режим слежения в устройстве обработки в системах трассировки команд
US9183043B2 (en) * 2013-07-16 2015-11-10 Oracle International Corporation Systems and methods for adaptive integration of hardware and software lock elision techniques
US9451017B2 (en) * 2013-07-24 2016-09-20 Dynatrace Llc Method and system for combining trace data describing multiple individual transaction executions with transaction processing infrastructure monitoring data
US9965320B2 (en) * 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
US9535815B2 (en) * 2014-06-04 2017-01-03 Nvidia Corporation System, method, and computer program product for collecting execution statistics for graphics processing unit workloads
US9710271B2 (en) * 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US10754682B2 (en) * 2014-11-26 2020-08-25 Henry Bernard Bradford, III Snow ski training apparatus and methods of use
US10114729B2 (en) * 2016-03-31 2018-10-30 Qualcomm Incorporated Performance analysis using performance counters and trace logic

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020537222A (ja) * 2017-10-10 2020-12-17 エイアールエム リミテッド トランザクショナル・メモリ用サポートを備えるシステムでの、トランザクションに関するロック変数の確認
JP7165725B2 (ja) 2017-10-10 2022-11-04 アーム・リミテッド トランザクショナル・メモリ用サポートを備えるシステムでの、トランザクションに関するロック変数の確認
JP2021511587A (ja) * 2018-01-25 2021-05-06 エイアールエム リミテッド コミット・ウィンドウ移動要素
JP7153731B2 (ja) 2018-01-25 2022-10-14 アーム・リミテッド コミット・ウィンドウ移動要素
JP2022510763A (ja) * 2018-11-28 2022-01-28 アーム・リミテッド トランザクショナル・メモリのための装置及びデータ処理方法
JP7481328B2 (ja) 2018-11-28 2024-05-10 アーム・リミテッド トランザクショナル・メモリのための装置及びデータ処理方法

Also Published As

Publication number Publication date
IL254160B (en) 2020-09-30
EP3265914B1 (en) 2019-08-07
KR102527423B1 (ko) 2023-05-02
GB201503632D0 (en) 2015-04-15
JP6708657B2 (ja) 2020-06-10
CN107278296B (zh) 2021-08-17
GB2536871A (en) 2016-10-05
US10776120B2 (en) 2020-09-15
IL254160A0 (en) 2017-10-31
KR20170121219A (ko) 2017-11-01
WO2016139446A1 (en) 2016-09-09
CN107278296A (zh) 2017-10-20
EP3265914A1 (en) 2018-01-10
US20180260227A1 (en) 2018-09-13

Similar Documents

Publication Publication Date Title
JP6708657B2 (ja) トランザクション実行に応じて追跡データを生成する装置及び方法
US7792805B2 (en) Fine-locked transactional memory
JP5415069B2 (ja) スレッドレベルの投機実行を拡張するためのプリミティブ
US11487427B2 (en) Fine-grained hardware transactional lock elision
US9513959B2 (en) Contention management for a hardware transactional memory
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
US20150154045A1 (en) Contention management for a hardware transactional memory
JP6204533B2 (ja) トランザクションメモリ動作を実行するように構成されたプロセッサ
KR20130064792A (ko) 원자 영역에서 조건부 커미트를 위한 결정 메카니즘 제공 장치, 방법, 및 시스템
US9053035B1 (en) Multi-threaded system for performing atomic binary translations
CN107003897B (zh) 监控事务处理资源的利用率
CN107003895B (zh) 事务内的指令采样
US9858172B2 (en) Apparatus and method for controlling debugging of program instructions including a transaction
US9990269B2 (en) Apparatus and method for controlling debugging of program instructions including a transaction
US12050810B2 (en) Systems and methods for hardware-based asynchronous persistence

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200228

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: 20200428

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200521

R150 Certificate of patent or registration of utility model

Ref document number: 6708657

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250