(57)【特許請求の範囲】
【請求項１】
入力されるイベント信号を計数するイベント計数回路において、
入力されるイベント信号の計数値を、イベント信号の種類毎に保持する領域を複数備える所定ビット幅のレジスタと、
前記レジスタの複数の領域にそれぞれ保持されたイベント信号の種類毎の計数値の比に基づいて、前記所定ビット幅のレジスタの最下位ビットからイベント信号の種類に対応するレジスタの領域の最下位ビットへのイベント信号のシフト幅をそれぞれ算出するシフト幅演算回路と、
前記シフト幅演算回路が算出したイベント信号の種類毎のシフト幅に基づいて、入力されるイベント信号を、イベント信号の種類に対応するレジスタの領域の最下位ビットにそれぞれシフトする複数のシフタと、
シフトされた前記イベント信号を、前記レジスタの複数の領域にそれぞれ保持されたイベント信号の計数値のうち同じ種類の計数値に加算し、加算して得られた加算結果を前記レジスタに出力する加算器を有することを特徴とするイベント計数回路。
【請求項２】
前記イベント計数回路はさらに、
前記レジスタの複数の領域にそれぞれ保持されたイベント信号の種類毎の計数値に、それぞれシフトされた前記複数種類のイベント信号を加算した加算結果のいずれかのオーバーフローを検出するオーバーフロー検出回路を有し、
前記レジスタは、
前記オーバーフロー検出回路が、前記いずれかのオーバーフローを検出した場合、前記レジスタの複数の領域にそれぞれ保持されたイベント信号の種類毎の計数値を、全てクリアすることを特徴とする請求項１記載のイベント計数回路。
【請求項３】
前記イベント計数回路はさらに、
前記レジスタの複数の領域にそれぞれ保持されたイベント信号の種類毎の計数値に、それぞれシフトされた前記イベント信号を加算した加算結果のいずれかのオーバーフローを検出するオーバーフロー検出回路と、
入力された前記複数のイベント信号の種類毎の計数値がそれぞれ保持される領域を複数備える所定ビット幅の予備レジスタと、
前記オーバーフロー検出回路が、前記いずれかのオーバーフローを検出しない場合、シフトされた前記イベント信号を、前記レジスタの複数の領域にそれぞれ保持されたイベント信号の計数値のうち同じ種類の計数値にそれぞれ加算し、加算して得られた前記加算結果を前記レジスタに出力し、前記オーバーフロー検出回路が、前記いずれかのオーバーフローを検出した場合、シフトされた前記イベント信号を、前記レジスタの複数の領域にそれぞれ保持されたイベント信号の計数値のうち同じ種類の計数値にそれぞれ加算し、加算して得られた前記加算結果を前記予備レジスタに出力する入力セレクタを有することを特徴とする請求項１記載のイベント計数回路。
【請求項４】
入力されるイベント信号の計数値を、イベント信号の種類毎に保持する領域を複数備える所定ビット幅のレジスタを備えるイベント計数回路の制御方法において、
前記イベント計数回路が有するシフト幅演算回路が、前記レジスタの複数の領域にそれぞれ保持されたイベント信号の種類毎の計数値の比に基づいて、前記所定ビット幅のレジスタの最下位ビットからイベント信号の種類に対応するレジスタの領域の最下位ビットへのイベント信号のシフト幅をそれぞれ算出し、
前記イベント計数回路が有する複数のシフタが、前記シフト幅演算回路が算出したイベント信号の種類毎のシフト幅に基づいて、入力されるイベント信号を、イベント信号の種類に対応するレジスタの領域の最下位ビットにそれぞれシフトし、
前記イベント計数回路が有する複数の加算器が、シフトされた前記イベント信号を、前記レジスタの複数の領域にそれぞれ保持されたイベント信号の計数値のうち同じ種類の計数値に加算し、加算して得られた加算結果を前記レジスタに出力することを特徴とするイベント計数回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベントカウンタを備えるプロセッサに関する。
【背景技術】
【０００２】
一般に、イベントカウンタは、プロセッサ内に組み込まれており、プロセッサの性能評価に使用される内部資源の利用状態やイベントの発生回数などをカウントするカウンタである。イベントカウンタがカウントする項目としては、実行命令数、クロック数、またはキャッシュミス回数などがある。また、イベントカウンタはイベントモニタ、パフォーマンスカウンタなどと呼ばれることもある。
【０００３】
図１３は、従来のイベントカウンタを示す図である。
図１３に示すイベントカウンタ１３０、１３１は、それぞれ、プロセッサ内で発生する複数のイベントのうちユーザなどにより指定されるイベントを選択するセレクタ１３２と、イベントの発生回数を記憶する記憶領域１３３と、セレクタ１３２により選択されたイベントの発生回数と記憶領域１３３に記憶されているイベントの発生回数とを加算し、その加算値を現在のイベントの発生回数として記憶領域１３３に記憶する加算器１３４とを備えて構成される。
【０００４】
このように構成されるイベントカウンタ１３０、１３１において、記憶領域１３３を構成するためのハードウェアを有効利用するため、例えば、図１４に示すように、６４ビットのレジスタ１４０を３２ビットずつの記憶領域１４０−１及び記憶領域１４０−２に分け、下位３２ビットの記憶領域１４０−１を図１３に示すイベントカウンタ１３０の記憶領域１３３として使用し、上位３２ビットの記憶領域１４０−２を図１３に示すイベントカウンタ１３１の記憶領域１３３として使用するものがある（例えば、特許文献１参照）。このように構成されるイベントカウンタでは、同時にカウント可能なイベントの種類の数はレジスタ１４０の数とそのレジスタ１４０内の記憶領域の分割数に依存して決まる。例えば、レジスタ１４０を４つ用意し、それぞれのレジスタ１４０を下位の記憶領域１４０−１と上位の記憶領域１４０−２に分ける場合では、８種類のイベントを同時にカウントすることが可能である。
【０００５】
また、イベントカウンタを構成するハードウェアを有効利用するために、例えば、プロセッサのヒストリーデータを記憶するためのＲＡＭに、イベントの発生回数も記憶させるものがある（例えば、特許文献２参照）。
【特許文献１】特開２０００−２２２２５４号公報
【特許文献２】特開昭６３−０９１７５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ハードウェアを有効利用するためのイベントカウンタとして上述した前者のイベントカウンタでは、複数のイベントカウンタで１つのレジスタを共有するため、レジスタの各記憶領域のそれぞれの大きさは小さく、発生頻度の高いイベントをある記憶領域に記憶させる場合、その記憶領域がオーバーフローする可能性が高くなってしまう。記憶領域がオーバーフローするとそれ以上その記憶領域を使用してイベントをカウントすることができなくなる。また、上述した前者のイベントカウンタでは、発生頻度の低いイベントをある記憶領域に記憶する場合、その記憶領域において使用されない部分が発生しその部分を無駄にしてしまう。このように、上述した前者のイベントカウンタは、ハードウェアの有効利用があまり成されていない。
【０００７】
また、ハードウェアを有効利用するためのイベントカウンタとして上述した後者のイベントカウンタでは、図１３に示すように、イベントカウンタ１３０やイベントカウンタ１３１をイベントの種類と同じ数だけ用意する必要があり、イベントカウンタの大型化が懸念される。
【０００８】
そこで、本発明では、イベントカウンタを構成するハードウェアを有効利用しつつ、複数種類のイベントをカウントする場合でもイベントカウンタが大型化することを抑えることが可能なプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために本発明では、以下のような構成を採用した。
すなわち、本発明のプロセッサは、プロセッサ内で発生するイベントをカウントするイベントカウンタを備える。
【００１０】
上記イベントカウンタは、記憶手段と、測定手段と、記憶領域可変手段とを備える。
上記測定手段は、プロセッサ内で発生するイベントをイベントの種類毎にカウントし、複数に分割された上記記憶手段の各記憶領域にそれぞれ異なる種類のイベントのカウント数を記憶する。
【００１１】
上記記憶領域可変手段は、上記各記憶領域に記憶されるカウント数の比率に基づいて、上記各記憶領域のそれぞれの大きさを可変する。
このように構成されるプロセッサによれば、発生頻度の高いイベントのカウント数を記憶する記憶領域を他の記憶領域に対して大きくすることができるので、発生頻度の高いイベントが発生してもそのイベントのカウント数を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのカウント数を記憶する記憶領域を必要以上に大きくさせないようにすることができる。従って、上記プロセッサのイベントカウンタによれば、記憶手段を有効利用して複数種類のイベントをそれぞれカウントすることができる。
【００１２】
また、上記プロセッサによれば、記憶手段により複数種類のイベントのカウント数を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタが大型化することを抑えることができる。
【発明の効果】
【００１３】
本発明によれば、イベントカウンタを備えるプロセッサにおいて、イベントカウンタを構成するハードウェアを有効利用しつつ、複数種類のイベントをカウントする場合でもイベントカウンタが大型化することを抑えることができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を用いて本発明の実施形態を説明する。
本発明の実施形態のプロセッサに備えられるイベントカウンタは、プロセッサの動作開始から所定時間が経過すると、または、レジスタのある記憶領域がオーバーフローすると、レジスタの各記憶領域にそれぞれ記憶されるイベントの種類毎のカウント数を表示装置に出力すると共に、レジスタの各記憶領域にそれぞれ記憶されるイベントの種類毎のカウント数の比率に応じて、レジスタの各記憶領域のそれぞれの大きさを可変した後、再度イベントをイベントの種類毎にカウントし始める。なお、イベントカウンタの動作前、レジスタの各記憶領域は互いに同じ大きさになっているものとする。
【００１５】
図１（ａ）〜図１（ｃ）は、本実施形態のイベントカウンタの動作概要を説明するための図である。なお、本実施形態のイベントカウンタにおいてイベントのカウントに使用されるレジスタの全体の記憶領域の大きさを６４ビットとする。
【００１６】
まず、本実施形態のイベントカウンタは、図１（ａ）に示すように、レジスタ１０の全体の記憶領域を、イベントＡのカウント数を記憶するための記憶領域１１と、イベントＢのカウント数を記憶するための記憶領域１２とに分ける。
【００１７】
次に、本実施形態のイベントカウンタは、プロセッサの動作開始から所定時間が経過すると、または、記憶領域１１または記憶領域１２のどちらか一方がオーバーフローすると、外部の表示装置にイベントＡ、Ｂのそれぞれのカウント数を表示させると共に、図１（ｂ）に示すように、記憶領域１１に記憶されるイベントＡのカウント数（Ｍ回）と記憶領域１２に記憶されるイベントＢのカウント数（Ｎ回）の比率を計算する。
【００１８】
そして、本実施形態のイベントカウンタは、イベントＡのカウント数とイベントＢのカウント数の比率が３：１であった場合、図１（ｃ）に示すように、記憶領域１１を４８ビット、記憶領域１２を１６ビットにそれぞれ可変する。
【００１９】
次に、本発明の第１実施形態のプロセッサについて説明する。
図２は、本発明の第１実施形態のプロセッサを示す図である。
図２に示すプロセッサ２０に備えられるイベントカウンタ２１は、シフタ２２〜２４と、シフト幅計算回路２５と、加算器２６と、レジスタ２７と、タイマ２８と、出力制御装置２９とを備えて構成されている。
【００２０】
上記シフタ２２〜２４は、それぞれ、イベントのカウント数をイベントの種類毎に同一レジスタ２７に記憶させるために、イベントカウンタ２１に入力されるイベント信号（プロセッサ２０でイベントが１回発生したことを示す信号）を所定シフト幅（所定ビット数）でシフトする。シフタ２２〜２４には予め決められた種類のイベントのイベント信号がそれぞれ入力される。
【００２１】
上記シフト幅計算回路２５は、シフタ２２〜２４のそれぞれの所定シフト幅の計算を行う。
上記加算器２６は、シフタ２２〜２４のうち何れかのシフタから出力されるイベント信号とそのシフタに対応するレジスタ２７の記憶領域に記憶されているイベント信号とを加算しレジスタ２７に出力する。
【００２２】
上記レジスタ２７は、加算器２６から出力されるイベント信号（カウント数）を記憶する。
上記タイマ２８は、プロセッサ２０の動作開始から所定時間までを計測する。
【００２３】
上記出力制御装置２９は、タイマ２８が計測を終了すると、レジスタ２７の各記憶領域に記憶されるイベント信号を表示装置３０に出力し表示装置３０に表示させる。
次に、第１実施形態のイベントカウンタ２１の動作について説明する。
【００２４】
図３は、第１実施形態のプロセッサ２０のイベントカウンタ２１の動作を説明するためのフローチャートである。
まず、イベントカウンタ２１は、プロセッサ２０が実行しているプログラムが終了したか否かを判断する（Ｓ１）。
【００２５】
プログラムが終了したと判断すると（Ｓ１がＹｅｓ）、イベントカウンタ２１は、レジスタ２７の各記憶領域に記憶されているイベント信号を表示装置３０に出力し表示装置３０に表示させる（Ｓ２）。
【００２６】
一方、プログラムが終了していないと判断すると（Ｓ１がＮｏ）、イベントカウンタ２１は、入力されるイベント信号をそのイベント信号に対応するシフタにおいて所定シフト幅シフトし、そのシフトしたイベント信号とレジスタ２７に記憶されているイベント信号とを加算器２６で加算し、その加算値をレジスタ２７に記憶する（Ｓ３）。このように、イベントの種類毎にイベント信号を所定シフト幅シフトすることにより、レジスタ２７の全体の記憶領域をイベントの種類毎に割り当ていることができる。
【００２７】
次に、イベントカウンタ２１は、タイマ２８が計測を終了したか否かを判断する（Ｓ４）。
タイマ２８が計測を終了していないと判断した場合（Ｓ４がＮｏ）、イベントカウンタ２１は、Ｓ１に戻り、プロセッサ２０がプログラムを終了したか否かを判断する。
【００２８】
一方、タイマ２８が計測を終了したと判断した場合（Ｓ４がＹｅｓ）、イベントカウンタ２１は、レジスタ２７の各記憶領域に記憶されているイベント信号を表示装置３０に出力し表示装置３０に表示させる（Ｓ５）。
【００２９】
次に、イベントカウンタ２１は、レジスタ２７の各記憶領域に記憶されているイベント信号を全てクリアすると共に（Ｓ６）、その時点でのイベントの種類毎のイベント信号を加算器２６からシフト幅計算回路２５に送る（Ｓ７）。
【００３０】
そして、イベントカウンタ２１は、シフト幅計算回路２５においてイベントの種類毎のイベント信号の比率に基づいて、シフタ２２〜２４のそれぞれの所定シフト幅を計算した後（Ｓ８）、それら所定シフト幅をシフタ２２〜２４に送り（Ｓ９）、Ｓ１に戻る。
【００３１】
次に、第１実施形態のプロセッサ２０の実施例を説明する。なお、レジスタ２７は、図４（ａ）や図４（ｂ）に示すように、全体の記憶容量を６４ビットとし、レジスタ２７の記憶領域２７−１にイベントＡのイベント信号が記憶され、レジスタ２７の記憶領域２７−２にイベントＢのイベント信号が記憶され、レジスタ２７の記憶領域２７−３にイベントＣのイベント信号が記憶されるものとする。また、初期状態（プロセッサ２０が動作する前の状態）では、図４（ａ）に示すように、記憶領域２７−１は２２ビット（６４／３＝２１．３３３．．．であるため、端数０．３３３．．．に対応する１ビット分は記憶領域２７−１に振り分けている）を保持し、記憶領域２７−２は２１ビットを保持し、記憶領域２７−３は２１ビットを保持しているものとする。すなわち、初期状態において、シフト幅計算回路２５からシフタ２２に出力される所定シフト幅を０ビットとし、シフト幅計算回路２５からシフタ２３に出力される所定シフト幅を２２ビットとし、シフト幅計算回路２５からシフタ２４に出力される所定シフト幅を４３ビットとする。これらの所定シフト幅は、イベントカウンタ２１の初期化の際にシフト幅計算回路２５に入力されるものとする。
【００３２】
まず、プロセッサ２０によりあるプログラムが実行され、イベントＡが１回発生したことを示すイベント信号がシフタ２２に出力されると、シフタ２２に入力されたイベント信号はシフトされることなくそのまま加算器２６に出力される。加算器２６に入力されたイベント信号はレジスタ２７の記憶領域２７−１に記憶されているイベント信号と加算され、再度記憶領域２７−１に記憶される。この一連の動作が繰り返されることにより、イベントＡのカウント数としてのイベント信号が記憶領域２７−１に蓄積されていく。
【００３３】
また、イベントＢが１回発生したことを示すイベント信号がシフタ２３に出力されると、シフタ２３に入力されたイベント信号は２２ビットシフトされて加算器２６に出力される。加算器２６に入力されたイベント信号はレジスタ２７の記憶領域２７−２に記憶されているイベント信号と加算され、再度記憶領域２７−２に記憶される。この一連の動作が繰り返されることにより、イベントＢのカウント数としてのイベント信号が記憶領域２７−２に蓄積されていく。
【００３４】
また、イベントＣが１回発生したことを示すイベント信号がシフタ２４に出力されると、シフタ２４に入力されたイベント信号は４３ビットシフトされて加算器２６に出力される。加算器２６に入力されたイベント信号はレジスタ２７の記憶領域２７−３に記憶されているイベント信号と加算され、再度記憶領域２７−３に記憶される。この一連の動作が繰り返されることにより、イベントＣのカウント数としてのイベント信号が記憶領域２７−３に蓄積されていく。
【００３５】
次に、タイマ２８は、プロセッサ２０の動作開始を検出してからプロセッサ２０の動作サイクルが１０万サイクルになったことを検出すると、出力制御装置２９に表示指示信号を送る。出力制御装置２９は、表示指示信号が入力されると、レジスタ２７の記憶領域２７−１〜２７−３にそれぞれ記憶されているイベント信号を表示装置３０に出力する。このとき、レジスタ２７に記憶されているイベント信号は全てクリアされる。また、イベントＡ〜Ｃの各イベント信号を加算器２６から取り出すための指示がタイマ２８からシフト幅計算回路２５に出力される。
【００３６】
ここで、例えば、プロセッサ２０の動作開始からプロセッサ２０の動作サイクルが１０万サイクルになったときのイベントＡのイベント信号が示すカウント数を６５５３６回、イベントＢのイベント信号が示すカウント数を４９１５２回、イベントＣのイベント信号が示すカウント数を１６３８４回とする。
【００３７】
このとき、シフト幅計算回路２５は、イベントＡ〜Ｃの各イベント信号に基づいて、イベントＡのイベント信号：イベントＢのイベント信号：イベントＣのイベント信号の比率４：３：１を計算する。これにより、図４（ｂ）に示すように、次回のイベントＡ〜Ｃのカウント時の記憶領域２７−１は３２ビットを保持し、記憶領域２７−２は２４ビットを保持し、記憶領域２７−３は８ビットを保持する。そのため、シフト幅計算回路２５は、シフタ２２に所定シフト幅として０ビットを送り、シフタ２３に所定シフト幅として３２ビットを送り、シフタ２４に所定シフト幅として５６ビットを送る。
【００３８】
次に、第２実施形態のプロセッサについて説明する。
図５は、第２実施形態のプロセッサを示す図である。なお、図５に示す第２実施形態のプロセッサ５０において、図２に示す第１実施形態のプロセッサ２０と同じ構成には同じ符号を付しその構成の説明を省略する。
【００３９】
図５に示す第２実施形態のイベントカウンタ５１において、図２に示す第１実施形態のイベントカウンタ２１と異なる点は、レジスタ２７の記憶領域２７−１〜２７−３のうち何れかの記憶領域がオーバーフローしたことを検出するオーバーフロー検出回路５２を、タイマ２８の代わりに備えている点である。
【００４０】
第２実施形態のプロセッサ５０において、加算器２６は、あるシフタから出力されたイベント信号とそのシフタに対応するレジスタ２７の記憶領域に記憶されているイベント信号とを加算し、その加算値をレジスタ２７及びオーバーフロー検出回路５２にそれぞれ出力する。
【００４１】
上記オーバーフロー検出回路５２は、入力される加算値に基づいて、レジスタ２７の何れかの記憶領域がオーバーフローしたことを検出すると、その時点での各イベントのイベント信号をシフト幅計算回路２５に出力する。
【００４２】
第２実施形態のプロセッサ５０において、シフト幅計算回路２５は、オーバーフロー検出回路５２から出力される各イベントのイベント信号に基づいて、シフタ２２〜２４のそれぞれの所定シフト幅を計算し、それら所定シフト幅をシフタ２２〜２４に出力する。
【００４３】
次に、第２実施形態のプロセッサ５０の実施例を説明する。なお、レジスタ２７は、第１実施形態と同様に、全体の記憶容量を６４ビットとし、レジスタ２７の記憶領域２７−１にイベントＡのイベント信号が記憶され、レジスタ２７の記憶領域２７−２にイベントＢのイベント信号が記憶され、レジスタ２７の記憶領域２７−３にイベントＣのイベント信号が記憶されるものとする。また、初期状態では、記憶領域２７−１は２２ビットを保持し、記憶領域２７−２は２１ビットを保持し、記憶領域２７−３は２１ビットを保持しているものとする。
【００４４】
まず、オーバーフロー検出回路５２は、例えば、イベントＡのイベント信号が示すカウント数が（２＾２２−１）回になったことを検出すると、記憶領域２７−１がオーバーフローしたと判断し、出力制御装置２９に表示指示信号を出力すると共に、イベントＡ〜Ｃの各イベント信号をシフト幅計算回路２５に出力する。すると、出力制御装置２９は、レジスタ２７に記憶されているイベントＡ〜Ｃの各イベント信号を表示装置３０に送る。そして、レジスタ２７に記憶されているイベント信号がすべてクリアされる。
【００４５】
ここで、例えば、記憶領域２７−１がオーバーフローを起こしたときのイベントＡのイベント信号が示すカウント数を４１９４３０３回＝（２＾２２−１）回、イベントＢのイベント信号が示すカウント数を３１４５７２７回、イベントＣのイベント信号が示すカウント数を１０４８５７５回とする。
【００４６】
このとき、シフト幅計算回路２５は、イベントＡ〜Ｃの各イベント信号に基づいて、イベントＡのイベント信号：イベントＢのイベント信号：イベントＣのイベント信号の比率４：３：１を計算する。これにより、図４（ｂ）に示すように、次回のイベントＡ〜Ｃのカウント時の記憶領域２７−１は３２ビットを保持し、記憶領域２７−２は２４ビットを保持し、記憶領域２７−３は８ビットを保持する。そのため、シフト幅計算回路２５は、シフタ２２に所定シフト幅として０ビットを送り、シフタ２３に所定シフト幅として３２ビットを送り、シフタ２４に所定シフト幅として５６ビットを送る。
【００４７】
このように、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０によれば、発生頻度の高いイベントのイベント信号を記憶する記憶領域を他の記憶領域に対して大きくしているので、発生頻度の高いイベントが発生してもそのイベントのイベント信号を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのイベント信号を記憶する記憶領域が必要以上に大きくさせないようにすることができる。従って、レジスタ２７を有効利用してイベントＡ〜Ｃをそれぞれカウントすることができる。
【００４８】
また、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０によれば、レジスタ２７によりイベントＡ〜Ｃの各イベント信号を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタ２１、５１が大型化することを抑えることができる。
【００４９】
次に、第３実施形態のプロセッサについて説明する。
図６は、第３実施形態のプロセッサを示す図である。なお、図６に示す第３実施形態のプロセッサ６０において、図２に示す第１実施形態のプロセッサ２０と同じ構成には同じ符号を付しその構成の説明を省略する。
【００５０】
図６に示す第３実施形態のイベントカウンタ６１において、図２に示す第１実施形態のイベントカウンタ２１と異なる点は、予備レジスタ６２と、アンド回路６３、６４と、入力セレクタ６５と、出力セレクタ６６とをさらに備えている点である。
【００５１】
第３実施形態のイベントカウンタ６１において、タイマ２８は、計測が終了すると、入力セレクタ６５及び出力セレクタ６６にそれぞれ切替信号ａを出力する。
第３実施形態のイベントカウンタ６１において、出力制御装置２９は、レジスタ２７に記憶される各イベント信号を表示装置３０に出力すると、切替信号ｂをアンド回路６３、６４にそれぞれ出力する。
【００５２】
第３実施形態のイベントカウンタ６１において、シフト幅計算回路２５は、シフタ２２〜２４のそれぞれの所定シフト幅の計算が終了すると、切替信号ｃをアンド回路６３、６４にそれぞれ出力する。このとき、レジスタ２７の各記憶領域に記憶されるイベント信号は全てクリアされる。
【００５３】
上記アンド回路６３は、切替信号ｂ、ｃが入力されると、入力セレクタ６５に切替信号ｄを出力する。また、上記アンド回路６４は、切替信号ｂ、ｃが入力されると、出力セレクタ６６に切替信号ｅを出力する。このとき、予備レジスタ６２の各記憶領域に記憶されるイベント信号は出力制御装置２９を介して表示装置３０に送られる。
【００５４】
上記入力セレクタ６５は、切替信号ａが入力されると、加算器２６から出力されるイベント信号を予備レジスタ６２に出力し予備レジスタ６２に記憶させる。また、入力セレクタ６５は、切替信号ｄが入力されると、加算器２６から出力されるイベント信号をレジスタ２７に出力しレジスタ２７に記憶させる。なお、入力セレクタ６５は、初期状態では、加算器２６から出力されるイベント信号をレジスタ２７に出力しレジスタ２７に記憶させる。
【００５５】
上記出力セレクタ６６は、切替信号ａが入力されると、予備レジスタ６２から所定のイベント信号を取り出し加算器２６に出力する。また、出力セレクタ６６は、切替信号ｅが入力されると、レジスタ２７から所定のイベント信号を取り出し加算器２６に出力する。なお、出力セレクタ６６は、初期状態では、レジスタ２７から所定のイベント信号を取り出し加算器２６に出力する。
【００５６】
すなわち、タイマ２８から切替信号ａが入力セレクタ６５及び出力セレクタ６６に出力されると、加算器２６は、シフタ２２〜２４のうち何れかのシフタから出力されるイベント信号と予備レジスタ６２に記憶されているイベント信号とを加算し、予備レジスタ６２に出力することを繰り返す。また、アンド回路６３から切替信号ｄが入力セレクタ６５に出力されると共にアンド回路６４から切替信号ｅが出力セレクタ６６に出力されると、加算器２６は、シフタ２２〜２４のうち何れかのシフタから出力されるイベント信号とレジスタ２７に記憶されているイベント信号とを加算してレジスタ２７に出力することを繰り返す。なお、予備レジスタ６２は、入力セレクタ６５及び出力セレクタ６６に切替信号ａが入力されてから切替信号ｄ、ｅが入力されるまでの間、予備レジスタ６２の何れの記憶領域もオーバーフローしないような記憶容量をもつものとする。
【００５７】
このように構成しても、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０と同様に、発生頻度の高いイベントのイベント信号を記憶する記憶領域を他の記憶領域に対して大きくすることができるので、発生頻度の高いイベントが発生してもそのイベントのイベント信号を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのイベント信号を記憶する記憶領域が必要以上に大きくさせないようにすることができる。従って、レジスタ２７を有効利用してイベントＡ〜Ｃをそれぞれカウントすることができる。
【００５８】
また、レジスタ２７によりイベントＡ〜Ｃの各イベント信号を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタ６１が大型化することを抑えることができる。
【００５９】
また、タイマ２８が計測を終了してから表示装置３０にイベント信号が送られ、かつ、シフト幅計算回路２５からシフタ２２〜２４にそれぞれ所定シフト幅が送られるまでの間も、予備レジスタ６２によりイベントＡ〜Ｃをそれぞれカウントすることができる。
【００６０】
次に、第４実施形態のプロセッサについて説明する。
図７は、第４実施形態のプロセッサを示す図である。なお、図７に示す第４実施形態のプロセッサ７０において、図５に示す第２実施形態のプロセッサ５０や図６に示す第３実施形態のプロセッサ６０と同じ構成には同じ符号を付しその構成の説明を省略する。
【００６１】
図７に示す第４実施形態のイベントカウンタ７１が図６に示す第３実施形態のイベントカウンタ６１と異なる点は、オーバーフロー検出回路５２を、タイマ２８の代わりに備えている点である。
【００６２】
第４実施形態のイベントカウンタ７１において、オーバーフロー検出回路５２は、入力される加算値に基づいて、レジスタ２７の何れかの記憶領域がオーバーフローしたことを検出すると、その時点での各イベントのイベント信号をシフト幅計算回路２５に出力すると共に、入力セレクタ６５及び出力セレクタ６６にそれぞれ切替信号ａを出力する。
【００６３】
このように構成しても、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０と同様に、発生頻度の高いイベントのイベント信号を記憶する記憶領域を他の記憶領域に対して大きくすることができるので、発生頻度の高いイベントが発生してもそのイベントのイベント信号を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのイベント信号を記憶する記憶領域が必要以上に大きくさせないようにすることができる。従って、レジスタ２７を有効利用してイベントＡ〜Ｃをそれぞれカウントすることができる。
【００６４】
また、レジスタ２７によりイベントＡ〜Ｃの各イベント信号を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタ７１が大型化することを抑えることができる。
【００６５】
また、オーバーフロー検出回路５２がオーバーフローを検出してから表示装置３０にイベント信号が送られ、かつ、シフト幅計算回路２５からシフタ２２〜２４にそれぞれ所定シフト幅が送られるまでの間も、予備レジスタ６２によりイベントＡ〜Ｃをそれぞれカウントすることができる。
【００６６】
次に、第５実施形態のプロセッサについて説明する。
図８は、第５実施形態のプロセッサを示す図である。なお、図８に示す第５実施形態のプロセッサ８０において、図６に示す第３実施形態のプロセッサ６０と同じ構成には同じ符号を付しその構成の説明を省略する。
【００６７】
図８に示す第５実施形態のイベントカウンタ８１が図６に示す第３実施形態のイベントカウンタ６１と異なる点は、セレクタ８２をさらに備えている点である。
上記セレクタ８２は、入力されるイベントＡ〜Ｆのうちレジスタ２７に同時に記憶可能なイベントの種類の数（図８に示す例では３つ）を決定し、その決定したイベントの種類の数を上限としてイベントＡ〜Ｆのうちユーザなどにより指定されるイベントのイベント信号（プロセッサ８０内でそのイベントが１回発生したことを示す信号）をシフタ２２〜２４のうちの何れかのシフタに送る。例えば、セレクタ８２においてイベントＡ、Ｄ、Ｆが選択された場合、レジスタ２７の記憶領域２７−１にはイベントＡのイベント信号が記憶され、記憶領域２７−２にはイベントＤのイベント信号が記憶され、記憶領域２７−３にはイベントＦのイベント信号が記憶される。
【００６８】
このように構成しても、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０と同様に、発生頻度の高いイベントのイベント信号を記憶する記憶領域を他の記憶領域に対して大きくすることができるので、発生頻度の高いイベントが発生してもそのイベントのイベント信号を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのイベント信号を記憶する記憶領域が必要以上に大きくさせないようにすることができる。従って、レジスタ２７を有効利用して３つのイベントをそれぞれカウントすることができる。
【００６９】
また、レジスタ２７により３つのイベントの各イベント信号を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタ８１が大型化することを抑えることができる。
【００７０】
また、シフタ２２〜２４の前段にセレクタ８２を備えているので、セレクタ８２により複数のイベントから任意の種類のイベントを選択することができ、イベントカウンタ８１においてカウント可能なイベントの種類の自由度を上げることができる。
【００７１】
次に、第６実施形態のプロセッサについて説明する。
図９は、第６実施形態のプロセッサを示す図である。なお、図９に示す第６実施形態のプロセッサ９０において、図５に示す第２実施形態のプロセッサ５０や図８に示す第５実施形態のプロセッサ８０と同じ構成には同じ符号を付しその構成の説明を省略する。
【００７２】
図９に示す第６実施形態のイベントカウンタ９１が図８に示す第５実施形態のイベントカウンタ８１と異なる点は、オーバーフロー検出回路５２を、タイマ２８の代わりに備えている点である。
【００７３】
このように構成しても、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０と同様に、発生頻度の高いイベントのイベント信号を記憶する記憶領域を他の記憶領域に対して大きくすることができるので、発生頻度の高いイベントが発生してもそのイベントのイベント信号を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのイベント信号を記憶する記憶領域が必要以上に大きくさせないようにすることができる。従って、レジスタ２７を有効利用して３つのイベントをそれぞれカウントすることができる。
【００７４】
また、レジスタ２７により３つのイベントの各イベント信号を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタ８１が大型化することを抑えることができる。
【００７５】
次に、第７実施形態のプロセッサについて説明する。
図１０は、第７実施形態のプロセッサを示す図である。なお、図１０に示す第７実施形態のプロセッサ１００において、図６に示す第３実施形態のプロセッサ６０と同じ構成には同じ符号を付しその構成の説明を省略する。
【００７６】
図１０に示す第７実施形態のイベントカウンタ１０１が図６に示す第３実施形態のイベントカウンタ６１と異なる点は、セレクタ１０２と、論理回路１０３と、セレクタ１０４とをさらに備えている点である。
【００７７】
上記セレクタ１０２は、入力されるイベントＡ〜Ｆのうちユーザなどにより指定される２つのイベント（例えば、イベントＡ、イベントＤ）を選択し、その選択した２つのイベントを論理回路１０３に出力する。
【００７８】
上記論理回路１０３は、入力されるイベント（例えば、イベントＡ、イベントＤ）をそのままセレクタ１０４に出力すると共に、入力されるイベント同士の論理計算を行いその計算結果であるイベント信号（例えば、イベントＧ、イベントＨ、イベントＩ）をセレクタ１０４に出力する。
【００７９】
上記セレクタ１０４は、入力されるイベント（例えば、イベントＡ、イベントＤ、イベントＧ、イベントＨ、イベントＩ）のうちレジスタ２７に同時に記憶可能なイベントの種類の数（図１０に示す例では３つ）を決定し、その決定したイベントの種類の数を上限として入力されるイベントのうちユーザなどにより指定されるイベントのイベント信号（プロセッサ１００内でそのイベントが１回発生したことを示す信号）をシフタ２２〜２４のうちの何れかのシフタに送る。例えば、セレクタ１０４においてイベントＡ、Ｄ、Ｇが選択された場合、レジスタ２７の記憶領域２７−１にはイベントＡのイベント信号が記憶され、記憶領域２７−２にはイベントＤのイベント信号が記憶され、記憶領域２７−３にはイベントＧのイベント信号が記憶される。
【００８０】
図１１は、演算回路１０３の一例を示す図である。
図１１に示す演算回路１０３は、ＡＮＤ回路１１０と、ＯＲ回路１１１と、ＸＯＲ回路１１２とを備えて構成され、入力される２つのイベントに対して何も論理計算を行わないで出力すると共に、入力される２つのイベントに対してＡＮＤ、ＯＲ、及びＸＯＲの論理計算を行う。
【００８１】
例えば、ＡＮＤ回路１１０において、「命令が発行されない」というイベントと「あるリソース（例えば、バッファ）がフルである」というイベントとのＡＮＤの論理計算を行うと、演算回路１０３から「あるリソースがフルのため命令が発行されない」というイベントが出力される。
【００８２】
例えば、「リソースＡがフルである」というイベント（１）が発生した、または、「リソースＢがフルである」というイベント（２）が発生したとき、イベント（３）が発生するという場合、ＯＲ回路１１１において、イベント（１）とイベント（２）とのＯＲの論理計算を行い、イベント（１）とイベント（２）のどちらかが発生しているため、演算回路１０３から「イベント（３）が発生した」というイベントが出力される。また、上記のＯＲ回路の結果に加えてＸＯＲ回路１１２において、イベント（１）とイベント（２）のＸＯＲの論理演算を行うことで、「イベント（１）とイベント（２）のどちらかが発生している」、「イベント（１）とイベント（２）のどちらも発生している」のイベントが出力される。
【００８３】
このように構成しても、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０と同様に、発生頻度の高いイベントのイベント信号を記憶する記憶領域を他の記憶領域に対して大きくすることができるので、発生頻度の高いイベントが発生してもそのイベントのイベント信号を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのイベント信号を記憶する記憶領域が必要以上に大きくさせないようにすることができる。従って、レジスタ２７を有効利用して３つのイベントをそれぞれカウントすることができる。
【００８４】
また、レジスタ２７により３つのイベントの各イベント信号を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタ１０１が大型化することを抑えることができる。
【００８５】
また、演算回路１０３の前段にセレクタ１０２を備えているので、イベントカウンタ１０１内に演算回路１０３を作り込んだ後も演算回路１０３に入力されるイベントの種類を任意に選択することができるので、イベントカウンタ１０１においてカウント可能なイベントの種類の自由度を上げることができる。
【００８６】
次に、第８実施形態のプロセッサについて説明する。
図１２は、第８実施形態のプロセッサを示す図である。なお、図１２に示す第８実施形態のプロセッサ１２０において、図５に示す第２実施形態のプロセッサ２０や図１０に示す第７実施形態のプロセッサ１００と同じ構成には同じ符号を付しその構成の説明を省略する。
【００８７】
図１２に示す第８実施形態のイベントカウンタ１２１が図１０に示す第７実施形態のイベントカウンタ１０１と異なる点は、オーバーフロー検出回路５２を、タイマ２８の代わりに備えている点である。
【００８８】
このように構成しても、第１実施形態のプロセッサ２０または第２実施形態のプロセッサ５０と同様に、発生頻度の高いイベントのイベント信号を記憶する記憶領域を他の記憶領域に対して大きくすることができるので、発生頻度の高いイベントが発生してもそのイベントのイベント信号を記憶させる記憶領域がオーバーフローする可能性が低くなる。また、発生頻度の低いイベントのイベント信号を記憶する記憶領域が必要以上に大きくさせないようにすることができる。従って、レジスタ２７を有効利用して３つのイベントをそれぞれカウントすることができる。
【００８９】
また、レジスタ２７により３つのイベントの各イベント信号を記憶することができるので、上述した従来のイベントカウンタのように、イベントの種類と同じ数のカウンタを備える必要がなく、イベントカウンタ１２１が大型化することを抑えることができる。
【００９０】
なお、上記第１実施形態のプロセッサ２０や第２実施形態のプロセッサ５０において、第５実施形態のプロセッサ８０や第７実施形態のプロセッサ１００のように、シフタ２２〜２４の前段に、セレクタや論理回路を設けるように構成してもよい。
また、上記第７実施形態のプロセッサ１００または第８実施形態のプロセッサ１２０において、論理回路１０３のみ、セレクタ１０２及び論理回路１０３のみ、または、論理回路１０３及びセレクタ１０４のみを備えるように構成してもよい。
【００９１】
（付記１）プロセッサ内で発生するイベントをカウントするイベントカウンタを備える前記プロセッサであって、前記イベントカウンタは、記憶手段と、前記イベントをイベントの種類毎にカウントし、複数に分割された前記記憶手段の各記憶領域にそれぞれ異なる種類のイベントのカウント数を記憶する測定手段と、前記各記憶領域に記憶されるカウント数の比率に基づいて、前記各記憶領域のそれぞれの大きさを可変する記憶領域可変手段と、を備えることを特徴とするプロセッサ。
（付記２）プロセッサ内で発生するイベントをカウントするイベントカウンタを備える前記プロセッサであって、前記イベントカウンタは、記憶手段と、前記イベントを選択する選択手段と、前記選択手段で選択されるイベントをイベントの種類毎にカウントし、複数に分割された前記記憶手段の各記憶領域にそれぞれ異なる種類のイベントのカウント数を記憶する測定手段と、前記各記憶領域に記憶されるカウント数の比率に基づいて、前記各記憶領域のそれぞれの大きさを可変する記憶領域可変手段と、を備えることを特徴とするプロセッサ。
（付記３）プロセッサ内で発生するイベントをカウントするイベントカウンタを備える前記プロセッサであって、前記イベントカウンタは、記憶手段と、前記イベントを選択する第１の選択手段と、前記第１の選択手段で選択されたイベントに対して論理計算を行い、その計算結果であるイベントを出力する論理計算手段と、前記論理計算手段から出力されるイベントを選択する第２の選択手段と、前記第２の選択手段で選択されるイベントをイベントの種類毎にカウントし、複数に分割された前記記憶手段の各記憶領域にそれぞれ異なる種類のイベントのカウント数を記憶する測定手段と、前記各記憶領域に記憶されるカウント数の比率に応じて、前記各記憶領域のそれぞれの大きさを可変する記憶領域可変手段と、を備えることを特徴とするプロセッサ。
（付記４）付記１〜３の何れか１つに記載のプロセッサであって、前記イベントカウンタは、予備記憶手段を備え、前記測定手段は、所定時間が経過するか、または、前記各記憶領域のうち何れかの記憶領域がオーバーフローしてから外部の表示装置に前記各記憶領域に記憶されるカウント数が送られ、かつ、前記記憶領域可変手段が前記各記憶領域のそれぞれの大きさを可変するまでの間、前記予備記憶手段を使用して前記イベントをイベントの種類毎にカウントする、ことを特徴とするプロセッサ。
（付記５）付記１〜４の何れか１つに記載のプロセッサであって、前記記憶領域可変手段は、所定時間が経過すると、または、前記各記憶領域のうち何れかの記憶領域がオーバーフローすると、前記各記憶領域に記憶されるカウント数の比率に応じて、前記各記憶領域のそれぞれの大きさを可変する、ことを特徴とするプロセッサ。
（付記６）付記１〜５の何れか１つに記載のプロセッサであって、前記記憶領域可変手段は、前記各記憶領域に記憶されるカウント数の比率を計算するシフト幅計算回路と、前記シフト幅計算回路により計算される比率に応じて、前記各記憶領域に記憶されるカウント数をそれぞれシフトし前記各記憶領域のそれぞれの大きさを可変するシフタと、を備えることを特徴とするプロセッサ。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施形態のプロセッサのイベントカウンタにおける動作の概要を説明するための図である。
【図２】第１実施形態のプロセッサを示す図である。
【図３】第１実施形態のイベントカウンタの動作を説明するためのフローチャートである。
【図４】レジスタの一例を示す図である。
【図５】第２実施形態のプロセッサを示す図である。
【図６】第３実施形態のプロセッサを示す図である。
【図７】第４実施形態のプロセッサを示す図である。
【図８】第５実施形態のプロセッサを示す図である。
【図９】第６実施形態のプロセッサを示す図である。
【図１０】第７実施形態のプロセッサを示す図である。
【図１１】論理回路の一例を示す図である。
【図１２】第８実施形態のプロセッサを示す図である。
【図１３】従来のイベントカウンタを示す図である。
【図１４】記憶領域を構成するためのハードウェアの一例を示す図である。
【符号の説明】
【００９３】
１０  レジスタ
１１  記憶領域
１２  記憶領域
２０  プロセッサ
２１  イベントカウンタ
２２  シフタ
２３  シフタ
２４  シフタ
２５  シフト幅計算回路
２６  加算器
２７  レジスタ
２８  タイマ
２９  出力制御装置
３０  表示装置
５０  プロセッサ
５１  イベントカウンタ
５２  オーバーフロー検出回路
６０  プロセッサ
６１  イベントカウンタ
６２  予備レジスタ
６３  アンド回路
６４  アンド回路
６５  入力セレクタ
６６  出力セレクタ
７０  プロセッサ
７１  イベントカウンタ
８０  プロセッサ
８１  イベントカウンタ
８２  セレクタ
９０  プロセッサ
９１  イベントカウンタ
１００  プロセッサ
１０１  イベントカウンタ
１０２  セレクタ
１０３  論理回路
１０４  セレクタ
１２０  プロセッサ
１２１  イベントカウンタ
１３０  イベントカウンタ
１３１  イベントカウンタ
１３２  セレクタ
１３３  記憶領域
１３４  加算器
１４０  レジスタ
１４０−１  記憶領域
１４０−２  記憶領域
【図１】
0004971052.tif 000002
【図２】
0004971052.tif 000003
【図３】
0004971052.tif 000004
【図４】
0004971052.tif 000005
【図５】
0004971052.tif 000006
【図６】
0004971052.tif 000007
【図７】
0004971052.tif 000008
【図８】
0004971052.tif 000009
【図９】
0004971052.tif 000010
【図１０】
0004971052.tif 000011
【図１１】
0004971052.tif 000012
【図１２】
0004971052.tif 000013
【図１３】
0004971052.tif 000014
【図１４】
0004971052.tif 000015