JP2004252670A - 共有リソースの競合検出器および共有リソースの競合検出方法 - Google Patents
共有リソースの競合検出器および共有リソースの競合検出方法 Download PDFInfo
- Publication number
- JP2004252670A JP2004252670A JP2003041575A JP2003041575A JP2004252670A JP 2004252670 A JP2004252670 A JP 2004252670A JP 2003041575 A JP2003041575 A JP 2003041575A JP 2003041575 A JP2003041575 A JP 2003041575A JP 2004252670 A JP2004252670 A JP 2004252670A
- Authority
- JP
- Japan
- Prior art keywords
- event
- shared resource
- cpus
- contention
- counter
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
【解決手段】本発明のマルチスレッドプロセッサにおける共有リソースの競合検出器は、コマンドの実行において発生するイベントを取得するイベント取得手段と、取得したイベントが予め登録した登録イベントパターンと一致するときカウンタをカウントアップするカウント手段と、カウンタが所定値になったとき、イベントを発生したCPUに割り込みを掛ける割り込み手段とで構成する。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、複数の論理CPUから構成されるマルチスレッドプロセッサにおいて、論理CPU間で共有リソースの競合状態を発見するための検出器および検出方法に関する。
【0002】
【従来の技術】
一般に、マルチプロセッサシステムにおいてプロセッサ間で共有するリソースに対して排他的にアクセスするために、「クリティカルリージョン」と呼ぶプログラム領域を設けることが多い。クリティカルリージョンは、同時に1 つのプロセッサしか実行することができないプログラム領域である。この領域内でプロセッサ間の共有リソースにアクセスすることで、並列プログラムを実行中のデータの整合性を保つ。
【0003】
実際には、複数のプロセッサを搭載したシステムにおいて、プロセッサがクリティカルリージョンに入って良いかどうか、すなわち他のプロセッサがクリティカルリージョンを走行していないかどうかを判断するために、「スピンロック変数」と呼ぶ変数を設ける。
例えば、スピンロック変数には、
・あるプロセッサがクリティカルリージョンを走行中の場合は「1」
・いずれのプロセッサも走行していない場合は「0」
がセットされる。
【0004】
この実装では、あるプロセッサがクリティカルリージョンを走行している間に他のプロセッサがクリティカルリージョンに入ろうとした場合には、スピンロッ変数が「0」になるまでスピンロック変数値を繰り返しチェックする必要が生じる。このループ処理を「スピンループ」と呼ぶ。スピンループは、排他制御の簡潔な実装方法として、マルチプロセッサシステム上で動作するソフトウェアにおいて多用されている。
【0005】
しかし、マルチスレッドプロセッサにおいては大きな間題が発生する(マルチスレッドプロセッサについては、非特許文献1参照)。即ち、ある論理CPU上でスピンループしているスレッドが論理CPU間で共有している演算リソースを奪ってしまうために、計算処理を行っている他のスレッドの実効性能が大きく低下してしまうことがある(例えば、非特許文献2、3参照)。
【0006】
また、マルチスレッドプロセッサでは、スピンロックのような演算リソースの奪い合い(競合)だけに留まらず、論理CPU間で共有しているその他のリソース(例えば、Intel製Xeonプロセッサ(非特許文献4参照)の場合であれば、1次2次キャッシュメモリやTLB(Translation Look−aside Buffer )が論理CPU間で共有される) における競合もまた性能低下を招く原因となる(例えば、非特許文献5参照)。
【0007】
次に、リソースの競合部分の発見について、従来の技術を述べる。
プログラムの実行において、「プログラム中のどの部分で最も時間を消費したか」といった統計情報を採取する作業を性能プロファイリングという。性能プロファイリングを行う最も基本的で広く利用されている手法として、PCサンプリングが挙げられる(例えば、非特許文献6参照)。
【0008】
PC(プログラムカウンタ) サンプリングとは、ある一定間隔ごとにプログラムのどの部分を実行していたかを記録し、プログラム実行後にそれらサンプリングデータについて統計処理を施すことで性能プロファイリングを行う。実際には、イベント計測カウンタとカウンタのオーバフロー割り込みとを組み合わせることでPCサンプリングを既存プロセッサ上で実現している。
【0009】
例えば、Intelプロセッサに搭載されている性能モニタリングカウンタ(例えば、非特許文献5参照)は上記のような機能を有しているイベント計測カウンタである。しかし、従来のイベント計測カウンタを用いた場合では、ある特定のイベント(例えばタイムベースや実行命令数など)によるサンプリングを行うことは可能であるが、スピンループのような複数の命令の動作の組み合せによって引き起こされるイベントを計測することには対応できない。
【0010】
また、マルチプロセッサ/マルチスレッドプロセッサ向きのイベント計測カウンタが提案されている(例えば、特許文献1、2参照)。しかしこれらの提案は、いずれもプロセッサ上で走行するスレッド別のカウントを可能とするものであったり、すべてのスレッドでの走行時間の合計を記録する、といった機能しか持たない。このような機能を利用したサンプリング測定では、すべてのスレッドが活動している部分を特定することは可能であると考えられるが、性能プロファイリングで重要なのは、すベてのスレッドが活動しているとして、それらがどのような動作(例えばスピンロック)を行っていたかを判断することである。この点において、上記のいずれの手法も、単純に実行された命令数を数えたり、キャッシュミスイベントの発生回数をカウントしたりといった、単一イベントの発生回数をカウントすることしか行うことができず、論理CPU間での関連性を考察する上では不十分と言える。
【0011】
以上の方式の他にも、命令そのものをプロファイルする技術「ProfileMe」(例えば、非特許文献7参照)と呼ぶ方法も提案されている。しかし、この方式は、命令一つずつに識別子をセットして命令そのものの実行遅延を測定するものであり、スピンループのような複数の命令から構成されるループ処理をチェックすることはできない。
【0012】
さらに、ある一定時間毎にプロセッサの動作状態をチェックする「WatchDogタイマ」と呼ぶ機能が知られている。この機能を応用すれば、スピンループについては発生場所を特定できる可能性がある。しかし、この手法では、プログラム中に出現するスピンループ以外のループ処理との識別が困難であり、また、検出できたとしても現在スピンループが発生している1箇所を特定するのみで、性能プロファイリングのような統計処理には適用できない。加えて、上記の手法はループ処理に対してのみ利用可能であり、本発明での課題とする共有リソース競合を検出するために応用することは困難である。
【0013】
なお、ここで論理CPUについて定義を簡単に行う。マルチスレッドプロセッサ内部には、独立した複数の命令流を制御するために、
(1)命令制御部および命令実行ステートを保持するレジスタ群
(2)上記(1)の間で共有されている演算器等
が存在する。ここでは独立した命令流を実行する上で必要となる(1)と(2)の組合せを論理CPUと呼ぶこととする。一方、物理的なプロセッサ全体のことを「物理CPU」と呼ぶこととする。
【0014】
また、「スレッド」とはOSあるいはハードウェアで認識できる実行コンテキストを持つ一連の実行命令列のこととする。
【0015】
【非特許文献1】
”Simultaneous Multithreading: Maximizing On−Chip Parallelism”, Dean M.Tullsen,Susan J.Eggers,and Henry M.Levy,In Proc. of 22nd Annual Interna−tional Symposium on Computer Architecture,pp.392−403,June 1995.
【0016】
【非特許文献2】
”Using Spin−Loops on Intel Pentium4 Processor and Intel Xeon ProcessorVersion 2.1”,May 2001,Order Number 248674−002.
【0017】
【非特許文献3】
”Introduction to Next Generation Multiprocessing:Hyper−Threading Tech−nology”,http://www.intel.com/technology/hyperthread/intro nexgen/.
【0018】
【非特許文献4】
”Hyper−Threading Technology Architecture and Microarchitecture”,Deborah T.Marr, et al.,Intel Technology Journal,Volume.6,Issue.1,Febru− ary 2002.
【0019】
【非特許文献5】
”IA−32 Intel Architecture Software Developer’s Manual Volume 3 System Programming Guide”,September,2002,Order Number 245472−009, p.7−40.
【0020】
【非特許文献6】
”Measuring Computer Performance A Practitioner’s Guide”,David J.Lilja,Cambridge University Press,New York,NY,2000.
【0021】
【非特許文献7】
”ProfileMe: Hardware Support for Instruction−Level Profiling on Out−of−Order Processors”,Jeffrey Dean,James E.Hicks,Carl A.Waldspurger,WilliamE.Weihl,George Chrysos,International Symposium on Microarchitecture,1997
【0022】
【特許文献1】
特開平10−275100号公報(第1頁、図1)
【0023】
【特許文献2】
特開平9−237203号公報(第1頁)
【0024】
【発明が解決しようとする課題】
前述のように、マルチスレッドプロセッサにおいては、ある論理プロセッサ上でのプログラムの実行速度は、他の論理プロセッサ上でのプログラムの動作状況に大きな影響を受ける。特に、一方の論理プロセッサ上でスピンループが実行されていた場合には、他方の論理プロセッサ上におけるプログラムの実効性能が大きく低下してしまう可能性がある。しかし、このようなスピンループがプログラム実行中の何時、どの部分で発生しているかを検出することはこれまで困難であると考えられていた。
【0025】
また、マルチスレッドプロセッサ内部に装備されている共有リソース( 例えばキャッシュメモリ) において、各論理CPU間で頻繁に競合が発生する場合には、大幅な性能低下を招く危険がある。しかし、このような競合が頻繁に発生していると考えられる場所を特定することもまた困難であつた。
マルチスレッドプロセッサの性能を十分に発揮するためには、上記のような性能劣化の要因となるスピンループおよび共有リソースでの競合を簡単、かつ的確に発見することが課題である。
【0026】
【課題を解決するための手段】
上記課題を解決するため、本発明のマルチスレッドプロセッサにおける共有リソースの競合検出器は以下のように構成される。
(1)第1の発明
第1の発明の原理を図1を用いて説明する。本発明の検出器は、イベント取得手段1、カウント手段2および割り込み手段3から構成する。
【0027】
イベント取得手段1は、マルチスレッドプロセッサの中で実行中の複数のCPU(論理CPU)からコマンドの実行に伴って発生するイベント(実行したイベントの種類)を取得する。
カウント手段2は、取得したイベントが予め登録してあるイベントパターンと比較して等しいときカウンタのカウントアップを行う。例えば、登録してあるイベントパターンが、イベントA、イベントB、イベントCの順に登録してあるとき、イベント取得手段1で取得したイベントの順序とイベントの種類が登録のイベントパターンと同一であればカウンタを1つカウントアップするものである。
【0028】
割り込み手段3は、カウント手段2によってカウントアップされたカウント値が所定の値となったとき、共有リソースの競合が発生したと判断してイベントを発生しているCPUに割り込みを掛けることを行う。
第1の発明は、論理CPU間で共有リソースの競合が起こった場合に、特徴的なイベントパターンが発生することに着目して競合の発生していることを検出するものである。本発明の構成は前述のとおりであるが、本発明を図2のように模式的に示すことができる。図2の論理CPUxで実行中のプログラムの命令は、例えば既存のIntel製プロセッサにおける命令セットアーキテクチャを用いて図3の(a)に示されるようなものである。また図2の登録したイベントパターン内のイベントは同様にIntel製プロセッサの性能モニタリング用イベントを用いて示している。図3(a)のプログラムを実行することにより発生するイベントは、図3の(b)に示されるもので、このイベントと登録したイベントパターンとを比較し、一致した場合にはカウンタをインクリメントする。カウンタ値が所定の値になった場合にイベントを発生しているCPU#xに割り込みを発生させる。
【0029】
第1の発明によれば、マルチスレッドプロセッサにおける共有リソース競合の発生を検知できる。
(2)第2の発明
登録するイベントパターンは、イベントとこのイベントに対応付けてイベント発生元(スピンループを発生している論理CPU)とするものである。これにより、論理CPU間での競合状態を検出することが可能となる。例えば、図4(a)のように、論理CPU#0がキャッシュミスを発生した直後に、論理CPU#1がキャッシュミスを発生させた場合には互いにキャッシュメモリヘのアクセスについて競合状態にある可能性が高い。このようにイベントの発生元を特定することで、共有リソースでの競合がプログラム実行時のどの部分において発生し、悪影響を及ぼしているかを判断することができる。例えば論理CPU#0と論理CPU#1は、図4(b)に示すイベントを発生することが予想され、これをイベントパターンとして登録しておく。
(3)第3の発明
割り込み手段において、カウンタが所定値になったとき、即ち共有リソースの競合状態を検出したとき、論理CPUの割り込みを掛けると共に当該論理CPUのプログラムカウンタの値をサンプリングするものである。これにより、プログラムのどの部分で他方の論理CPUでスピンループが発生していたか、というPCサンプリングによるプロファイリングを行うことができる。
(4)第4の発明
割り込み手段において、カウンタが所定値になったとき、即ち共有リソースの競合状態を検出したとき、競合を発生している当該スレッドとは別の実行状態にあるスレッドを優先的にスケジューリングする。または、競合を発生する原因となっているスレッドの実行を休止(停止)させる。これにより、共有リソース競合の発生を抑えることができる。
(5)第5の発明
本発明の共有リソースの検出方法、イベント取得手順、カウント手順および割り込み手順から構成する。イベント取得手順は、マルチスレッドプロセッサの中で実行中の複数の論理CPUからコマンドの実行に伴って発生するイベントを取得する。カウント手順は、取得したイベントが予め登録してあるイベントパターンと比較して等しいときカウンタのカウントアップを行う。割り込み手順は、カウント手順によってカウントアップされたカウント値が所定の値となったとき、そのイベントを発生しているCPUに割り込みを掛けることを行う。これにより、マルチスレッドプロセッサにおける共有リソース競合の発生を検知できる。
【0030】
【発明の実施の形態】
次に、本発明について図面を参照して実施形態を説明する。
(実施形態その1)
実施形態その1は、2 つの論理CPUで構成されたマルチスレッドプロセッサにおいて、一方の論理CPUが5つの関数(A,B,C,D,E)から構成されているプログラムを実行しているものとする。このとき、当該プログラムのどの部分が、論理CPU#1上で実行されたスピンループの影響を受けているかを検出する例を示す。
【0031】
図5に、本発明のリソース競合の検出機能を有するマルチスレッドプロセッサの基本的な構成を示す。この例は、論理CPUが2つで構成されているマルチスレッドプロセッサである。各構成要素は、プログラム40からコマンド取り出す命令フェッチユニット11、スレッドを制御する命令シーケンサ12、演算器を選択するSU13、算術/論理演算ユニットであるALU14、浮動小数点加算器のFPA15、乗算器FPM16、割算器FPD17、ロ一ドストアユニットLD/ST18、命令シーケンサ12に対応したレジスタセットREG20、命令の終了処理を行うRetirement Unit19、リソースの競合を検出するイベント比較ユニット30から成る。本発明の中心は、イベント比較ユニット30にあるので、マルチスレッドプロセッサを構成する上での他の部分については省略してある。
【0032】
イベント比較ユニットは、イベントパターンを格納するレジスタPTRN REGISTERS35を持ち、ここに検出すべきイベントパターンが登録されている。この例の場合、最大6個のイベント発生シーケンスを検出することができ、イベント発生元とイベントとを登録している。イベント比較ユニット内部には、PTRN INDEX REGISTER34があり、これを用いてPTRNREGISTERS35内のどのイベントを現在比較しているかを示す。発生したイベントは、イベントフェッチユニット31を通してイベント比較ユニットに投入され、登録されたイベントパターンと比較器32で比較される。一致した場合は、カウンタ33をカウントアップし、カウンタ33がオーバーフローしたとき、競合が発生したと判断して割り込み信号を発生させる。カウンタ33は例えば40ビットで構成する。
【0033】
また図5には、スピンループを行うプログラム40の例を表示している。このプログラムが論理CPU#1で実行されているとし、この場合、図5のイベント発生パターンのようなシーケンスでイベントが発生する。この実施例では、図6のように論理CPU#1で発生したカウンタのオーバフロー割り込みを論理CPU#0に発生させることにする。そして、論理CPU#0に対して割り込みが発生した時に実行される割り込みハンドラ内部でPCサンプリングを行う。同時に、従来の技術で実現可能なタイムベース(クロックベース) および実行完了命令数べ一スでのPCサンプリングも行うこととする。
【0034】
次に、実施形態その1の処理フローについて図7をもとに説明する。まず、カウンタ33のカウント値CNT、および登録したイベントパターンの項目番号Iを初期化のため「0」にセットしておく。CPU#1でプログラム40のコマンドを実行し、その実行にともなって発生するイベントをイベントフェッチユニット31から取得する。(S11〜S14)。
【0035】
登録のイベント項目番号Iをカウントアップし、取得したイベントがI番目の登録イベントパターンと一致するかを調べ、一致すればそれが6番目のイベントかどうかを調べる。6番目のイベントであれば6個の発生シーケンスからなる登録イベントパターンと一致したことになるので、カウンタ値”CNT”をカウントアップする。次にカウンタがオーバーフローしていなければ、S12に戻りイベントの取得を行うことを繰り返す。6番目のイベントでなかった場合もS12に戻りイベントの取得の繰り返しを行う。(S15〜S19)。
【0036】
カウンタ33がオーバーフローした場合に競合発生と判断し、CPU#0に割り込みを掛けるとともにレジスタセットREG20の一つであるPCカウンタの値をサンプリングする。(S20)。
図8にPCサンプリングの結果例を示す。これは、1GHzで動作するCPUにおいて論理CPU#0で1秒間PCサンプリングを行った結果である。図7には、従来の(a)タイムベース(クロックベース) サンプリングを行った場合、(b)実行完了命令数べ一スによるサンプリングを行った場合、(c)スピンロック検出イベントによるサンプリングを行った場合のそれぞれについて、PCサンプリングによる各関数の出現比率を示したものである。簡単のため、イベントサンプリングは、各イベントが発生するたびに行われるものとする。
【0037】
(a)、(b)は、従来のイベント計測カウンタによるプロファイリング結果である。通常ソフトウェア開発者は、(a)のプロファイリング結果から、関数Cが最も多くの時間を費やしているので、これが性能向上のボトルネックとなっていると判断する。この場合、関数CのCPI(Cycles Per Instructions)は、
【0038】
【数1】
【0039】
となる。ここで、(c)より論理CPU#0が関数Cを実行中に、論理CPU#1においてスピンロックが
【0040】
【数2】
【0041】
回発生していることがわかる。検出される1つのスピンロックは6命令から構成されているので、総計
【0042】
【数3】
【0043】
命令が論理CPU#1においてスピンロックのために実行されたこととなる。したがって、大まかにいえば、論理CPU#1でスピンロック処理が行われていないと仮定すると、論理CPU#0での実行命令数がIs増えることが期待できる。したがって、スピンロックの影響を取り除いた関数CのCPIは、
【0044】
【数4】
【0045】
となり、関数Cについては約32%の高速化が見込める。
このように、本発明によりスピンロックの影響を受けて実行時間が大幅に増加している部分を検出することが可能となる。
(実施形態その2)
2つの論理CPUで構成されたマルチスレッドプロセッサにおいて、論理CPU上で実行されているスピンループを検出し、それに対応してスレッドスケジューリングを行うことでプロセッサの実効性能を向上するシステム例を示す。
【0046】
図9にスレッドスケジューリングを行うマルチスレッドプロセッサの構成例を示す。図9の構成要素は図5と同様で、イベント比較ユニット30からスケジューリングユニット13および命令シーケンサ12に対して比較結果を転送するためのデータパスが設けられている。
ここで、論理CPU#0においては通常の計算処理を行うスレッド、また論理CPU#1においてスピンロックを行うスレッドが実行されるものとする。このとき、それぞれのスレッドに含まれる命令は対応する命令シーケンサAおよびBから発行される。
【0047】
通常時、スケジューリングユニット13は2つの命令シーケンサから発行された命令を、同一優先度の基で実行ユニットに対して投入するものとする。ここで、イベント比較ユニット30によってスピンロックが検出された場合には、スピンロックを実行しているスレッドよりも、他方スレッドを優先的にスケジューリングする。すなわち、スピンロックを行う命令シーケンサBから発行された命令よりも、命令シーケンサAが発行した命令を優先的に実行ユニットに投入する。
【0048】
本発明により、上記のようなプログラムの実行状況に対応した動的な命令スケジューリング装置が実現可能であり、マルチスレッドプロセッサの命令実効性能を向上させることができる。
(付記1) 複数のCPUを有するマルチスレッドプロセッサの共有リソースの競合検出器であって、
前記複数のCPUがコマンドの実行によって発生するイベントを取得するイベント取得手段と、
取得した前記イベントと、予め登録したイベントパターンとを比較し、一致したときカウンタをカウントアップするカウント手段と、
前記カウンタのカウント値が所定の値になったとき、前記イベントを発生したCPUに割り込みを掛ける割り込み手段と
を有することを特徴とする共有リソースの競合検出器。
【0049】
(付記2) 前記登録したイベントパターンは、イベントと前記イベントに対応付けたイベント発生元であり、
前記割り込み手段は、前記カウンタのカウント値が所定の値になったとき、前記イベントを発生したCPU、または登録した前記イベント発生元のCPUに割り込みを掛ける
ことを特徴とする付記1に記載の共有リソースの競合検出器。
【0050】
(付記3) 前記割り込み手段は、前記カウンタのカウント値が所定の値になったとき、前記イベントを発生したCPUに割り込みを掛け、プログラムカウンタの値をサンプリングする
ことを特徴とする付記1または付記2に記載の共有リソースの競合検出器。
(付記4) 前記割り込み手段は、前記カウンタのカウント値が所定の値になったとき、スレッドのスケジューリング処理を行う
ことを特徴とする付記1または付記2に記載の共有リソースの競合検出器。
【0051】
(付記5) 複数のCPUを有するマルチスレッドプロセッサの共有リソースの競合検出方法であって、
前記複数のCPUがコマンドの実行によって発生するイベント発生パターンを取得するイベントパターン取得手順と、
取得した前記イベント発生パターンと、予め登録した登録イベントパターンとを比較し、一致したときカウンタをカウントアップするカウント手順と、
前記カウンタのカウント値が所定の値になったとき、前記イベント発生パターンを発生したCPUに割り込みを掛ける割り込み手順と
を有することを特徴とする共有リソースの競合検出方法。
【0052】
(付記6) 前記登録したイベントパターンは、イベントと前記イベントの発生時間間隔である
ことを特徴とする付記1または付記2に記載の共有リソースの競合検出器。
(付記7) 前記割り込み手段は、前記カウンタのカウント値が所定の値になったとき、前記イベントを発生したCPUを一時停止するように割り込みを掛ける
ことを特徴とする付記1、付記2または付記6に記載の共有リソースの競合検出器。
【0053】
【発明の効果】
本発明は、マルチスレッドプロセッサにおいて、イベント発生パターンを認識することができるカウンタを使用することで、特徴的なイベント発生パターンを持つスピンループによる演算リソース競合やキャッシュメモリの利用競合、といった論理CPU間での共有リソースの奪い合いが発生する場所を効率的に特定することが可能となる。この情報は、マルチスレッドプロセッサ上で動作するプログラムの最適化を行う技術をサポートする。
【図面の簡単な説明】
【図1】本発明の原理図である。
【図2】第1の発明の模式図である。
【図3】スピンループ実装プログラム例と発生したイベントパターン例である。
【図4】キャッシュメモリアクセスにおける競合の検出例である。
【図5】実施形態その1の構成例である。
【図6】イベント発生元の識別による競合検出例である。
【図7】実施形態その1のフロー例である。
【図8】PCサンプリング例である。
【図9】実施形態その2の構成例である。
【符号の説明】
1:イベント取得手段
2:カウント手段
3:割り込み手段
10:マルチスレッドプロセッサ
11:命令フェッチユニット
12:命令シーケンサ
13:選択ユニット
14:算術/論理演算ユニット
15:浮動小数点加算機
16:乗算器
17:割算器
18:ロード/ストアユニット
19:リタイアメントユニット
20:レジスタセット
30:イベント比較ユニット
31:イベントフェッチユニット
32:比較器
33:カウンタ
34:パターン索引レジスタ
35:パターンレジスタ
Claims (5)
- 複数のCPUを有するマルチスレッドプロセッサの共有リソースの競合検出器であって、
前記複数のCPUがコマンドの実行によって発生するイベントを取得するイベント取得手段と、
取得した前記イベントと、予め登録したイベントパターンとを比較し、一致したときカウンタをカウントアップするカウント手段と、
前記カウンタのカウント値が所定の値になったとき、一つ以上のCPUに割り込みを掛ける割り込み手段と
を有することを特徴とする共有リソースの競合検出器。 - 前記登録したイベントパターンは、イベントと前記イベントに対応付けたイベント発生元であり、
前記割り込み手段は、前記カウンタのカウント値が所定の値になったとき、前記イベント発生元のCPUに割り込みを掛ける
ことを特徴とする請求項1に記載の共有リソースの競合検出器。 - 前記割り込み手段は、前記カウンタのカウント値が所定の値になったとき、一つ以上のCPUに割り込みを掛け、前記CPUに対応したプログラムカウンタの値をサンプリングする
ことを特徴とする請求項1または請求項2に記載の共有リソースの競合検出器。 - 前記割り込み手段は、前記カウンタのカウント値が所定の値になったとき、スレッドのスケジューリング処理を行う
ことを特徴とする請求項1または請求項2に記載の共有リソースの競合検出器。 - 複数のCPUを有するマルチスレッドプロセッサの共有リソースの競合検出方法であって、
前記複数のCPUがコマンドの実行によって発生するイベント発生パターンを取得するイベントパターン取得手順と、
取得した前記イベント発生パターンと、予め登録した登録イベントパターンとを比較し、一致したときカウンタをカウントアップするカウント手順と、
前記カウンタのカウント値が所定の値になったとき、一つ以上のCPUに割り込みを掛ける割り込み手順と
を有することを特徴とする共有リソースの競合検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003041575A JP4066838B2 (ja) | 2003-02-19 | 2003-02-19 | 共有リソースの競合検出器および共有リソースの競合検出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003041575A JP4066838B2 (ja) | 2003-02-19 | 2003-02-19 | 共有リソースの競合検出器および共有リソースの競合検出方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004252670A true JP2004252670A (ja) | 2004-09-09 |
JP4066838B2 JP4066838B2 (ja) | 2008-03-26 |
Family
ID=33025116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003041575A Expired - Fee Related JP4066838B2 (ja) | 2003-02-19 | 2003-02-19 | 共有リソースの競合検出器および共有リソースの競合検出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4066838B2 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7992146B2 (en) | 2006-11-22 | 2011-08-02 | International Business Machines Corporation | Method for detecting race conditions involving heap memory access |
WO2011161830A1 (ja) * | 2010-06-25 | 2011-12-29 | 富士通株式会社 | マルチコアシステムおよびスケジューリング方法 |
US8683474B2 (en) | 2005-03-31 | 2014-03-25 | Fujitsu Limited | Accounting apparatus and method for SMT processor |
KR20160056382A (ko) * | 2014-11-10 | 2016-05-20 | 삼성전자주식회사 | 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 |
JP2016194855A (ja) * | 2015-04-01 | 2016-11-17 | 株式会社デンソー | パフォーマンスモニタ装置 |
CN115543622A (zh) * | 2022-10-11 | 2022-12-30 | 天道金科股份有限公司 | 分布式环境下带计数时间戳的资源使用控制器及控制方法 |
-
2003
- 2003-02-19 JP JP2003041575A patent/JP4066838B2/ja not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8683474B2 (en) | 2005-03-31 | 2014-03-25 | Fujitsu Limited | Accounting apparatus and method for SMT processor |
US7992146B2 (en) | 2006-11-22 | 2011-08-02 | International Business Machines Corporation | Method for detecting race conditions involving heap memory access |
WO2011161830A1 (ja) * | 2010-06-25 | 2011-12-29 | 富士通株式会社 | マルチコアシステムおよびスケジューリング方法 |
JP5397544B2 (ja) * | 2010-06-25 | 2014-01-22 | 富士通株式会社 | マルチコアシステム、マルチコアシステムのスケジューリング方法およびマルチコアシステムのスケジューリングプログラム |
US9367349B2 (en) | 2010-06-25 | 2016-06-14 | Fujitsu Limited | Multi-core system and scheduling method |
US11599491B2 (en) | 2014-11-10 | 2023-03-07 | Samsung Electronics Co., Ltd. | System on chip having semaphore function and method for implementing semaphore function |
KR20160056382A (ko) * | 2014-11-10 | 2016-05-20 | 삼성전자주식회사 | 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 |
US11080220B2 (en) | 2014-11-10 | 2021-08-03 | Samsung Electronics Co., Ltd. | System on chip having semaphore function and method for implementing semaphore function |
KR102285749B1 (ko) * | 2014-11-10 | 2021-08-05 | 삼성전자주식회사 | 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 |
US11835993B2 (en) | 2014-11-10 | 2023-12-05 | Samsung Electronics Co., Ltd. | System on chip having semaphore function and method for implementing semaphore function |
JP2016194855A (ja) * | 2015-04-01 | 2016-11-17 | 株式会社デンソー | パフォーマンスモニタ装置 |
CN115543622A (zh) * | 2022-10-11 | 2022-12-30 | 天道金科股份有限公司 | 分布式环境下带计数时间戳的资源使用控制器及控制方法 |
CN115543622B (zh) * | 2022-10-11 | 2024-03-12 | 天道金科股份有限公司 | 分布式环境下带计数时间戳的资源使用控制器及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4066838B2 (ja) | 2008-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4467094B2 (ja) | プロセッサパイプラインにおいて多数の潜在的に同時の命令をサンプリングする装置 | |
JP4467093B2 (ja) | プロセッサパイプラインにおいて命令をランダムにサンプリングする装置 | |
JP4294778B2 (ja) | プロセッサパイプラインにより処理される相互作用の特性の統計値を推定する方法 | |
US10191741B2 (en) | System and method for mitigating the impact of branch misprediction when exiting spin loops | |
US7426731B2 (en) | Determining processor usage by a thread | |
US8990597B2 (en) | Instruction for enabling a processor wait state | |
US5964867A (en) | Method for inserting memory prefetch operations based on measured latencies in a program optimizer | |
US5923872A (en) | Apparatus for sampling instruction operand or result values in a processor pipeline | |
US7587584B2 (en) | Mechanism to exploit synchronization overhead to improve multithreaded performance | |
US5809450A (en) | Method for estimating statistics of properties of instructions processed by a processor pipeline | |
US6237073B1 (en) | Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information | |
CN104731560B (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
US20030135720A1 (en) | Method and system using hardware assistance for instruction tracing with secondary set of interruption resources | |
JPH10254739A (ja) | コンピュータ性能データを分析する方法 | |
JPH10254700A (ja) | 個々の命令の実行頻度をサンプリングするプロセッサ性能カウンタ | |
US7506207B2 (en) | Method and system using hardware assistance for continuance of trap mode during or after interruption sequences | |
US6148396A (en) | Apparatus for sampling path history in a processor pipeline | |
Tian et al. | Dynamic recognition of synchronization operations for improved data race detection | |
JP4066838B2 (ja) | 共有リソースの競合検出器および共有リソースの競合検出方法 | |
Mericas | Performance monitoring on the POWER5 microprocessor | |
JP2005215816A (ja) | ハードウェアモニタを用いた性能プロファイリング方法 | |
US9990269B2 (en) | Apparatus and method for controlling debugging of program instructions including a transaction | |
CN112540900B (zh) | 大规模并行程序用实时监测与分析方法 | |
US7707556B1 (en) | Method and system to measure system performance | |
JP2000215062A (ja) | 命令制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040610 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040610 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060215 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070807 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070828 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071017 |
|
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: 20071218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071231 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110118 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4066838 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110118 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120118 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130118 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130118 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140118 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |