【手続補正書】
【提出日】平成17年11月9日(2005.11.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】  システムの複数の処理段を有するプロセッサパイプラインにおいて命令をサンプリングする装置であって、
パイプラインの第１段へ命令をフェッチする手段と；
そのフェッチされた命令のいずれかのサブセットを選択された命令として識別するのに、その選択された命令を一つもしくはそれ以上の指示フイールドで増補することにより識別する手段と；
選択された命令のいずれかがパイプラインのいずれかの段にある間に前記のシステムの状態情報を与える手段と；
全ての選択された命令がパイプラインを出てしまったことをソフトウェアアプリケーションに通知して、ソフトウェアアプリケーションがいずれの状態情報も読み取れるようにする手段と
を備えたことを特徴とする装置。
【請求項２】  前記の選択された命令は、パイプラインにより完全に処理される有効命令と、パイプラインを出る前にアボートされる有効命令と、パイプラインを出る前に部分的に処理される無効命令とを含む請求項１に記載の装置。
【請求項３】  一つもしくはそれ以上の指示フィールドの中の少なくとも一つは、前記の選択された命令が監視のために選択されたことを指示している請求項１に記載の装置。
【請求項４】  一つもしくはそれ以上の指示フィールドの中の少なくとも一つはサンプルビットを含み、装置は前記のシステムの状態情報を与える手段をアクチベートするようサンプルビットをアサートする手段を備える請求項３に記載の装置。
【請求項５】  一つもしくはそれ以上の指示フィールドの中の第２のものは、前記の選択された命令と関連の命令番号を含む請求項３に記載の装置。
【請求項６】  それぞれの選択された命令と関連の状態情報を一つもしくはそれ以上の指示フィールドの中の少なくとも一つによりインデックスされるレジスタに蓄積する請求項１に記載の装置。
【請求項７】  前記の状態情報は一対の選択された命令の間で生じる事象の事象カウントを含む請求項１に記載の装置。
【請求項８】  前記の事象カウントは一対の選択された命令のフェッチ間に生じるクロックサイクルの数を含む請求項７に記載の装置。
【請求項９】  前記の事象カウントは一対の選択された命令間にフェッチされた命令の数を含む請求項７に記載の装置。
【請求項１０】  前記の事象カウントは一対の選択された命令間にパイプラインの特定の段に入る命令の数を含む請求項７に記載の装置。
【請求項１１】  前記の事象カウントは一対の選択された命令間にフェッチされた分岐命令の数を含む請求項７に記載の装置。
【請求項１２】  前記の事象カウントはプロセッサ、メモリシステム、ネットワーク又はＩ／Ｏサブシステム事象の測定を含む請求項７に記載の装置。
【請求項１３】  特定の事象をカウントする複数のサンプリングカウンタと、
各サンプリングカウンタを特定の値に初期化する手段と、
前記のサンプリングカウンタの少なくとも１つのオーバーフローに応答して前記の識別する手段をアクチベートする手段と
を更に含んでいる請求項１に記載の装置。
【請求項１４】  前記の識別する手段は前記の複数のサンプリングカウンタのどれがオーバーフローするかに基づいて別々の指示フイールドで前記の選択された命令を識別する手段を含む請求項１３に記載の装置。
【請求項１５】  前記の識別する手段はアクチベートされる平均頻度数を示すため各特定値をあるインターバールもしくは間隔の数字からランダムに選択する請求項１３に記載の装置。
【請求項１６】  前記の識別する手段はアクチベートされる平均頻度数を動的に変えるように前記の数字の間隔のサイズを変更する請求項１５に記載の装置。
【請求項１７】  前記のランダムに選択される数字はソフトウェアで計算され、それからハードウェアレジスタに記憶される請求項１５に記載の装置。
【請求項１８】  前記のランダムに選択される数字はハードウェア回路により発生される請求項１５に記載の装置。
【請求項１９】  前記の状態情報は前記の選択された命令を識別する情報を含む請求項１に記載の装置。
【請求項２０】  前記の状態情報は前記の選択された命令のアドレスを含む請求項１９に記載の装置。
【請求項２１】  前記の状態情報は前記の選択された命令を実行するプロセスの識別を含む請求項１９に記載の装置。
【請求項２２】  前記の状態情報はアドレススペース番号を含む請求項１９に記載の装置。
【請求項２３】  前記の状態情報はハードウェアコンテクスト識別子を含む請求項１９に記載の装置。
【請求項２４】  前記の状態情報はスレッド識別子を含む請求項１９に記載の装置。
【請求項２５】  前記のソフトウェアアプリケーションに通知する手段が、全ての選択された命令がパイプラインを出てしまったことを指示するため割り込みを発生する請求項１に記載の装置。
【請求項２６】  全ての選択された命令がパイプラインを出てしまったことを指示するためにソフトウェアアプリケーションがポーリングできるフラグを前記のソフトウェアアプリケーションに通知する手段が含んでいる請求項１に記載の装置。
【請求項２７】  前記の特定の事象は有効なフェッチされた命令である請求項１３に記載の装置。
【請求項２８】  フェッチのレートがクロックにより決定され、そして前記の特定の事象は単一の潜在的なフェッチされた命令に対応するクロックサイクルの小区分である請求項１３に記載の装置。
【請求項２９】  前記の特定の事象はパイプラインのいずれかの特定の段への命令の導入である請求項１３に記載の装置。
【請求項３０】  前記の状態情報は前記の選択された命令の中のリタイア／アボート状態を含む請求項１に記載の装置。
【請求項３１】  前記の状態情報は前記の選択された命令を処理する間に検出されるパイプラインの処理状態を含む請求項１に記載の装置。
【請求項３２】  前記の状態情報は前記の選択された命令が経験する待ち時間を含む請求項１に記載の装置。
【請求項３３】  前記の事象カウントはパイプラインの特定の段に入る一対の選択された命令間に経過するクロックサイクルの数を含む請求項７に記載の装置。
【請求項３４】  システムの複数の処理段を有するプロセッサパイプラインにおいて命令をサンプリングする方法であって、
パイプラインの第１段へ命令をフェッチする段階と；
そのフェッチされた命令のいずれかのサブセットを選択された命令として識別するのに、その選択された命令を一つもしくはそれ以上の指示フイールドで増補することにより識別する段階と；
前記の選択された命令のいずれかがパイプラインのいずれかの段にある間に前記のシステムの状態情報を与える段階と；
全ての選択された命令がパイプラインを出てしまったことをソフトウェアアプリケーションに通知して、ソフトウェアアプリケーションがいずれの状態情報も読み取れるようにする段階と
を備えたことを特徴とする方法。
【請求項３５】  一つもしくはそれ以上の指示フィールドの中の少なくとも一つは前記の選択された命令が監視のために選択されたことを指示している請求項３４に記載の方法。
【請求項３６】  一つもしくはそれ以上の指示フィールドの中の少なくとも一つによりインデックスされるレジスタにそれぞれの選択された命令と関連の状態情報を蓄積する請求項３４に記載の方法。
【請求項３７】  前記の識別する段階が少なくとも一つのサンプリングカウンターのオーバーフローに応答して実施され、サンプリングカウンタを特定の値に初期化し、そして特定の事象をカウントするようにする請求項３４に記載の方法。
【請求項３８】  前記の識別する段階が実行される平均頻度数を示すため各特定値をあるインターバールもしくは間隔の数字からランダムに選択する請求項３７に記載の方法。
【請求項３９】  前記の状態情報が前記の選択された命令を認識する情報を含んでいる請求項３４に記載の方法。