JP4371452B2 - コンピュータメモリシステムにおいて空間的及び時間的サンプリングを行う装置 - Google Patents
コンピュータメモリシステムにおいて空間的及び時間的サンプリングを行う装置 Download PDFInfo
- Publication number
- JP4371452B2 JP4371452B2 JP37536198A JP37536198A JP4371452B2 JP 4371452 B2 JP4371452 B2 JP 4371452B2 JP 37536198 A JP37536198 A JP 37536198A JP 37536198 A JP37536198 A JP 37536198A JP 4371452 B2 JP4371452 B2 JP 4371452B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- memory
- state
- cache
- address
- 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.)
- Expired - Fee Related
Links
- 238000005070 sampling Methods 0.000 title claims abstract description 46
- 230000002123 temporal effect Effects 0.000 title description 3
- 230000015654 memory Effects 0.000 claims abstract description 220
- 238000012545 processing Methods 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 40
- 239000000872 buffer Substances 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 19
- 238000013519 translation Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 41
- 230000007704 transition Effects 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007334 memory performance Effects 0.000 description 4
- 230000007474 system interaction Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 101100406385 Caenorhabditis elegans ola-1 gene Proteins 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Image Input (AREA)
Description
【発明の属する技術分野】
本発明は、一般に、コンピュータシステムの性能を測定することに係り、より詳細には、コンピュータシステムのメモリに記憶されたデータをアクセスするのに使用されるトランザクションのサンプリングに係る。
【0002】
【従来の技術】
近代的なコンピュータシステムが動作する速度は、キャッシュのようなメモリサブシステムや、SRAM、DRAM、ディスク等を含む他のレベルのハイアラーキーメモリサブシステムの性能によりしばしば制限される。キャッシュメモリは、空間的及び時間的位置を共用するデータを記憶するよう意図される。他のメモリは、短時間及び長時間のいかなる数の編成方式でデータを記憶することもできる。
メモリトランザクションの性能を分析しそして最適化するために、優れた測定ツールが必要とされる。現在、メモリトランザクションを特徴付ける詳細な情報を正確に測定しそして捕獲できるツールは、非常に僅かである。
【0003】
【発明が解決しようとする課題】
既存のハードウェア事象カウンタは、キャッシュ参照又はキャッシュミスのような特定のメモリトランザクションに関連した個別の事象を検出することはできるが、既知の事象カウンタは、性能低下事象の原因及びこのような事象をいかに回避できるかを厳密に推定できるようにする詳細をほとんど与えない。
例えば、現在、データをアクセスする間に、クリーン又はダーティ、共用又は非共用といったキャッシュブロックの状態に関する情報を得ることは著しく困難である。又、どのメモリアドレスが実際にキャッシュに常駐し、又はどのメモリアドレスが特定のキャッシュブロックに対して競合しているかを決定することも非常に困難である。というのは、既存のシステムは、アクセスされるデータの仮想及び物理アドレスを得る容易な方法を与えるものではないからである。
【0004】
同様に、性能低下事象を生じた特定のメモリ参照の原因を確かめることも困難である。その原因は、特定のコンテクスト(例えば、プロセス、スレッド、ハードウェアコンテクスト及び/又はアドレススペース番号)に代わってプロセッサパイプラインにおいて実行される命令であるか、種々の入力/出力デバイスから発せられる直接メモリアクセス(DMA)のようなプロセッサパイプラインの外部のメモリ要求であるか、或いはマルチプロセッサコンピュータシステムにおいて他のプロセッサから発せられるキャッシュコヒレンシーメッセージである。キャッシュのラインにおける特定のブロック、メインメモリにおける物理的アドレス又は仮想メモリにおけるページアドレスのようなメモリの特定領域へのアクセスをサンプリングすることは、より一層困難である。
【0005】
模擬又は計装を使用して、ロード及び記憶命令によるもののようなプロセッサ開始アクセスに対してメモリアドレスを追跡することができる。しかしながら、通常、模擬及び計装技術は、特に真の生産ワークロードをもつ大規模システムに対し、最適に満たない測定を与えるに足るシステムの真のオペレーションを妨げる。又、計装技術は、プログラムを変更又は増強するので、それらはメモリ及びキャッシュのレイアウトを本来的に変更し、オリジナルシステムのメモリ性能を歪めてしまう。例えば、命令キャッシュ競合は、プログラムの計装バージョンと非計装バージョンとの間で著しく相違する。
しかしながら、メモリアクセスが、DMAトランザクション又はマルチプロセッサにおけるキャッシュコヒレンシートランザクションのような何らかの事象によるものであるときには、アクセスされるアドレスの追跡は、通常、監視されるべきメモリシステムの部分のみについて特に設計された特殊なハードウェアでしか行えない。
【0006】
更に、オペレーティングシステム及びアプリケーションソフトウェアを最適化するためには、メモリトランザクションに関する他の形式の情報、例えば、異なる実行スレッド又はプロセスにより使用されるメモリの量、及び特定のメモリトランザクションを完了するのに必要な時間の長さを入手できるのが有用である。更に、おそらくはシステムが真のワークロードのもとで動作している間でも命令スケジューリング及びデータ割り当てを最適化するための情報を使用できれば、もっと有用である。
【0007】
【課題を解決するための手段】
本発明によれば、複数のレベルに構成され、アドレスにデータを記憶するハイアラーキーメモリを有するコンピュータシステムの状態をサンプリングするための装置が提供される。
この装置は、メモリトランザクションを第1状態及びトランザクション情報に基づいて選択するセレクタを備えている。メモリトランザクションは、ハイアラーキーメモリによって処理されるべきものである。トリガーは、第2状態及びトランザクション情報に基づいてセレクタを作動する。
サンプラーは、選択されたメモリトランザクションをハイアラーキーメモリにおいて処理する間に、選択された命令で識別されるコンピュータシステムの状態を記憶する。
【0008】
【発明の実施の形態】
システムの概要
図1は、ここに述べるようにメモリトランザクションサンプリング技術を使用することのできるコンピュータシステム100を示す。このシステム100は、バスライン140で接続された1つ以上のプロセッサ110、メモリ120及び入力/出力インターフェイス(I/O)130を備えている。
各プロセッサ110は、例えば、デジタルイクイップメント社のAlpha21264プロセッサのように、プロセッサパイプライン111と、命令キャッシュ(Iキャッシュ)112と、データキャッシュ(Dキャッシュ)113とを含む集積半導体チップにおいて実施することができる。パイプライン111は、命令を処理するための複数の直列に配置された段、例えば、フェッチユニット、マップユニット、イッシューユニット、1つ以上の実行ユニット及びリタイアユニットを含むことができる。又、プロセッサチップは、種々のメモリのアドレスに記憶されたデータをアクセスする間にキャッシュ状態情報をサンプリングするための以下に詳細に述べるハードウェア119も備えている。
【0009】
メモリ120は、ボードレベルキャッシュ(Bキャッシュ)121と、揮発性メモリ(DRAM)122と、永続的メモリ(ディスク)123とを含むハイアラーキー構成をとることができる。I/O130は、他のプロセッサ、キーボード、モニタへのメモリチャンネル、及び他のコンピュータシステムへのネットワークコントローラのようなI/Oデバイスを用いてシステム100に対してデータを入力及び出力するのに使用できる。
【0010】
メモリトランザクション
一般に、メモリトランザクションは、ここでは、ある位置から別の位置へデータを移動させるオペレーション、例えば、ロード及び記憶、直接メモリアクセス(DMA)オペレーション、及び多数のプロセッサ又は実行スレッドがデータを同時にアクセスする場合のコヒレンシートランザクションとして定義される。
オペレーション
システム100のオペレーション中に、ソフトウェアプログラムの命令及びデータはメモリ120に記憶される。命令は、既知のコンパイラー、リンカー及びローダー技術を用いて従来の仕方で発生される。命令は、Iキャッシュ112を経て1つのプロセッサ110のパイプライン111に転送され、そしてデータはDキャッシュ113を経て転送される。パイプライン111では、命令が実行のためにデコードされる。
命令キャッシュ(Iキャッシュ)112は、プロセッサパイプライン111により実行される命令をフェッチするためにパイプラインによりアクセスされる。ある命令、例えば、ロード及び記憶命令は、Dキャッシュ113を経てメモリに記憶されたデータ(R/W)をアクセスする。他の命令、例えば、分岐及びジャンプ命令は、プログラムの実行流を制御する。又、データは、直接メモリアクセス(DMA)及びキャッシュコヒレンシーオペレーションにより転送することもできる。いずれかのメモリのデータがアクセスされる間に詳細な性能情報を収集するのが望ましい。
【0011】
メモリトランザクションサンプリング
図2は、メモリトランザクションをサンプリングする構成を示す。キャッシュ200は、複数のライン202を含む。キャッシュは、直接マップ式でもよいし又はセット連想式でもよい。各ラインは、1つ以上のブロック201より成る。直接マップ式キャッシュのラインは、単一のブロックのみを含み、一方、N路のセット連想式キャッシュのラインは、各々、N個のブロックを含む。
例えば、4路のセット連想式キャッシュでは、1つのラインが、ある数の下位アドレスビットを共通にもつ4つの異なるメモリアドレスのデータを記憶する。アクセス中に、キャッシュラインインデックスによりラインが参照された後に、各ブロックを検査して、ラインが所要データを記憶するかどうか決定しなければならない。これは、タグ210で行われる。ブロックをいかに検査するかの厳密な詳細は、セット連想式キャッシュの実施によって左右される。又、各ブロックには、データ220及び状態情報230も関連される。タグ、データ及び状態を記憶するのに異なる物理的ハードウェアを使用することもできる。
【0012】
図2に示す構成体は、変換ルックアサイドバッファ(TLB)240と、トリガーファンクション250と、カウンター265と、選択ファンクション260と、サンプリングバッファ301−303と、サンプリングソフトウェア280も備えている。
システムのオペレーション中に、トランザクション入力がライン241を経て変換ルックアサイドバッファ(TLB)240へ送られる。このトランザクション入力は、仮想アドレス(VA)と、アドレススペース番号(ASN)のようなコンテクスト識別子と、そしてマルチスレッド式プロセッサ設計の場合には、ハードウェアコンテクスト識別子(HCI)とを含むことができる。又、入力は、実行されるべきアクセスオペレーションの形式(R/W/DMA)も含むことができる。
【0013】
TLB240は、仮想アドレスを物理アドレスへと変換する。通常、ある数の下位(例えば、8−16)ビットより成るアドレス(物理的にインデックスされるキャッシュについては物理的アドレス又は仮想的にインデックスされるキャッシュについては仮想アドレス)の一部分は、ライン242’にキャッシュ200へのインデックスを形成するのに使用される。このインデックスは、特定のキャッシュライン202を選択する。
次いで、選択されたキャッシュライン202内でブロック201の各々にルックアップオペレーションを実行して、ラインのブロックに適当なデータが存在するかどうか決定する。アクセスオペレーションに基づき、データは、ライン251及び252において読み取り又は書き込みすることができる。
【0014】
ライン内のいずれのブロックにも適当なデータが見つからない場合には、新たなデータのための場所を作るためにキャッシュから他のデータが追放される。この追放されるデータがダーティであり、即ちキャッシュに記憶されたデータのバージョンが変更されそしてその周囲レベルのメモリハイアラーキーに記憶されたダーティデータのコピーが一貫したものでない場合には、その追放されるデータは、一貫性を維持するために周囲レベルのメモリハイアラーキーの適当なアドレスに書き戻すことが必要となる。
コンピュータシステムで実行されるプログラム及びメモリシステムの振る舞いに関する徴候を得るために、メモリシステムのトランザクションをサンプリングすることが目標である。各メモリトランザクションは、それがメモリシステムに入るときに検査され、この特定のトランザクションをサンプリングのために選択すべきかどうか決定される。トリガーファンクション250及び選択ファンクション260の2つのファンクションは、どのトランザクションをサンプリングすべきかを制御する。
トリガーファンクション250は、選択ファンクション260をいつ作動すべきかを決定し、一方、選択ファンクション260は、トリガーファンクションが選択ファンクションを作動すると、どのメモリトランザクションをサンプリングすべきか決定する。最も一般的なケースでは、これらファンクションの各々は、メモリシステム又はメモリトランザクション状態に基づいて動作することができる。
【0015】
選択ファンクション
選択ファンクション260は、カウンタ265が特定値に到達したときに選択ファンクションをオンに切り換えるイネーブルライン266を経てイネーブルされる。この値の維持について以下に述べる。選択ファンクションは、ライン242”を経てトランザクションに関する入力情報を受け入れると共に、ライン267を経てトランザクションに関する状態情報を受け入れる。選択ファンクションの作用は、トランザクションが関心のあるものであるかどうか判断することであり、もしそうであれば、トランザクションに関する情報をライン299を経てサンプリングバッファ300へ送ることである。
【0016】
一般的なケースでは、選択ファンクションロジック内のモニタレジスタ(MON)263は、メモリシステムトランザクションに対して一致させるに使用される状態を記憶する。特定のキャッシュブロックへのアクセスを監視する特定のケースでは、モニタレジスタ263は、監視されるべき1つ以上のブロックの数を記憶することができる。モニタレジスタの内容(ブロック番号のような)は、ライン261を経てハードウェア又はソフトウェアによりレジスタにロードすることができる。又、メモリの他の領域のアドレスも、モニタレジスタに記憶することができる。
選択ファンクション260を実施することのできる1つの方法は、1組の異なる選択ファンクションを予め定義し、そして選択ファンクション内にモードレジスタ264を使用することにより行われる。モードレジスタ264には、サンプリング中に使用すべき特定の予め定義された選択ファンクションを制御するためにライン262を経てモード値をロードすることができる。種々の選択ファンクションモードは、次のようなトランザクションを選択するファンクションを含むことができる。
【0017】
− メモリハイアラーキーにおける特定のレベルを参照する。
− メモリハイアラーキーの特定レベル内におけるメモリの特定領域を参照する。この特定領域は、1つ以上のキャッシュライン内の1つ以上のキャッシュブロック、1つ以上のキャッシュライン、或いは仮想又は物理アドレスによりアドレスされるメインメモリの1つ以上の隣接領域を含むことができる。
− 例えば、読み取り、書き込み又は無効化のような特定形式を有する。
− 特定のキャッシュメモリにおいてヒットする。
− 特定のキャッシュメモリにおいてミスする。
− 特定のキャッシュプロトコル状態遷移、例えば、ダーティ追放を行う。
− 特定のソースから、例えば、プロセッサパイプラインで実行される命令、特定コンテクスト、プロセス、スレッド又はアドレススペースからの命令実行、入力/出力デバイスからの直接メモリアクセス、或いはマルチプロセッサコンピュータシステムにおけるキャッシュコヒレンシーメッセージを発生する。
【0018】
更に、これら選択基準のブール組合せ(AND、OR及びNOT)を使用して選択ファンクションを構成することができる。或いは又、ソフトウェアによって制御されるプログラム可能なロジックで選択ファンクションを実施して、付加的な融通性を与えることができる。
サンプリングされるべきメモリトランザクションを選択ファンクションが識別した後に、状態情報が捕獲されて、サンプリングバッファ300−302の1つに記録される。この状態情報は、選択されたトランザクションがメモリハイアラーキーの種々のレベルにより処理されるときに収集される。
多数の実施技術が考えられる。例えば、「選択されたトランザクション」フィールド(単一ビットのような)を各メモリトランザクションに関連付けることができる。このフィールドは、選択されたトランザクションの処理中にビットがセットされたときにメモリシステムのロジック回路が適当な点において情報を記録するようにする。別の実施形態では、メモリシステムハイアラーキーにおける適当な点に比較レジスタを使用して、各メモリトランザクションからの識別情報を選択されたトランザクションの識別情報と比較し、それらが一致する場合に、当該状態情報を記録する。
【0019】
オペレーションのモード
比較レジスタを使用して、メモリハイアラーキーの各レベルにおいて選択されたトランザクションを選ぶための選択ファンクションの実施について説明する。単一キャッシュメモリより成る単一レベルのメモリハイアラーキーに説明を限定すると、選択ファンクションは、監視のためにキャッシュの特定領域、例えば、1組のキャッシュブロックを特定する。ライン242に搬送されるトランザクション情報のインデックス部分が、選択ファンクション260のモニタレジスタに記憶されたブロックインデックスの1つと同じである場合には、インデックスされたキャッシュブロックの状態に関する情報が捕獲され、そして以下に述べるようにサンプリングバッファの1つに記録される。
【0020】
ある状態情報は、トランザクションがメモリシステムによって処理される前に捕獲することができ、そしてトランザクションが完了した後に付加的な状態情報を捕獲することができる。特定数のトランザクションが記録された後、例えば、サンプリングバッファ300−302のいずれかがいっぱいになると、読み取り信号をライン271に発生することができる。この読み取り信号271は、割り込み、レジスタにセットされたソフトウェアポーリング可能な値、又は例外条件の形態である。
読み取り信号に応答して、サンプリングソフトウェア280は、サンプリングバッファに記憶された状態情報を、ライン272を経て更に処理するために読み取ることができる。多数のバッファ300−302を使用して、多数のサンプルを収集できることに注意されたい。バッファの数を増加すると、読み取り信号当たり2つ以上のサンプルを転送することにより、サンプリングオーバーヘッドのコストを償還することができる。
【0021】
トリガーファンクション
ロード可能なカウンタ265は、ライン268のカウントダウン値で初期化される。このカウンタ265は、ライン254のトリガー事象を使用して減少される。トリガー事象は、ライン251のクロックサイクルでもよいし、ライン252のトランザクションでもよい。いずれのトリガー事象を使用すべきかは、ライン253において選択することができる。
ライン254のトリガー事象が減少するかどうかに関わりなく、カウンタ256は、トリガーファンクション250により制御される。トリガーファンクションは、ライン242”’及び267を経て到着する情報を介して決定できるメモリトランザクションの状態の任意ファンクションである。ファンクション250は、選択ファンクションについて上記した2つの内部のロード可能なレジスタで実施することができる。
【0022】
有効なトリガーファンクションの幾つかの特定例として、次に一致するものが含まれる。
− いずれかのメモリトランザクション、
− 特定レベルのメモリハイアラーキー、例えば、特定のキャッシュを参照するメモリトランザクション、
− 特定レベルのメモリハイアラーキー、例えば、特定のキャッシュにおいてヒットするメモリトランザクション、
− 特定レベルのメモリハイアラーキーにおいてミスするメモリトランザクション、
− あるキャッシュプロトコル状態遷移、例えば、ダーティ追放を経験するメモリトランザクション、
− メモリの特定領域、例えば、ある範囲のアドレス、特定のキャッシュライン、特定のキャッシュライン内の特定のキャッシュブロック、キャッシュの特定領域等にアクセスするメモリトランザクション、
− 特定のソース、例えば、プロセッサパイプライン、特定の直接メモリアクセス(DMA)デバイス、別のプロセッサからのコヒレンシートラフィック等からのメモリトランザクション、及び
− 特定の形式のメモリトランザクション、例えば、読み取りトランザクション、書き込みトランザクション又は無効化トランザクション。
【0023】
トリガーファンクション250を使用すると、メモリ参照の流れに選択ファンクションを適用する前に、サンプリングハードウェアは特定数のトランザクションをスキップすることができる。精巧な例では、これは、特定ブロックへの3つのアクセスをカウントし、次いで、そのブロックに対する次の2つのミスに対してメモリトランザクションサンプルを収集できるようにする。
別の有用な例では、特定のコンテクスト(プロセッサ又はスレッドのような)により特定のキャッシュブロックへのアクセスの後に選択をトリガーし、そして異なるハードウェア、プロセス又はスレッドコンテクストにより同じブロックにへの特定数のその後のトランザクションに対してサンプルを収集することができる。
【0024】
それ故、サンプリングに対して2つの段階が存在する。
1)一致するトランザクションを決定し、次いで、
2)その一致するトランザクションに関連したサンプリングデータを保持又は破棄する決定をし、空間的及び時間的次元の両方においてサンプリングを行えるようにする。
カウントダウンレジスタ265は、ライン268を経てリセットすることができる。ランダムサンプリングの場合には、カウントダウンレジスタに書き込まれる初期値は、ある範囲の数字からランダムに選択することができ、そしてそのランダムな数字は、ランダムな数字を発生できるハードウェア回路により又はソフトウェアで計算することができる。レジスタ265は、カウントアップもできることに注意されたい。
【0025】
サンプリングバッファ
図3は、バッファ300−302の1つをいかに割り当てるかの詳細を示す。バッファは、1組のソフトウェア読み取り可能なレジスタ又は他の形式のメモリとして実施することができる。バッファは、状態フィールド310、アドレスフィールド320、コンテクストフィールド330、アクセスソースフィールド340、命令フィールド350、待ち時間フィールド360、及び他の状態に対するフィールド370とを備えている。
状態フィールド310は、ブロック状態情報及びキャッシュ状態プロトコル情報、例えば、ブロックがダーティかクリーンか(変更されたか否か)、共用であるか(1つ以上の実行スレッドがデータをアクセスできるか)、排他的であるか(非共用であるか)、有効か無効か(データが正当であるか)、そしてキャッシュヒット又はミス状態であるかを含むことができる。又、キャッシュメモリにおけるトランザクションによりアクセスされる特定のラインインデックス番号及びブロック番号のような情報も保持することができる。メモリハイアラーキーに多数のレベルが存在する場合には、フィールド310の多数のコピーがあり、各フィールドは、特定レベルのメモリハイアラーキーに対するトランザクションに関する状態情報を記憶する。
【0026】
アドレスフィールド320は、サンプリングされるトランザクションによりアクセスされるデータの仮想及び/又は物理アドレスを記憶することができる。
ハードウェア実施についての1つの問題は、物理及び仮想アドレスをバッファ300にルート指定するのに必要なワイヤの数であり、例えば、仮想アドレスに対して約47本程度のワイヤと、物理アドレスに対して40本程度のワイヤとなる。ソフトウェア管理のTLBをサポートするコンピュータシステムでは、仮想−物理変換を実行したTLBエントリのインデックスを、参照ページへのオフセットと共にアドレスフィールド320に記憶するだけでワイヤの本数を減少することができる。次いで、ソフトウェア280は、指定のTLBエントリからエントリを読み取り、物理及び仮想アドレスの両方を決定することができる。
【0027】
この技術は、2つの特性に依存することに注意されたい。
第1の特性は、情報が記録されたときと、ソフトウェアがTLBエントリを読み取るときとの間に当該TLBエントリが交換されないことを必要とする。TLBが、一般的なケースとして、最新使用(LRU)交換ポリシーのある近似を実行する場合には、これは問題にならない。というのは、当該エントリは、最近のキャッシュアクセスに含ませることにより最近使用されているからである。
第2の特性は、ソフトウェアがTLBエントリを読み取りできることを必要とする。TLBの直接的な読み取りが可能でない場合には、ソフトウェアがTLBの内容のシャドーコピーを維持することができる。
コンテクストフィールド330は、アドレススペース番号(ASN)、マルチスレッドプロセッサの場合のハードウェアコンテクスト識別子(HCI)、プロセス識別子(PID)、及び/又はソースがプロセッサパイプラインの命令実行であるときのメモリトランザクションのソースのスレッド識別子(TID)を記憶することができる。又、このフィールドは、命令により生じるメモリトランザクションにより参照されるアドレススペース番号(ASN)も記憶できる。
【0028】
ソースフィールド340は、アクセスのソース、例えばロード又は記憶命令、DMA要求、又はキャッシュコヒレンシープロトコルオペレーション、及びソースを識別する付加的な情報を記憶するのに使用できる。
アクセスのソースが命令実行であった場合には、そのアクセスを生じた命令のプログラムカウンタ(PC)を命令フィールド350に記憶することができる。プログラムカウンタフィールド350は、レジスタをセーブするために他の種類のソースに関する情報を記憶するのに使用できる。例えば、ソースがマルチプロセッサコンピュータシステムにおける別のプロセッサからのコヒレンシーオペレーションである場合には、フィールド350を使用して、そのコヒレンシーオペレーションを生じさせた要求を発生するプロセッサのプロセッサ番号を保持することができる。DMA型のトランザクションの場合には、DMAを開始したI/Oデバイスの識別を記憶することができる。
【0029】
次々のアクセス間の時間インターバル(待ち時間)及び/又は要求が発生されたときからデータがプロセッサに到着するまでのインターバル(又は書き込みの場合は、データがメモリに送られたときからデータがメモリへとコミットされるまでのインターバル)は、待ち時間フィールド360に記憶することができる。このインターバルは、プロセッサクロックサイクルに関連して測定することができ、或いはこのインターバルは、メモリシステムにより処理されるトランザクションの数のような他の単位で測定することができる。又、このインターバルは、メモリハイアラーキーの各レベルにおいてトランザクションを処理するのに必要な時間に分割することもできる。
フィールド370のような付加的なレジスタは、サンプルされたメモリトランザクションが処理されるときに捕獲される付加的なメモリシステム状態を記憶するためにこの構造体に追加することができる。この状態は、最後のサンプル以来発生したメモリシステムトランザクションに関する情報、例えば、全トランザクション数のカウント、又は特定の1組の基準を満たすトランザクションのカウントを含むことができる。
【0030】
図2に示すように、サンプルされた状態の一部分であるライン290のサンプル事象は、ヒット/ミス、有効/無効、ダーティ等を含むことができる。ライン291の選択信号は、どの特定事象をサンプリングすべきか決定できる。
又、他の状態情報は、書き込みバッファ、ビクティムキャッシュ、変換ルックアサイドバッファ(TLB)、ミスアドレスファイル(MAF)、及びメモリトランザクション待ち行列のようなメモリシステム構造体における有効エントリの内容又は数を含むことができる。
【0031】
ランダムメモリトランザクションサンプリング技術
好ましい実施形態では、メモリハイアラーキーのいずれかのレベルをアクセスするトランザクションは、少なくとも2つのオペレーションモードを用いてサンプリングされる。第1モードでは、メモリの特定領域(アドレス)へのアクセスがサンプリングされる。第2モードでは、メモリハイアラーキーの任意の部分の性能を推定するために、ランダムに選択されたメモリトランザクションがサンプリングされる。
第1モードにおいては、例えば、キャッシュブロックのような同じ物理的位置に対する少なくとも2つの連続的なトランザクションをサンプリングすることにより、最も関心のある情報を収集することができる。これは、キャッシュ状態の遷移を露呈する。
第2モードにおいては、ある時間にわたり多数のトランザクションをランダムにサンプリングすると、システムのスループットに著しく影響を及ぼすことなく全メモリ性能を統計学的分析で推定することができる。換言すれば、ランダムサンプリングは、実際のオペレーティングシステムにおけるメモリ性能を測定することができる。
それ故、ここに開示する装置及び方法は、特定のキャッシュブロックのクリーン又はダーティ、メモリの特定領域、全てのメモリ位置、キャッシュブロックがダーティである全てのメモリ位置、データがキャッシュにないメモリ位置に対して、トランザクションをサンプリングすることができる。
【0032】
キャッシュの状態遷移が特に問題であるから、図2に示す構成体は、モードがキャッシュサンプリングであるときに少なくとも2つの連続的なアクセスに対し状態情報のコピーを記憶するように設計される。第1コピーは、第1アクセスの後のキャッシュブロックの状態に関する情報を捕獲する。第2アクセス後の状態は、第2コピーとして記憶される。これら2つの状態を比較することにより、システムのキャッシュコヒレンシープロトコルにどんな遷移が生じなければならないかを決定することができる。
次々のトランザクションに対して状態情報を記憶する概念は、次々のミス、次々のヒット、次々の無効化、等の単純なソフトウェア指定の基準に合致する順次アクセスに対して一般化することができる。これらは、ライン262を経てセットされるキャッシュサンプリングモードにおける異なる変形である。
【0033】
好ましい実施形態では、状態及びアドレス情報は、キャッシュブロックが更新されるときに捕獲され、従って、キャッシュを直接読み取る必要はない。情報を途中でキャッシュ200に捕獲することにより、ハードウェア設計は、より簡単になる。というのは、各キャッシュブロックからサンプラー270へワイヤを走らせる必要性が回避されるからである。又、この設計は、サンプリングを少数のブロックに限定することにより簡単化することもできる。少数のブロックのみが同時にサンプリングするときは、各キャッシュブロックに対する余分なハードウェアが回避される。
モニタレジスタ264をロードするソフトウェアを使用することにより、広範囲な監視技術の融通性のある制御を実施することができる。例えば、特定の時間周期内に特定のキャッシュブロックに対してアクセスアクティビティが検出されない場合には、ソフトウェアは、監視すべき別のブロックを単に指定するだけでそのブロックの監視を中止することができる。別のモードでは、監視されるキャッシュブロックをランダムに選択し、キャッシュにおける各ブロックの振る舞いを統計学的にサンプリングすることができる。或いは又、ソフトウェアは、ラウンドロビンの順序でブロックをサンプリングすることができる。
【0034】
又、特定のプログラム変数又はデータ構造体に関連したキャッシュブロックを選択的に監視することもできる。ここで、ソフトウェアは、どのキャッシュブロックが特定の変数を記憶するか決定し、そしてそのブロックを監視すべきものとして選択する。この技術は、プログラマーが、検査されるべきプログラムを実行する際の競合を識別することによりメモリシステム性能を対話式にデバッグすることができる。動的なデータリロケーションによる重大なキャッシュ競合を回避するために適応ランタイムソフトウェアにより同様の技術を使用することができる。
ここに開示するトランザクションサンプリングは、図2に示すサンプリングハードウェアを複写することによりメモリハイアラーキーの異なるレベルに対して使用できることに注意されたい。この技術は、上記2つのTLB特性に依存することに注意されたい。
ここに述べるサンプリング技術は、低いハードウェアオーバーヘッドでメモリトランザクションの微細粒度監視を行うことができる。この情報は、多数の方法で使用できる。例えば、収集された情報は、キャッシュ、DRAM等のメモリサブシステムの性能を良く理解する上でシステム設計者の助けとなる。性能データは、最適化を誘導するように使用することができる。
【0035】
コンテクスト間のメモリ相互作用の推定
メモリシステムトランザクションに関するサンプリングされたデータは、メモリシステムアクティビティに関する種々の統計値を計算するのに使用できる。このプロセス400が図4に示されている。このプロセスは、例えば、特定のキャッシュメモリ内の特定のセット連想キャッシュライン内の特定のキャッシュブロックのような監視すべきメモリの領域を繰り返し選択し(ステップ410)、この領域をアクセスする多数の連続的なメモリトランザクションから状態情報を記録し(ステップ420)、そしてこの記録された状態情報をソフトウェアへ通信する(ステップ430)ことを含む。
【0036】
所定数のサンプルが収集されるか又は所定の長さの時間が経過した後に、サンプリングソフトウェアは、記録された情報を統計学的に分析し、キャッシュ利用性及びコンテクスト間のメモリシステム相互作用に関する種々の特性を推定することができる。
この解決策を使用する典型的な方法は、ソフトウェアが、監視すべきランダムキャッシュブロックを周期的に選択し、そしてその特定のブロックをアクセスするトランザクションに対してサンプルのシーケンスを収集することである。所与の時間周期が経過した後、ソフトウェアは、監視すべき新たなランダムキャッシュブロックを選択し、そして全プロセス400を繰り返すことができる。時間と共に、キャッシュ内の全てのブロックに対してサンプルが生じる。
【0037】
空間的次元におけるこのランダムなサンプリングは、空間及び時間の両方における共用及び競合に関する統計値を推定できるようにする。又、監視すべき領域のランダムな選択はハードウェアロジックでも実施できることに注意されたい。又、一般に、特定数のサンプル事象290が発生するまで各領域を監視することができる。これら事象290は、領域に対するメモリトランザクション、全メモリシステムトランザクション、或いはプロセッサクロックサイクル又は他の単位で測定された経過時間である。
各トランザクションごとに、ここに述べるように種々の情報を捕獲することができる。これらの分析に対し、各トランザクションに関する当該情報は、当該キャッシュにおけるヒット又はミス状態、トランザクションが参照したブロックに関するキャッシュプロトコル状態情報、トランザクションの形式(例えば、読み取り、書き込み又は無効化)、キャッシュ内の対応位置(ブロック及び/又はラインインデックスのような)を含む。
【0038】
付加的な記録情報は、トランザクションのコンテクスト、例えば、別のプロセッサからのキャッシュコヒレンシーオペレーション、入力/出力デバイスからの直接メモリアクセス、或いは特定のプロセス、スレッド、アドレススペース番号又はハードウェアコンテクストからの命令実行を識別する。
サンプルの分析は、先ず始めに、当該サンプルのサブセットを選択することを含む(ステップ440)。特に、サブセットは、付加的な機能的基準も満足する特定のキャッシュブロックのようなある領域への連続的アクセスからのサンプルの対である。
キャッシュ内の同じ物理的位置への連続的なアクセスにより、選択されたトランザクション対が生じるので、トランザクションに関して記録された情報を使用して、キャッシュ内のこの物理的空間に対する共用又は競合を推定することができる。又、キャッシュプロトコルにおける種々の状態遷移の頻度に関する統計値を決定することもできる。というのは、2つの連続するトランザクションにおいてプロトコル状態を検査すると、対の第1サンプルの状態から対の第2サンプルの状態へ進むために行わねばならないトランザクションが識別される。
【0039】
共用を推定するために、ステップ450において、対の第2トランザクションがキャッシュヒットであるような対が分析により選択される。これは、第1トランザクションと第2トランザクションとの間に共用が存在することを指示する。両サンプルに関連したコンテクスト識別情報を検討することにより、サンプリングされた時間インターバル中にどのコンテクストがこの物理的空間を有効に共用したかを決定することができる。多数のこのようなサンプル対にわたりこの情報を収集することにより、物理的位置のコンテクスト内及びコンテクスト間の両方の共用に関するメトリックを統計学的に推定することができる。
1つの有効なメトリックは、サンプルの第1対が1つの特定のコンテクストに合致しそしてサンプルの第2対が第2の特定のコンテクストに合致するような対の数をカウントして、第1及び第2のコンテクストの識別子によりインデックスされるカウントのマトリクスを効果的に生じさせることにより決定される。同様に、第2のサンプリングされたトランザクションがキャッシュミスを経験するような対をステップ460において分析することにより、物理的位置に対するコンテクスト内及びコンテクスト間の競合に関するメトリックを統計学的に推定することができる。
【0040】
このハードウェアの別の使い方は、監視すべき特定のキャッシュ領域を選択することである。選択された領域は、特定のプログラム変数又はデータ構造体を記憶するキャッシュ内の空間に対応する。サンプルを収集しそしてサンプルをフィルタして、少なくとも1つのトランザクションが当該変数又はデータ構造体を含むようなサンプル対を得ることにより、キャッシュ競合の割合を推定し、そして競合のソースである他の特定のプログラム変数又はデータ構造体を識別することができる。
この推定は、実行プログラム又はシステム内でオンラインプログラムデバッギング又は性能問題の最適化を行い得るように動的に実行することができる。この技術は、プログラマーが、検査されている実行プログラムにおける競合を識別することにより、メモリシステム性能を対話式にデバッグできるようにする。同様の技術を適応ランタイムソフトウェアにより使用して、動的なデータリロケーションにより重大なキャッシュ競合を回避することができる。
【0041】
メモリトランザクションの特性の統計値の推定
メモリシステムトランザクションに関するサンプリングされた情報は、メモリシステムアクティビティに関する種々の統計値を計算するのに使用できる。このプロセス500が図5に示されており、これは、次の段階により上記のハードウェアを用いて達成される。
ステップ1:当該メモリトランザクションを識別するために選択ファンクションを選ぶ(510)。
ステップ2:選択されたメモリシステムトランザクションに関する情報を記録する(520)。
ステップ3:記録された状態情報をソフトウェアへ通信する(530)。
【0042】
ステップ4:取り上げるべきと考えられるトランザクションのサブセットを選択する(540)。
ステップ5:このサブセットを分析して種々の統計値又は特性を推定する(550)。
記録された状態情報は、各メモリトランザクションに関する豊富な情報を含み、多数の有効な統計値を計算することができる。
サンプルの情報は、次のものを含むことができる。
− メモリトランザクションにより参照されたアドレス、
− コンテクスト識別情報、例えば、プロセス識別子、スレッド識別子、ハードウェアコンテクスト識別子、アドレススペース番号、直接メモリアクセスデバイス識別子、又はキャッシュコヒレンシートラフィックのプロセッサ識別子、
− トランザクションにより参照されたメモリハイアラーキーの各レベルに対する状態情報、例えば、キャッシュヒット/ミス、ダーティ/クリーン、及び/又は共用/排他的状態。
【0043】
記録された状態情報の分析
個々のメモリシステムトランザクションをサンプリングすると、メモリシステムの振る舞いの特性の分布に関する種々の統計学的メトリックを計算することができる。例えば、メモリ要求に応じるように待ち時間の分布を推定したり、又はメモリハイアラーキーの特定レベル又は領域におけるキャッシュヒットの割合を推定したりすることができる。フィルタ機構を使用して、記録された当該トランザクションのサブセットを識別し、当該メモリシステムの特定の観点、例えば、メモリハイアラーキーの特定領域又はレベルへの遷移、或いは読み取り、書き込み又は無効化のようなトランザクションの特定のクラスへの遷移に統計学的な焦点を合わせることができる。
【0044】
1組の当該サンプルが識別された後に、標準的な統計学的技術を使用して、当該サンプルに関する平均値、標準偏差、ヒストグラム及び他の統計値を導出することができる。平均値を使用して、キャッシュヒット又はミス或いは追放のような図2のライン290上の特定事象に対する発生率を推定することができる。
又、読み取り、書き込み或いは無効化による要求の断片を推定することもできる。これらの率は、プロセス当たりのキャッシュヒット率、又はスレッドが経験する平均メモリシステム待ち時間のようなメトリックを推定するように、特定のコンテクストに対しても推定することができる。又、特定のコンテクストにより消費されるメモリハイアラーキのレベルの断片を推定することもできる。
標準的なエラー推定技術を使用して、導出される統計値の精度について信頼性のあるインターバルを得ることができる。特に、特定の特性をもつ多数のサンプルを伴う統計値については、その特性をもつサンプルの数の平方根の逆数を使用してエラー境界を近似することができる。又、これらのエラー境界を使用して、選択されたトランザクションがサンプリングされる率を動的に制御し、精度とサンプリングオーバーヘッドとの妥協をとることができる。
記録された状態情報が、メモリトランザクションを処理するのに必要な待ち時間の形態、又は2つの連続的にサンプリングされたメモリトランザクション間の待ち時間の形態の待ち時間情報を含むときには、この情報を使用して、待ち時間に基づく統計値を計算することができる。待ち時間は、一般に、プロセッサクロックサイクルのような時間の単位で測定されるが、処理されるメモリトランザクションの数のような他の単位で測定されてもよい。
【0045】
命令及びデータのリロケーション
非常に一般的な意味では、プロセッサは、データに対して作用する命令を実行する。多数の近代的なコンピュータシステムでは、命令及びデータは、通常、異なるメモリページを使用して個別の構造体として維持される。というのは、命令に対するアクセスパターンが、データの場合とかなり異なるからである。命令及びデータに対する仮想−物理メモリマッピングは、通常、オペレーティングシステムにより実行される。或いは又、構造体のリロケーションを手動で行うこともできるし、又はコンパイラー、リンカー及びローダーにより行うこともできる。あるシステムは、命令が実行されるときに構造体を動的にリロケーションすることができる。
【0046】
ここに述べるハードウェアを使用し、ソフトウェアの種々の当該断片にフィードバックを与えることができる。例えば、サンプリングされたメモリトランザクションの状態情報を使用して、例えば、ページ再マッピングポリシーを導出するか、或いはコンパイラー、リンカー又はローダーへフィードバックを与えることにより自己干渉を回避することができる。
例えば、ソフトウェアは、ページレベルで競合アドレスを収集し、オペレーティングシステムにより実施される動的なページ再マッピングアルゴリズムを通知することができる。又、プログラマー及びユーザに対して潜在的な性能問題を識別する当該プロファイリングツールを与えることもできる。
例えば、ここで、データが追放されるときにデータがどれほど頻繁にダーティであるか、そしてDMA転送又はキャッシュコヒレンシープロトコルトランザクションがどれほど頻繁に生じるかを推定することができ、メモリシステムがいかに効率的に使用されるかの意味を与えることができる。
【0047】
マイクロプロセッサコンピュータシステムにおけるページリロケーション及び移動
非均一メモリアクセス(NUMA)マルチプロセッサシステムでは、各プロセッサが有するメモリシステムのある部分は、メモリシステムの他の部分よりも迅速に(又は広い帯域巾で)アクセスすることができる。性能を改善するために、プロセッサにより頻繁にアクセスされるデータ(プログラムデータ又は命令のいずれか)は、そのプロセッサにより迅速にアクセスできるメモリシステムの領域へ移動することができる。
この移動は、2つの方法で行うことができる。データは、データの多数のコピーを形成することにより複写することができる。理想的には、データは、メモリシステム全体にわたり入念に「散乱」される。或いは又、実際にデータを低待ち時間又は広帯域巾メモリへ移動することによりデータを移動することもできる。当該ステップ600が図6に示されており、次の段階を含む。
【0048】
ステップ1:選択されたメモリシステムトランザクションに関する情報を記録する(610)。
ステップ2:頻繁にアクセスされるメモリ領域(例えば、ページ)を識別する(620)。
ステップ3:複写及び移動のための候補を識別する(630)。
ステップ4:特定のメトリックを改善するために適当なデータを複写及び/又は移動する(640)。
このプロセスに対するかぎは、ステップ2及びステップ3で実施される。例えば、参照された仮想及び物理アドレスに関する情報のようなデータのどの断片がどのプロセッサにより頻繁にアクセスされるか、そしてデータのどの断片が実質的なキャッシュミスを被るか又はそれらのアクセスにおいて長い待ち時間を受けるかに関する情報を使用して、複写及び/又は移動の判断を誘導することができる。
【0049】
アクセスの形式(例えば、読み取り、書き込み及び無効化)に関する情報は、データを複写すべきか、移動すべきか又はその場所に放置すべきかの判断を更に誘導することができる。例えば、多数のプロセッサにより頻繁に書き込まれるデータ(例えば、書き込み共用ページ)は、おそらく、複写又は移動されてはならず、一方、頻繁に読み取られるが滅多に書き込まれないデータ(例えば、読み取り共用ページ)は、複写のための良好な候補である。単一のプロセッサのみによって著しくアクセスされるページは、アクセス側プロセッサに近いメモリへ移動するための良好な候補である。この情報は、ここに示すように、メモリシステムトランザクション情報の統計学的なサンプリングにより収集することができる。
メモリシステムトランザクションに関する情報は、動的に収集し、そしてオンラインで使用して、コンピュータシステムの複写及び移動ポリシーを動的に制御することができる。通常、複写及び移動は、オペレーティングシステムによって処理されるが、他のソフトウェア又はハードウェアレイヤにより処理することもできる。
【0050】
複写又は移動ポリシーを改善のために試みることができる潜在的な性能メトリックは多数あり、全システムスループットの増加、特定の高優先順位ジョブに対するスループットの増加、プロセッサとメモリとの間のトラフィックの減少、全メモリ待ち時間の減少、又はシステム性能の全体的な増加を含む。
コンテクストスケジューリング
ハイアラーキーメモリにおけるキャッシュは、種々のハードウェアコンテクストから発せられるデータを共用するので、異なるハードウェアコンテクストにおいて実行されるスレッドがキャッシュ内のラインに対して競合する。それ故、リソースの競合を最小にするようにスレッドをスケジューリングすることが所望される。
【0051】
入念なスケジューリングは、異なるハードウェアコンテクストからのメモリ参照が非常に微細粒度のレベルでインターリーブされ、そしてこれらのコンテクストがキャッシュのようなメモリシステムリソースを共用するときに関連性が高められるようなマルチスレッド型プロセッサに対して特に重要である。しかしながら、これは、キャッシュが、スケジューリング量子化の間にスレッドによりなされるメモリトランザクションの数に対して充分に大きいときには単一スレッド型のプロセッサに対しても重要である。次いで、次の量子が特定のコンテクストに割り当てられるときに何らかの有効なキャッシュ内容を保持することが要望される。これら全てのスケジューリング判断は、オンラインオペレーション中にメモリシステムトランザクションの統計学的サンプリングから収集されるフィードバックに動的に適応することができる。
【0052】
これは、ここに述べるように、メモリシステムトランザクション情報をサンプリングすることにより実行できる。オペレーティングシステムソフトウェアは、スケジューリングの判断を行うときにスレッド又はプロセッサのメモリ参照パターンの種々の特徴を考慮することから利益を得ることができる。このプロセスが図7に示されている。
ステップ710は、特定のコンテクストに対してトランザクションをサンプリングする。キャッシュモニタの一部分として古い及び新しいコンテクスト識別子を捕獲することにより、オペレーティングシステムソフトウェアは、異なるコンテクストがキャッシュにおいて共用及び競合する程度を統計学的に推定することができる(720)。これらの推定値は、ステップ731−733においてコンテクストスケジューラにより使用され、コンテクストを優先的にスケジューリングすることができる。以下に述べるスケジューリング判断731−733は、メモリリソースに対して競合するコンテクスト間の共用の程度を増加するか、又はメモリリソースに対して競合するコンテクスト間の競合共用を減少することを含む種々のメトリックを考慮することから利益を得ることができる。
【0053】
同時スケジューリング
例えば、キャッシュを控えめにのみ使用するスレッドと同時に大きなキャッシュフットプリントを有するスレッドを、これらスレッドのメモリシステム需要が互いに相補的であることから、優先的に同時スケジューリングして、共用性を高めることに意味がある。又、できるだけキャッシュの非重畳領域を使用することに意味がある。
他方、オペレーティングシステムソフトウェアは、スレッドがキャッシュから有効なデータを互いに追放するときに多数の更なる競合ミスを招くことから、例えば、大きなキャッシュフットプリントをもつ2つのスレッドの同時スケジューリングをできるだけ回避するように、リソース競合を最小にし、競合を減少するように努めなければならない。
【0054】
共用をベースとするスケジューリング
共用をベースとする又は比例的共用のスケジューリングポリシーは、メモリハイアラーキーにおいて各キャッシュメモリの特定の共用を各コンテクストに与えることを希望するのが理想的である。本発明のサンプリング技術では、ステップ720において、各コンテクストにより占有されるキャッシュの部分を統計学的に推定することができる。これは、スケジューラが、メモリシステムリソースの特定の共用を各プロセスに与えるといったメトリックに対する判断をベースとして、コンテクスト間でメモリシステムリソースをそれらの必要性に比例して有効に区画化できるようにする。
【0055】
割り当てをベースとするスケジューリング
スケジューリングすることのできる各コンテクストには、それが使用できるキャッシュの量のような割り当てられたリソースを関連させることができる。割り当てられた以上の共用を使用するコンテクストは、低速化又は保留することができる。同様に、割り当てられた共用を充分に使用しないコンテクストは、有利なものとなる。あるコンテクストが保留される間に、他のコンテクストは、キャッシュの共用を増加することができる。保留されたコンテクストは、他のアクティブなコンテクストからのキャッシュ圧力が増加した結果としてそのキャッシュ使用が減少した後に継続することが許される。これは、模擬による以外、キャッシュライン又はブロックレベルにおいて情報を一般的に監視できない既知の解決策と区別し得るものである。
これら全てのスケジューリング判断は、オンラインのオペレーション中にメモリシステムトランザクションの統計学的サンプリングから収集されるフィードバックに動的に適応させることができる。
以上、特定の実施形態について本発明を詳細に説明した。上述した実施形態に対して変更を加えても、全ての又は幾つかの効果が達成されることは当業者に明らかであろう。それ故、本発明の精神及び範囲内に入るこのような全ての変更や修正は特許請求の範囲内に包含されるものとする。
【図面の簡単な説明】
【図1】本発明によるメモリトランザクションサンプリングを伴うコンピュータシステムのブロック図である。
【図2】好ましい実施形態によりメモリ性能を監視するためのサンプリングハードウェアを示すブロック図である。
【図3】サンプル情報を記憶するためのサンプリングバッファのブロック図である。
【図4】コンピュータシステムコンテクスト間のメモリシステム相互作用に関する共用及び競合統計値を推定するための方法のフローチャートである。
【図5】メモリシステムトランザクションの特性の統計値を推定する方法のフローチャートである。
【図6】メモリシステムの振る舞いに関する統計値を用いてデータ複写及び移動の判断を行う方法を示すフローチャートである。
【図7】メモリシステム相互作用に関する統計値を使用してコンテクストスケジューリングの判断を行う方法を示すフローチャートである。
【符号の説明】
100 コンピュータシステム
110 プロセッサ
111 プロセッサパイプライン
112 命令キャッシュ(Iキャッシュ)
113 データキャッシュ(Dキャッシュ)
119 ハードウェア
120 メモリ
121 ボードレベルキャッシュ(Bキャッシュ)
122 揮発性メモリ(DRAM)
123 永続的メモリ
130 入力/出力インターフェイス
140 バスライン
200 キャッシュ
201 ブロック
202 ライン
210 タグ
220 データ
230 状態情報
240 変換ルックアサイドバッファ(TLB)
250 トリガーファンクション
260 選択ファンクション
265 カウンタ
301−303 サンプリングバッファ
280 サンプリングソフトウェア
Claims (24)
- 複数のレベルに構成され、アドレスにデータを記憶するハイアラーキーメモリを有するコンピュータシステムの状態をサンプリングするための装置において、
上記ハイアラーキーメモリによって処理されるべきメモリトランザクションを第1状態及びトランザクション情報に基づいて選択するセレクタと、
第2状態及びトランザクション情報に基づいて上記セレクタを作動するトリガーと、
上記選択されたメモリトランザクションをハイアラーキーメモリにおいて処理する間に、選択されたメモリトランザクションで識別されるコンピュータシステムの状態を記憶するサンプラーとを備え、
上記セレクタが、(i)どのメモリトランザクションが選択されるかに従い、複数のトランザクションモードの一つを記憶するためのモードレジスタと、(ii)どのメモリトランザクションが選択されるかに従い、上記第1状態を記憶するモニタレジスタと、を含むことを特徴とする装置。 - サンプリングされた状態はバッファに記憶され、そして読み取られるべき状態をバッファが記憶するときに信号を発生する手段を更に備えた請求項1に記載の装置。
- 上記セレクタは、モード及び第1状態の論理的な組合せに基づく請求項1に記載の装置。
- 上記セレクタは、カウンタにより上記トリガーに接続され、このカウンタは、セレクタが作動される割合を決定し、そしてこの割合は、トリガー事象をカウントすることにより決定される請求項1に記載の装置。
- 上記トリガー事象はクロックサイクルである請求項4に記載の装置。
- 上記トリガー事象はトランザクションである請求項4に記載の装置。
- 上記トリガー及びセレクタは、各々、変換ルックアサイドバッファからトランザクション情報を受け取り、この変換ルックアサイドバッファは、仮想アドレスを物理アドレスに変換する請求項1に記載の装置。
- 各トランザクションモードがメモリレベルに基づくトランザクションを含み、メモリレベルは、オンチップキャッシュ、オフチップキャッシュ及びメインメモリを含む請求項1に記載の装置。
- 各トランザクションモードがトランザクションのソースに基づくトランザクションを含み、このソースは、命令、直接メモリアクセスオペレーション及びデータコヒレンスメッセージを含む請求項1に記載の装置。
- 各トランザクションモードがコンテクストに基づくトランザクションを含み、このコンテクストは、プロセス、スレッド、アドレススペース及びハードウェアコンテクストを含む請求項1に記載の装置。
- 上記バッファは複数のフィールドを含み、これらフィールドは、選択されたトランザクションによりアクセスされるアドレスに記憶されたデータの状態、アドレスの状態、トランザクションによりアクセスされるデータのアドレス、トランザクションが発生するところのコンテクストの識別子、トランザクションのソースの識別子、及びトランザクションが処理される間に測定される待ち時間とを記憶する請求項2に記載の装置。
- 上記状態は、内部のメモリシステム構造体の状態を含み、この内部のメモリシステム構造体は、書き込みバッファ、ビクティムバッファ、変換ルックアサイドバッファ、ミスアドレスファイル、及びメモリトランザクション待ち行列を含み、そして上記状態は、内部のメモリシステム構造体におけるアクティブなエントリの数を含む請求項1に記載の装置。
- 上記カウンタには、サンプリングのレートを決定するための所定値がロードされる請求項4に記載の装置。
- 上記所定値は、ある範囲の数字からランダムに選択される請求項13に記載の装置。
- 上記トリガーは、トランザクションの形式に基づいて作動し、この形式は、読み取り、書き込み及び無効化トランザクションを含む請求項1に記載の装置。
- 上記選択されたトランザクションは、所定の同じ選択基準を満足する一連のトランザクションを含む請求項1に記載の装置。
- 上記セレクタ及びトリガーはソフトウェアでセットできる請求項1に記載の装置。
- 選択されたトランザクションを処理する前後に、上記状態を記録する請求項1に記載の装置。
- 上記第2状態は、連続的に選択されたトランザクションが処理される間にカウントされる事象を含む請求項1に記載の装置。
- 上記事象は、クロックサイクル及びトランザクションを含む請求項19に記載の装置。
- 上記状態は、トランザクションの特定の仮想アドレスをそれに対応する物理アドレスに変換するのに使用される変換ルックアサイドバッファのエントリのインデックスを含む請求項1に記載の装置。
- 上記状態は、トランザクションの部分アドレスを含み、この部分は、メモリページへのインデックスに対応する請求項1に記載の装置。
- 複数のレベルに構成され、アドレスにデータを記憶するハイアラーキーメモリを有するコンピュータシステムの状態をサンプリングするための装置において、
上記ハイアラーキーメモリによって処理されるべきメモリトランザクションを第1状態及びトランザクション情報に基づいて選択するセレクタと、
第2状態及びトランザクション情報に基づいて上記セレクタを作動するトリガーと、
上記選択されたメモリトランザクションをハイアラーキーメモリにおいて処理する間に、選択されたトランザクションで識別されるコンピュータシステムの状態を記憶するサンプラーとを備え、
上記セレクタが、(i)どのメモリトランザクションが選択されるかに従い、複数のトランザクションモードの一つを記憶するためのモードレジスタと、(ii)どのメモリトランザクションが選択されるかに従い、上記第1状態を記憶するモニタレジスタとを含み、
さらに、上記記憶されたトランザクションモードがアドレスに従い選択され、そのアドレスは、物理ブロックアドレス、キャッシュライン番号、物理メモリアドレス、及び仮想メモリアドレスを含む、ことを特徴とする装置。 - 上記記憶されたトランザクションモードは、さらに、プロセス、スレッド、アドレス空間、及びハードウェアコンテクストに基づき選択される請求項23に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/979822 | 1997-11-26 | ||
US08/979,822 US6202127B1 (en) | 1997-11-26 | 1997-11-26 | Apparatus for spatial and temporal sampling in a computer memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11328019A JPH11328019A (ja) | 1999-11-30 |
JP4371452B2 true JP4371452B2 (ja) | 2009-11-25 |
Family
ID=25527176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37536198A Expired - Fee Related JP4371452B2 (ja) | 1997-11-26 | 1998-11-26 | コンピュータメモリシステムにおいて空間的及び時間的サンプリングを行う装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6202127B1 (ja) |
EP (1) | EP0918288B1 (ja) |
JP (1) | JP4371452B2 (ja) |
DE (1) | DE69821196T2 (ja) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6601149B1 (en) * | 1999-12-14 | 2003-07-29 | International Business Machines Corporation | Memory transaction monitoring system and user interface |
US6725334B2 (en) * | 2000-06-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for exclusive two-level caching in a chip-multiprocessor |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
US7007205B1 (en) | 2001-02-15 | 2006-02-28 | Silicon Graphics, Inc. | Method and apparatus for recording trace data in a microprocessor based integrated circuit |
US6738885B1 (en) * | 2001-02-15 | 2004-05-18 | Silicon Graphics, Inc. | Device and method for storing information in memory |
US7769974B2 (en) * | 2004-09-10 | 2010-08-03 | Microsoft Corporation | Increasing data locality of recently accessed resources |
US7287128B1 (en) | 2005-01-25 | 2007-10-23 | Seagate Technology Llc | Write on reference mesh |
US7991959B2 (en) * | 2005-05-16 | 2011-08-02 | Texas Instruments Incorporated | Visualizing contents and states of hierarchical storage systems |
US7603521B2 (en) * | 2005-05-16 | 2009-10-13 | Texas Instruments Incorporated | Prioritizing caches having a common cache level |
US7779206B2 (en) * | 2005-05-16 | 2010-08-17 | Texas Instruments Incorporated | Cache inspection with inspection bypass feature |
US7739453B2 (en) * | 2005-05-16 | 2010-06-15 | Texas Instruments Incorporated | Providing information associated with a cache |
US20060259696A1 (en) * | 2005-05-16 | 2006-11-16 | Texas Instruments Incorporated | Determining differences between cached copies of an address |
US20060259695A1 (en) * | 2005-05-16 | 2006-11-16 | Texas Instruments Incorporated | Visualizing contents and states of hierarchical storage systems across multiple cores |
US7788642B2 (en) * | 2005-05-16 | 2010-08-31 | Texas Instruments Incorporated | Displaying cache information using mark-up techniques |
US7673101B2 (en) * | 2005-05-16 | 2010-03-02 | Texas Instruments Incorporated | Re-assigning cache line ways |
US20060259701A1 (en) * | 2005-05-16 | 2006-11-16 | Texas Instruments Incorporated | Providing cache status information across multiple cache levels |
US7434002B1 (en) * | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US7581064B1 (en) | 2006-04-24 | 2009-08-25 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US8095931B1 (en) * | 2006-04-27 | 2012-01-10 | Vmware, Inc. | Controlling memory conditions in a virtual machine |
US8949295B2 (en) | 2006-09-21 | 2015-02-03 | Vmware, Inc. | Cooperative memory resource management via application-level balloon |
US8131941B2 (en) * | 2007-09-21 | 2012-03-06 | Mips Technologies, Inc. | Support for multiple coherence domains |
US20090089510A1 (en) | 2007-09-28 | 2009-04-02 | Mips Technologies, Inc. | Speculative read in a cache coherent microprocessor |
US8392663B2 (en) * | 2007-12-12 | 2013-03-05 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
US20090248988A1 (en) * | 2008-03-28 | 2009-10-01 | Mips Technologies, Inc. | Mechanism for maintaining consistency of data written by io devices |
JP5256948B2 (ja) * | 2008-09-04 | 2013-08-07 | 富士通株式会社 | キャッシュ論理検証装置、キャッシュ論理検証方法およびキャッシュ論理検証プログラム |
US8418146B2 (en) * | 2008-11-26 | 2013-04-09 | Microsoft Corporation | Sampling techniques for dynamic data-race detection |
US8583875B1 (en) | 2010-07-13 | 2013-11-12 | Vmware, Inc. | Efficient readable ballooning of guest memory by backing balloon pages with a shared page |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
CN103620547B (zh) | 2011-01-27 | 2018-07-10 | 英特尔公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
US9684600B2 (en) * | 2011-11-30 | 2017-06-20 | International Business Machines Corporation | Dynamic process/object scoped memory affinity adjuster |
US9712453B1 (en) | 2012-03-26 | 2017-07-18 | Amazon Technologies, Inc. | Adaptive throttling for shared resources |
US10152409B2 (en) | 2012-04-30 | 2018-12-11 | Vmware, Inc. | Hybrid in-heap out-of-heap ballooning for java virtual machines |
US9852054B2 (en) | 2012-04-30 | 2017-12-26 | Vmware, Inc. | Elastic caching for Java virtual machines |
US9015203B2 (en) | 2012-05-31 | 2015-04-21 | Vmware, Inc. | Balloon object feedback for Java Virtual Machines |
US9940228B2 (en) | 2012-06-14 | 2018-04-10 | Vmware, Inc. | Proactive memory reclamation for java virtual machines |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
WO2014151691A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | Method and apparatus for guest return address stack emulation supporting speculation |
US10140216B2 (en) * | 2016-01-21 | 2018-11-27 | Arm Limited | Measuring address translation latency |
DE102018128045A1 (de) | 2018-11-09 | 2020-05-14 | Infineon Technologies Ag | Behandlung von Ausnahmen in einem Programm |
US11048637B2 (en) * | 2019-06-18 | 2021-06-29 | Samsung Electronics Co., Ltd. | High-frequency and low-power L1 cache and associated access technique |
US11144356B2 (en) * | 2019-10-30 | 2021-10-12 | International Business Machines Corporation | Dynamic determination of memory requirements for function as a service multi-invocation flows |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6047623B2 (ja) | 1982-02-12 | 1985-10-22 | 株式会社日立製作所 | アドレス変換方式 |
US4583165A (en) | 1982-06-30 | 1986-04-15 | International Business Machines Corporation | Apparatus and method for controlling storage access in a multilevel storage system |
US5282274A (en) | 1990-05-24 | 1994-01-25 | International Business Machines Corporation | Translation of multiple virtual pages upon a TLB miss |
US5151981A (en) * | 1990-07-13 | 1992-09-29 | International Business Machines Corporation | Instruction sampling instrumentation |
US5418973A (en) * | 1992-06-22 | 1995-05-23 | Digital Equipment Corporation | Digital computer system with cache controller coordinating both vector and scalar operations |
US5623627A (en) * | 1993-12-09 | 1997-04-22 | Advanced Micro Devices, Inc. | Computer memory architecture including a replacement cache |
US5603004A (en) * | 1994-02-14 | 1997-02-11 | Hewlett-Packard Company | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system |
EP0689141A3 (en) * | 1994-06-20 | 1997-10-15 | At & T Corp | Disruption-based hardware support for system performance profiling |
US5608892A (en) * | 1995-06-09 | 1997-03-04 | Alantec Corporation | Active cache for a microprocessor |
JPH0997214A (ja) | 1995-09-29 | 1997-04-08 | Internatl Business Mach Corp <Ibm> | 補助プロセッサのためのアドレス変換を含む情報処理システム |
-
1997
- 1997-11-26 US US08/979,822 patent/US6202127B1/en not_active Expired - Lifetime
-
1998
- 1998-11-25 DE DE69821196T patent/DE69821196T2/de not_active Expired - Lifetime
- 1998-11-25 EP EP98309671A patent/EP0918288B1/en not_active Expired - Lifetime
- 1998-11-26 JP JP37536198A patent/JP4371452B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0918288A3 (en) | 2000-01-12 |
DE69821196D1 (de) | 2004-02-26 |
DE69821196T2 (de) | 2004-09-02 |
EP0918288A2 (en) | 1999-05-26 |
EP0918288B1 (en) | 2004-01-21 |
US6202127B1 (en) | 2001-03-13 |
JPH11328019A (ja) | 1999-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4371452B2 (ja) | コンピュータメモリシステムにおいて空間的及び時間的サンプリングを行う装置 | |
US6442585B1 (en) | Method for scheduling contexts based on statistics of memory system interactions in a computer system | |
EP0919923B1 (en) | Method for estimating statistics of properties of memory system interactions among contexts in a computer system | |
US6332178B1 (en) | Method for estimating statistics of properties of memory system transactions | |
US6374367B1 (en) | Apparatus and method for monitoring a computer system to guide optimization | |
US7434002B1 (en) | Utilizing cache information to manage memory access and cache utilization | |
US7581064B1 (en) | Utilizing cache information to manage memory access and cache utilization | |
Li et al. | Locality-driven dynamic GPU cache bypassing | |
US7962314B2 (en) | Mechanism for profiling program software running on a processor | |
US9911508B2 (en) | Cache memory diagnostic writeback | |
US10394714B2 (en) | System and method for false sharing prediction | |
CN108475236B (zh) | 测量地址转换延迟 | |
JPH0830494A (ja) | システム性能をプロファイルするための割り込みベースのハードウエア・サポート | |
WO2009022239A2 (en) | System for and method of capturing performance characteristics data from a computer system and modeling target system performance | |
Martonosi et al. | Integrating performance monitoring and communication in parallel computers | |
US10402292B2 (en) | System and method for detecting false sharing | |
US6892173B1 (en) | Analyzing effectiveness of a computer cache by estimating a hit rate based on applying a subset of real-time addresses to a model of the cache | |
US11467960B1 (en) | Access frequency caching hardware structure | |
Zhang et al. | Understanding the dynamic caches on intel processors: Methods and applications | |
US20230161678A1 (en) | Classification of different types of cache misses | |
Xiao et al. | FLORIA: A fast and featherlight approach for predicting cache performance | |
Bock | Collaborative hardware-software management of hybrid main memory | |
WO2008058292A2 (en) | System for and method of capturing application characteristics from a computer system and modeling target system | |
Calhoun et al. | Optimizing kernel block memory operations | |
Gupta | Software and hardware techniques for mitigating the multicore interference problem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050915 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20050915 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090422 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090511 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090804 |
|
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: 20090820 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090901 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120911 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130911 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130911 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130911 Year of fee payment: 4 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130911 Year of fee payment: 4 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130911 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |