(57)【特許請求の範囲】
【請求項１】
所定の動作クロックに従ってパイプライン処理によりプログラムの命令群を実行するプロセッサモジュールの処理性能を評価する性能評価モジュールであって、
前記命令群のうちの少なくとも１つの命令に対する実行アドレスの値を記憶するためのプログラムカウンタテーブルと、
前記プロセッサモジュールによる命令の処理に伴い前記プロセッサモジュールから送られるプログラムカウンタの値と前記プログラムカウンタテーブルに記憶された実行アドレスの値とを比較し、一致するか否かを判断するプログラムカウンタ比較部と、
前記プログラムカウンタ比較部により一致すると判断される場合に、比較判断された前記プログラムカウンタの値に対応する命令の実行数をカウントし、出力するカウント制御部と、
を備える性能評価モジュール。
【請求項２】
前記カウント制御部は、段接続された複数の順序回路を含み、前記複数の順序回路によって、順次に、前記プログラムカウンタの値を前記所定の動作クロックの所定クロックサイクル分ラッチした後に、前記命令の実行数をカウントする、請求項１記載の性能評価モジュール。
【請求項３】
前記所定のクロックサイクルは、前記プロセッサモジュールが一の命令をフェッチした後、前記一の命令を演算実行するために要するクロックサイクル数である、請求項２記載の性能評価モジュール。
【請求項４】
前記カウント制御部は、
前記プロセッサモジュールにより演算実行される一の命令が分岐命令であって、かつ、該分岐命令の分岐条件が成立する場合に、前記所定のクロックサイクル分ラッチされた前記プログラムカウンタの値を保持する一の順序回路の出力を前記複数の順序回路のそれぞれに入力する、請求項２記載の性能評価モジュール。
【請求項５】
前記カウント制御部は、
前記所定の分岐命令の分岐条件が成立しない場合に、前記比較判断されたプログラムプログラムカウンタの値を最前段の前記順序回路に入力する、請求項４記載の性能評価モジュール。
【請求項６】
前記カウント制御部は、
前記プロセッサモジュールにより演算実行される一の命令が所定のメモリモジュールに対する読み出し命令であって、かつ、前記演算実行後に前記所定のメモリモジュールから読み出された値を格納するための領域を示すアドレスの値と、他の命令の演算実行前に該他の命令に従う値を格納する領域を示すアドレスの値とが一致する場合に、前記一の命令の演算実行時までラッチされた前記プログラムカウンタの値を前記プログラムカウンタ比較部に送る選択部をさらに備える、請求項１記載の性能評価モジュール。
【請求項７】
前記性能評価モジュールは、１又は２以上の前記命令に対して割り当てられた識別子ごとに前記実行数をカウントする、請求項１乃至６のいずれかに記載の性能評価モジュール。
【請求項８】
所定の動作クロックに従ってパイプライン処理によりプログラムの命令群を実行するプロセッサモジュールと、
前記プロセッサモジュールに接続された少なくとも１つの性能評価モジュールと、
前記命令群のうちの少なくとも１つの命令に対する実行アドレスの値を記憶するためのプログラムカウンタテーブルと、
を備え、
前記少なくとも１つの性能評価モジュールは、
前記プロセッサモジュールによる命令の処理に伴うプログラムカウンタの値と前記プログラムカウンタテーブルに記憶された実行アドレスの値とを比較し、一致するか否かを判断するプログラムカウンタ比較部と、
前記プログラムカウンタの値に対応する命令の実行数をカウントするカウンタ制御部と、を備え、
前記プログラムカウンタ比較部は、前記プロセッサモジュールによって命令がフェッチされることにより前記プロセッサモジュールから送られる前記プログラムカウンタの値に基づいて、一致するか否かの判断を行い、
前記カウント制御部は、
前記プログラムカウンタ比較部により一致すると判断される場合に、比較判断された前記プログラムカウンタの値に対応する命令の実行数をカウントし、出力する、
半導体集積回路。
【請求項９】
前記半導体集積回路は、１又は２以上の前記命令に対して割り当てられた識別子ごとに前記実行数をカウントするための前記性能評価モジュールを複数備える、
請求項８記載の半導体集積回路。
【請求項１０】
所定の動作クロックに従ってパイプライン処理によりプログラムの命令群を実行するプロセッサモジュールの処理性能を評価するための性能評価方法であって、
前記プロセッサモジュールによる命令の処理に伴い前記プロセッサモジュールから送られるプログラムカウンタの値を受け取ることと、
プログラムカウンタテーブルに記憶された前記命令群のうちの少なくとも１つの命令に対する実行アドレスの値を受け取ることと、
前記プログラムカウンタの値と前記実行アドレスの値とを比較し、一致するか否かを判断することと、
前記プログラムカウンタの値と前記実行アドレスの値とが一致すると判断される場合に、比較判断された前記プログラムカウンタの値に対応する命令の実行数をカウントすることと、
を含む、性能評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、性能評価モジュール及び半導体集積回路に関し、特に、プロセッサの処理時間を評価するための性能評価モジュール及びこれを組み込んだ半導体集積回路に関する。
【背景技術】
【０００２】
プロセッサとメモリ等の周辺回路とを含む半導体集積回路において、プロセッサは、メモリからプログラムコード（命令）を順次に読み出して、該命令に従う処理を実行する。一般に、プロセッサの処理速度の性能を高めるために、個々の命令を複数のステージに分割し、該分割したステージを並列に実行していくパイプライン方式が採用される。
【０００３】
プロセッサの更なる高性能化のためには、ハードウェアに合わせてプログラムを最適化する必要がある。プログラムの最適化は、例えば、プログラムの実行をシミュレートして、個々の命令が実行にどの程度時間がかかるかを解析することによって行われる。
【０００４】
例えば、下記特許文献１は、並列計算機におけるプログラム実行のボトルネックとなっている箇所を知り得るようにするプログラム解析支援装置を開示する。このプログラム解析支援装置は、並列計算機上で実行されるプログラムの各イベントに識別子を付与しながら、これをイベント・トレース・データとして収集、管理し、イベント間の関係を視覚的に見易く編集してディスプレイに表示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平６−０８３６０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のような特許文献１に開示されるプログラム解析支援装置は、プログラムの実行に伴うある一定区間を単位とするイベントベースで、プログラムの解析を行うものであって、実行されるプログラム中の命令をクロックサイクルベースで解析を行うことができなかった。プログラムの構成や命令の種類によっては、ある命令の実行サイクルが、他の命令の実行サイクルに影響を与え、結果として、プログラム全体の処理速度の低下を招くこともあり、上記のようなイベントベースの解析では、性能向上のための十分な解析精度が得られないという課題があった。
【０００７】
そこで、本発明は、プロセッサにより実行されるプログラムについて、イベントベースよりも粒度の小さい命令のクロックサイクルベースでその実行経過を解析することができるようにすることを目的とする。
【０００８】
より具体的には、本発明は、プロセッサによりパイプライン方式で実行されるプログラムについて、個々の命令の実行数をカウントすることができる性能評価モジュールを提供することを目的とする。
【０００９】
また、本発明は、このようなプログラムについて、分岐命令の実行に起因して制御ハザードが生じた場合であっても、個々の命令の実行数を正しくカウントすることができる性能評価モジュールを提供することを目的とする。
【００１０】
さらに、本発明は、このようなプログラムについて、メモリアクセス命令に起因するデータハザードが生じた場合であっても、個々の命令の実行数を正しくカウントすることができる性能評価モジュールを提供することを目的とする。
【００１１】
さらにまた、本発明は、プロセッサを含む半導体集積回路に容易に組み込むことを可能にする構成を有する上記のような性能評価モジュールを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するための本発明は、以下の技術的特徴乃至は発明特定事項を含んで構成される。
【００１３】
すなわち、ある観点に従う本発明は、所定の動作クロックに従ってパイプライン処理によりプログラムの命令群を実行するプロセッサモジュールの処理性能を評価する性能評価モジュールであって、前記命令群のうちの少なくとも１つの命令に対する実行アドレスの値を記憶するためのプログラムカウンタテーブルと、前記プロセッサモジュールによる命令の処理に伴い前記プロセッサモジュールから送られるプログラムカウンタの値と前記プログラムカウンタテーブルに記憶された実行アドレスの値とを比較し、一致するか否かを判断するプログラムカウンタ比較部と、前記プログラムカウンタ比較部により一致すると判断される場合に、比較判断された前記プログラムカウンタの値に対応する命令の実行数をカウントし、出力するカウント制御部と、を備える性能評価モジュールである。
【００１４】
これにより、性能評価モジュールは、プロセッサモジュールから送られるプログラムカウンタの値が、プログラムカウンタテーブルに記憶される実行アドレスの値と一致するか否かを判断し、該判断の結果に従ってカウントを行うため、性能評価モジュールは、プロセッサモジュールで行われる命令のうち所定の実行アドレスに対応する個々の命令の実行数をカウントすることができるようになる。
【００１５】
ここで、前記カウント制御部は、段接続された複数の順序回路を含み、前記複数の順序回路によって、順次に、前記プログラムカウンタの値を前記所定の動作クロックの所定クロックサイクル分ラッチした後に、前記命令の実行数をカウントしても良い。
【００１６】
これにより、性能評価モジュールは、段接続された複数の順序回路によって、プログラムカウンタの値を所定クロックサイクル分ラッチすることができるようになる。
【００１７】
さらに、前記所定のクロックサイクルは、前記プロセッサモジュールが一の命令をフェッチした後、前記一の命令を演算実行するために要するクロックサイクル数であっても良い。
【００１８】
これにより、性能評価モジュールは、プロセッサモジュールが一の命令をフェッチした後、一の命令を演算実行するまで、一の命令に対するプログラムカウンタの値をラッチすることができるようになる。
【００１９】
また、前記カウント制御部は、前記プロセッサモジュールにより演算実行される一の命令が分岐命令であって、かつ、該分岐命令の分岐条件が成立する場合に、前記所定のクロックサイクル分ラッチされた前記プログラムカウンタの値を保持する一の順序回路の出力を前記複数の順序回路のそれぞれに入力しても良い。
【００２０】
これにより、性能評価モジュールは、一の命令が分岐命令であって、かつ該分岐命令の分岐条件が成立する場合に、順序回路がラッチしている内容を前記一の順序回路の出力に更新することによって、分岐命令によって発生するハザードに対しても正しく個々の命令の実行数をカウントすることができるようになる。
【００２１】
さらに、前記カウント制御部は、前記所定の分岐命令の分岐条件が成立しない場合に、前記比較判断されたプログラムプログラムカウンタの値を最前段の前記順序回路に入力しても良い。
【００２２】
また、前記カウント制御部は、前記プロセッサモジュールにより演算実行される一の命令が所定のメモリモジュールに対する読み出し命令であって、かつ、前記演算実行後に前記所定のメモリモジュールから読み出された値を格納するための領域を示すアドレスの値と、他の命令の演算実行前に該他の命令に従う値を格納する領域を示すアドレスの値とが一致する場合に、前記一の命令の演算実行時までラッチされた前記プログラムカウンタの値を前記プログラムカウンタ比較部に送る選択部をさらに備えても良い。
【００２３】
これにより、性能評価モジュールは、一の命令がメモリモジュールに対する読み出し命令であって、ハザードが発生する条件を満たす場合に、一の命令に対するプログラムカウンタの値をプログラムカウンタ比較部に送るため、メモリモジュールに対する読み出し命令によって発生するハザードに対しても正しく個々の命令の実行数をカウントすることができるようになる。
【００２４】
また、前記性能評価モジュールは、１又は２以上の前記命令に対して割り当てられた識別子ごとに前記実行数をカウントしても良い。
【００２５】
これにより、性能評価モジュールは、識別子に対応する命令ごとに命令の実行数をカウントすることができるようになる。
【００２６】
さらに、別の観点に従う本発明は、所定の動作クロックに従ってパイプライン処理によりプログラムの命令群を実行するプロセッサモジュールと、前記プロセッサモジュールに接続された少なくとも１つの性能評価モジュールと、前記命令群のうちの少なくとも１つの命令に対する実行アドレスの値を記憶するためのプログラムカウンタテーブルと、を備え、前記少なくとも１つの性能評価モジュールは、前記プロセッサモジュールによる命令の処理に伴うプログラムカウンタの値と前記プログラムカウンタテーブルに記憶された実行アドレスの値とを比較し、一致するか否かを判断するプログラムカウンタ比較部と、前記プログラムカウンタの値に対応する命令の実行数をカウントするカウンタ制御部と、を備え、前記プログラムカウンタ比較部は、前記プロセッサモジュールによって命令がフェッチされることにより前記プロセッサモジュールから送られる前記プログラムカウンタの値に基づいて、一致するか否かの判断を行い、前記カウント制御部は、前記プログラムカウンタ比較部により一致すると判断される場合に、比較判断された前記プログラムカウンタの値に対応する命令の実行数をカウントし、出力する、半導体集積回路である。
【００２７】
これにより、半導体集積回路は、プロセッサモジュールから送られるプログラムカウンタの値が、プログラムカウンタテーブルに記憶される実行アドレスの値と一致するか否かを判断し、該判断の結果に従ってカウントを行うため、性能評価モジュールは、プロセッサモジュールで行われる命令のうち所定の実行アドレスに対応する個々の命令の実行数をカウントすることができるようになる。
【００２８】
ここで、前記半導体集積回路は、１又は２以上の前記命令に対して割り当てられた識別子ごとに前記実行数をカウントするための前記性能評価モジュールを複数備えても良い。
【００２９】
これにより、半導体集積回路は、識別子に対応する命令ごとに命令の実行数をカウントすることができるようになる。
【００３０】
さらに、別の観点に従う本発明は、所定の動作クロックに従ってパイプライン処理によりプログラムの命令群を実行するプロセッサモジュールの処理性能を評価するための性能評価方法であって、前記プロセッサモジュールによる命令の処理に伴い前記プロセッサモジュールから送られるプログラムカウンタの値を受け取ることと、プログラムカウンタテーブルに記憶された前記命令群のうちの少なくとも１つの命令に対する実行アドレスの値を受け取ることと、前記プログラムカウンタの値と前記実行アドレスの値とを比較し、一致するか否かを判断することと、前記プログラムカウンタの値と前記実行アドレスの値とが一致すると判断される場合に、比較判断された前記プログラムカウンタの値に対応する命令の実行数をカウントすることとを含む、性能評価方法である。
【００３１】
これにより、性能評価モジュールは、プロセッサモジュールから送られるプログラムカウンタの値が、プログラムカウンタテーブルに記憶される実行アドレスの値と一致するか否かを判断し、該判断の結果に従ってカウントを行うため、性能評価モジュールは、プロセッサモジュールで行われる命令のうち所定の実行アドレスに対応する個々の命令の実行数をカウントすることができるようになる。
【発明の効果】
【００３２】
本発明によれば、性能評価モジュールは、プロセッサ上で実行されるプログラムについて、イベントベースよりも粒度の小さい命令のクロックサイクルベースでその実行を解析することができるようになる。
【００３３】
すなわち、本発明によれば、性能評価モジュールは、プロセッサ上で実行されるプログラムについて、個々の命令の実行数をカウントすることができるようになる。
【００３４】
また、本発明によれば、性能評価モジュールは、プロセッサによりパイプライン方式で実行されるプログラムについて、分岐命令の実行に起因して制御ハザードが生じた場合であっても、個々の命令の実行数を正しくカウントすることができるようになる。
【００３５】
また、本発明によれば、性能評価モジュールは、プロセッサによりパイプライン方式で実行されるプログラムについて、メモリアクセス命令に起因するデータハザードが生じた場合であっても、個々の命令の実行数を正しくカウントすることができるようになる。
【００３６】
また、本発明によれば、性能評価モジュールは、上記の効果を実現しつつ、プロセッサを含む半導体集積回路に容易に組み込まれることを可能にする構成を有することができるようになる。
【００３７】
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【図面の簡単な説明】
【００３８】
【図１】本発明の一実施形態に係る半導体集積回路の概略構成の一例を示す図である。
【図２】本発明の一実施形態に係る半導体集積回路のプロセッサモジュールの構成の一例を示す図である。
【図３】本発明の一実施形態に係るプロセッサモジュールにおける各コンポーネントの構成の一例を示す図である。
【図４】本発明の一実施形態に係るプロセッサモジュールにおける各コンポーネントの構成の一例を示す図である。
【図５】本発明の一実施形態に係る性能評価モジュールの構成の一例を示す図である。
【図６】本発明の一実施形態に係る性能評価モジュールの動作の一例を示すフローチャートである。
【図７】本発明の一実施形態に係る性能評価モジュールの動作の一例を示すフローチャートである。
【図８】本発明の一実施形態に係る半導体集積回路のプロセッサモジュールによるパイプライン処理における性能評価モジュールのカウントの動作を説明するための概念図である。
【図９】本発明の一実施形態に係る半導体集積回路のプロセッサモジュールによるパイプライン処理における性能評価モジュールのカウントの動作を説明するための概念図である。
【図１０】本発明の一実施形態に係る半導体集積回路のプロセッサモジュールによるパイプライン処理における性能評価モジュールのカウントの動作を説明するための概念図である。
【図１１】本発明の一実施形態に係る半導体集積回路の概略構成の他の例を示す図である。
【発明を実施するための形態】
【００３９】
次に、本発明の実施の形態について、図面を参照しつつ説明する。
【００４０】
図１は、本発明の一実施形態に係る半導体集積回路の概略構成の一例を示す図である。同図に示すように、本実施形態に係る半導体集積回路１は、例えば、プロセッサモジュール１０と、メモリモジュール２０と、チップセット３０と、性能評価モジュール４０とを含んで構成される。半導体集積回路１は、典型的には、図示しない所定のＩ／Ｏインターフェースを介して、ストレージデバイス５０や入出力装置６０等を接続し、コンピュータシステムを構成する。なお、半導体集積回路１は、性能評価モジュール４０のみによって構成され、プロセッサモジュール等によって構成される他の半導体集積回路と一体的に動作するようにものであっても良い。
【００４１】
プロセッサモジュール１０は、例えば、プロセッサコア、マイクロコントローラ、デジタル信号プロセッサ及び／又はこれらの組合せを含む。本実施形態のプロセッサモジュール１０は、パイプライン方式で命令を実行可能に構成される。したがって、プロセッサモジュール１０は、メモリモジュール２０に記憶されるプログラムを構成する命令群をパイプライン処理することによって、コンピュータシステムに所定の機能を実現させる。本実施形態では、プロセッサモジュール１０は、プログラムの実行中、プログラムカウンタの値を性能評価モジュール４０に出力する。
【００４２】
メモリモジュール２０は、典型的には、揮発性メモリ（例えばＲＡＭ）、不揮発性メモリ（例えばＲＯＭやフラッシュメモリ等）及び／又はこれらの組合せからなる１次記憶装置である。本例では、メモリモジュール２０は、性能評価に供されるプログラム及びその実行に必要な各種のプログラム等を記憶する。
また、メモリモジュール２０は、性能評価モジュール４０から出力されるカウント値を記憶する。
【００４３】
チップセット３０は、プロセッサモジュール１０、メモリモジュール２０、性能評価モジュール４０、ストレージデバイス５０及び入出力装置６０等を接続するバスとのブリッジや、コンピューティングデバイスを構成するために必要な他のコンポーネントを集積した回路からなる。
【００４４】
性能評価モジュール４０は、プロセッサモジュール１０が実行するプログラム中の所定の命令が何サイクル分実行されたか（すなわち、命令の実行数）をカウントする。具体的には、性能評価モジュール４０は、プログラムの実行に伴ってプロセッサモジュール１０から逐次出力されるプログラムカウンタ（ＰＣ）の値が、ＰＣテーブル（図２を参照）に記憶された所定の値と一致するか否かを判断し、一致する度にカウントを行う。カウント結果は、チップセット３０を介して、例えばメモリモジュール２０やストレージデバイス５０に記憶され、プログラムの解析に供される。
【００４５】
なお、ストレージデバイス５０は、典型的には、ハードディスクドライブ（ＨＤＤ）や光学式ディスクドライブ、ソリッドステートデバイス（ＳＳＤ）等からなる。ストレージデバイス５０は、プロセッサモジュール１０の２次記憶装置として機能する。また、入出力装置６０は、各種のペリフェラルインターフェースであり、例えば、キーボードや、マウス、ディスプレイ、印刷装置、通信装置などである。
【００４６】
以上のように構成される半導体集積回路１は、プロセッサモジュール１０によって、メモリモジュール２０に記憶されるプログラム中の命令を実行し、また、該実行の間、性能評価モジュール４０によって所定の命令が何サイクル分実行されたかをカウントし、該カウント値をメモリモジュール２０等に記憶する。これにより、半導体集積回路１は、イベントベースよりも粒度の小さい命令のクロックサイクルベースで命令の実行数をカウントすることができ、したがって、プログラム開発者は、その実行経過を解析することができるようになる。
【００４７】
図２は、本発明の一実施形態に係る半導体集積回路のプロセッサモジュールの構成の一例を示す図である。同図に示すように、本実施形態に係るプロセッサモジュール１０は、例えば、命令フェッチ部１１と、レジスタリード部１２と、実行部１３と、メモリアクセス部１４と、ライトバック部１５とを含んで構成される。本実施形態では、プロセッサモジュール１０は、これら５つのコンポーネントにより５ステージのパイプライン処理で命令を処理するものとして構成されるが、これに限られるものではない。
【００４８】
命令フェッチ部１１は、プログラムカウンタ（図３を参照）に記憶された実行アドレスに従って命令キャッシュ（図３を参照）から命令をフェッチし、出力する。これに伴い、プログラムカウンタの値は、後述する実行部１３から出力される制御信号ＣＮＴに従って更新される。命令フェッチ部１１は、レジスタリード部１２に対する読み出しレジスタアドレスを示すリードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２並びに書き込みレジスタアドレスを示すライトレジスタ信号ＷＲＥＧと、命令に従う制御内容を示す制御信号ＣＮＴとを生成し、これらをプログラムカウンタの値を示すプログラムカウンタ信号ＰＣとともにレジスタリード部１２に出力する。また、命令フェッチ部１１は、プログラムカウンタ信号ＰＣを性能評価モジュール４０に出力する。
【００４９】
レジスタリード部１２は、プログラムの実行に供される各種の値を記憶するレジスタファイル（図３を参照）を有し、命令フェッチ部１１でフェッチされた命令に従って、該レジスタファイルに対する読み出しを実行するとともに、後述するライトバック部１５から出力される信号に従いレジスタファイルに対する書き込みを実行する。具体的には、レジスタリード部１２は、命令フェッチ部１１から出力されるプログラムカウンタ信号ＰＣと、制御信号ＣＮＴと、リードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２と、ライトレジスタ信号ＷＲＥＧとをラッチし、リードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２を性能評価モジュール４０に出力する。また、レジスタリード部１２は、プログラムカウンタ信号ＰＣと、制御信号ＣＮＴと、ライトレジスタ信号ＷＲＥＧとを実行部１３に出力する。また、レジスタリード部１２は、該ラッチしたリードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２に従うレジスタファイルのアドレスから値を読み出し、該読み出した値をリードデータ信号ＲＤＡＴＡ１及びＲＤＡＴＡ２として実行部１３に出力する。さらに、レジスタリード部１２は、後述するライトバック部１５から出力されるライトバックレジスタ信号ＷＢＲＥＧに従うレジスタファイルのアドレスに、ライトバック部１５から出力されるライトデータ信号ＷＤＡＴＡが示す値を書き込む。
【００５０】
実行部１３は、レジスタリード部１２によって読み出された各種の値を用いて、命令フェッチ部１１によってフェッチされた命令を解釈し、該解釈に従って演算を実行する。具体的には、実行部１３は、レジスタリード部１２から出力されるプログラムカウンタ信号ＰＣと、ライトレジスタ信号ＷＲＥＧと、リードデータ信号ＲＤＡＴＡ１及びＲＤＡＴＡ２と、制御信号ＣＮＴとをラッチし、ラッチしたプログラムカウンタ信号ＰＣをプログラムカウンタ信号ＰＣ２として性能評価モジュール４０に出力する。また、実行部１３は、ラッチした制御信号ＣＮＴを性能評価モジュール４０と命令フェッチ部１１とメモリアクセス部１４とに出力する。また、実行部１３は、ラッチしたライトレジスタ信号ＷＲＥＧをメモリアクセス部１４と性能評価モジュール４０とに出力するとともに、ラッチしたリードデータ信号ＲＤＡＴＡ２をライト信号ＷＲＩＴＥとしてメモリアクセス部１４に出力する。さらに、実行部１３は、レジスタリード部１２から出力されるリードデータ信号ＲＤＡＴＡ１及びＲＤＡＴＡ２の値を使用して、ラッチした制御信号ＣＮＴに従う演算を実行する。さらにまた、実行部１３は、該演算の結果を結果信号ＲＥＳＵＬＴとしてメモリアクセス部１４と性能評価モジュール４０とに出力する。
【００５１】
メモリアクセス部１４は、メモリモジュール２０に対する１次キャッシュの役割を有するデータキャッシュ（図４を参照）を有し、命令フェッチ部１１でフェッチされた命令に従って、レジスタリード部１２によって読み出された各種の値を用いて、データキャッシュに対する書き込み及び／又は読み出しを実行する。具体的には、メモリアクセス部１４は、実行部１３から出力される制御信号ＣＮＴと、結果信号ＲＥＳＬＵＴと、ライトレジスタＷＲＥＧとをラッチし、該ラッチした３つの信号をライトバック部１５に出力する。メモリアクセス部１４は、ラッチした制御信号ＣＮＴに従って、ラッチした結果信号ＲＥＳＵＬＴが示すデータキャッシュのアドレスに、ラッチしたライト信号ＷＲＩＴＥが示す値を書き込むか、又は、結果信号ＲＥＳＵＬＴが示すデータキャッシュのアドレスから値を読み出して、該読み出した値をリード信号ＲＥＡＤとしてライトバック部１５に出力する。また、メモリアクセス部１４は、データキャッシュの内容をメモリモジュール２０に送信し、メモリモジュール２０を更新する。
【００５２】
ライトバック部１５は、命令フェッチ部１１によってフェッチされた命令の実行結果（すなわち、実行部１３による演算実行の結果、及びメモリアクセス部１４によって読み出された値）をレジスタリード部１２のレジスタファイルに書き込む。具体的には、ライトバック部１５は、メモリアクセス部１４から出力されるライトレジスタ信号ＷＲＥＧをラッチし、ライトバックレジスタ信号ＷＢＲＥＧとして、レジスタリード部１２に出力する。また、ライトバック部１５はメモリアクセス部１４から出力される制御信号ＣＮＴに従って、結果信号ＲＥＳＵＬＴ又はリード信号ＲＥＡＤのいずれかを選択し、該選択の結果をライトデータ信号ＷＤＡＴＡとしてレジスタリード部１２に出力する。
【００５３】
以上のように構成されるプロセッサモジュール１０において、命令フェッチ部１１は、メモリモジュール２０から出力されるプログラムの実行アドレスに従う命令をフェッチし、次に、レジスタリード部１２は、レジスタファイルから命令の実行に必要な値を読み出してこれを実行部１３に渡し、実行部１３は、命令に従う演算を実行する。また、命令フェッチ部１１によりフェッチされた命令に従って、メモリアクセス部１４は、データキャッシュに対する書き込み又は読み出しを実行する。また、ライトバック部１５は、実行部１３による演算結果又はメモリアクセス部１４によるデータキャッシュの読み出し結果をレジスタリード部１２のレジスタファイルに書き込む。このようにして、プロセッサモジュール１０は、メモリモジュール２０から出力されるプログラムを実行することができる。
【００５４】
図３は、図２に示したIII−III線で囲まれたプロセッサモジュールにおける各コンポーネントの構成の一例を示す図であって、具体的には、プロセッサモジュール１０における命令フェッチ部１１、レジスタリード部１２及び実行部１３の構成の詳細を示している。同図に示すように、命令フェッチ部１１は、プログラムカウンタ１１１と、命令キャッシュ１１２とを含んで構成される。
【００５５】
プログラムカウンタ１１１は、命令の実行アドレスの値を保持し、所定のクロックに基づいて、保持した実行アドレスの値を出力する。プログラムカウンタ１１１の実行アドレスの値は、実行部１３から出力される制御信号ＣＮＴが実行アドレスの値を示す場合、該制御信号ＣＮＴに従って更新され制御信号ＣＮＴが実行アドレスの値を示さない場合、単にカウントアップされる。また、プログラムカウンタ１１１は、実行アドレスの値をプログラムカウンタ信号ＰＣとして、命令キャッシュ１１２と、レジスタリード部１２とに出力する。
【００５６】
命令キャッシュ１１２は、メモリモジュール２０に対する１次キャッシュの役割を有し、メモリモジュール２０から出力されるプロセッサモジュール１０で実行されるプログラムの命令と、該命令に対応する実行アドレスとを記憶する。また、命令キャッシュ１１２は、プログラムカウンタ１１１から出力されるプログラムカウンタ信号ＰＣに基づいて、該信号に従う命令を読み出し、読み出した該命令に従うライトレジスタ信号ＷＲＥＧと、リードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２と、制御信号ＣＮＴとを生成し、該生成した信号をレジスタリード部１２に出力する。ライトレジスタ信号ＷＲＥＧは、命令の実行結果を記憶するレジスタファイルのアドレスを示し、リードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２は、命令の実行にあたって値を読み出すレジスタファイルの値を示し、制御信号ＣＮＴは命令の内容を示す。
【００５７】
レジスタリード部１２は、複数のレジスタ１２１（本例では、レジスタ１２１（１）乃至１２１（５））と、レジスタファイル１２２とを含んで構成される。レジスタ１２１（１）乃至１２１（５）のそれぞれは、命令フェッチ部１１から出力されるライトレジスタ信号ＷＲＥＧと、リードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２と、制御信号ＣＮＴと、プログラムカウンタ信号ＰＣとをラッチする。また、レジスタ１２１（２）及び１２１（３）は、ラッチしたリードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２をレジスタファイル１２２と性能評価モジュール４０とにそれぞれ出力する。
【００５８】
レジスタファイル１２２は、上述したように、実行部１３の実行に供される各種の値を記憶する。レジスタファイル１２２は、レジスタ１２１（２）及び１２１（３）から出力されるリードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２が示すアドレスから値を読み出し、該読み出した値をそれぞれリードデータ信号ＲＤＡＴＡ１及びＲＤＡＴＡ２として実行部１３に出力する。また、レジスタファイル１２２は、ライトバック部１５から出力されるライトバックレジスタ信号ＷＢＲＥＧに従うアドレスに、ライトバック部１５から出力されるライトデータ信号ＷＤＡＴＡが示す値を書き込む。
【００５９】
実行部１３は、レジスタ１３１（１）乃至１３１（５）と、演算部１３２とを含んで構成される。レジスタ１３１（１）乃至１３１（５）のそれぞれは、レジスタリード部１２から出力されるライトレジスタ信号ＷＲＥＧと、リードデータ信号ＲＤＡＴＡ１及びＲＤＡＴＡ２と、制御信号ＣＮＴと、プログラムカウンタＰＣとをラッチする。レジスタ１３１（２）乃至１３１（４）は、ラッチしたリードデータ信号ＲＤＡＴＡ１及びＲＤＡＴＡ２と制御信号ＣＮＴとを演算部１３２に出力する。また、レジスタ１３１（３）は、ラッチしたリードデータ信号ＲＤＡＴＡ２をライト信号ＷＲＩＴＥとして、メモリアクセス部１４に出力する。また、レジスタ１３１（４）は、ラッチした制御信号ＣＮＴを命令フェッチ部１１と、性能評価モジュール４０と、メモリアクセス部１４とに出力する。
【００６０】
演算部１３２は、例えばＡＬＵ（Arithmetic Logic Unit）であり、命令を解釈、該解釈に従った演算処理を行う。演算部１３２はレジスタ１３１（２）及び１３１（３）から出力されるリードデータ信号ＲＤＡＴＡ１及びＲＤＡＴＡ２が示す値を用いて、レジスタ１３１（４）から出力される制御信号ＣＮＴが示す命令に従う演算を実行する。演算部１３２は演算の結果を結果信号ＲＥＳＵＬＴとして、該信号を性能評価モジュール４０とメモリアクセス部１４とに出力する。
【００６１】
図４は、図２に示したIV−IV線で囲まれたプロセッサモジュールの各コンポーネントの構成の一例を示す図であって、具体的には、プロセッサモジュール１０におけるメモリアクセス部１４及びライトバック部１５の構成の詳細を示している。同図に示すように、本実施形態に係るメモリアクセス部１４は、例えば、レジスタ１４１（１）乃至１４１（４）と、データキャッシュ１４２とを含んで構成される。
【００６２】
レジスタ１４１（１）乃至１４１（４）のそれぞれは、実行部１３から出力されるライトレジスタ信号ＷＲＥＧと、結果信号ＲＥＳＵＬＴと、ライト信号ＷＲＩＴＥと、制御信号ＣＮＴとをラッチする。レジスタ１４１（２）及び１４１（３）は、ラッチした結果信号ＲＥＳＵＬＴ及びライト信号ＷＲＩＴＥをデータキャッシュ１４２に出力する。また、レジスタ１４１（１）、１４１（２）及び１４１（４）は、ラッチしたライトレジスタ信号ＷＲＥＧ、結果信号ＲＥＳＵＬＴ及び制御信号ＣＮＴをそれぞれライトバック部１５に出力する。
【００６３】
データキャッシュ１４２は、上述したように、メモリモジュール２０の１次キャッシュとしての役割を有し、メモリモジュール２０に対するデータの書き込み又は読み出しの命令が発行された場合に、メモリモジュール２０に代わってデータの書き込み又は読み出しに供される。データキャッシュ１４２は、レジスタ１４１（４）から出力される制御信号ＣＮＴがメモリモジュール２０に対する読み出しの処理を示す場合、レジスタ１４１（２）から出力される結果信号ＲＥＳＵＬＴに従うアドレスから値を読み出し、該読み出したデータをリード信号ＲＥＡＤとしてライトバック部１５に出力する。また、データキャッシュ１４２は、レジスタ１４１（４）から出力される制御信号ＣＮＴがメモリモジュール２０に対する書き込みの処理を示す場合、レジスタ１４１（２）から出力される結果信号ＲＥＳＵＬＴが示すアドレスに、レジスタ１４１（３）から出力されるライト信号ＷＲＩＴＥが示す値を書き込む。また、データキャッシュ１４２は、所定のアルゴリズムに従って、メモリモジュール２０に記憶内容をメモリ信号ＭＥＭとして送信する。
【００６４】
ライトバック部１５は、例えば、レジスタ１５１（１）乃至１５１（４）と、選択回路１５２とを含んで構成される。レジスタ１５１（１）乃至１５１（４）のそれぞれは、メモリアクセス部１４から出力されるライトレジスタ信号ＷＲＥＧと、結果信号ＲＥＳＵＬＴと、リード信号ＲＥＡＤと、制御信号ＣＮＴとをラッチする。また、レジスタ１５１（１）は、ラッチしたライトレジスタ信号ＷＲＥＧをライトバックレジスタ信号ＷＢＲＥＧとして、該信号をレジスタリード部１２に出力する。また、レジスタ１５１（２）及び１５１（３）は、ラッチした結果信号ＲＥＳＵＬＴ及びリード信号ＲＥＡＤを選択回路１５２に出力する。
【００６５】
選択回路１５２は、例えばマルチプレクサであるがこれに限られず、データセレクタや信号切替器などであっても良い。選択回路１５２は、レジスタ１５１（４）から出力される制御信号ＣＮＴに従って、レジスタ１５１（２）から出力される結果信号ＲＥＳＵＬＴ、又はレジスタ１５１（３）から出力されるリード信号ＲＥＡＤのいずれかを選択し、該選択の結果をライトデータ信号ＷＤＡＴＡとして出力する。具体的には、制御信号ＣＮＴがメモリモジュール２０に対するデータの書き込み及び読み出しの処理を示す場合、リード信号ＲＥＡＤを選択する一方で、制御信号ＣＮＴがメモリモジュール２０に対するデータの書き込み及び読み出し以外の処理を示す場合、結果信号ＲＥＳＵＬＴを選択し、該選択の結果をライトデータ信号ＷＤＡＴＡとして、レジスタリード部１２に出力する。
【００６６】
図５は、本発明の一実施形態に係る性能評価モジュールの構成の一例を示す図である。本実施形態に係る性能評価モジュール４０は、例えば、プログラムカウンタ選択部（以下「ＰＣ選択部」という。）２１と、プログラムカウンタ比較部（以下「ＰＣ比較部」という。）２２と、カウント制御部２３と、プログラムカウンタテーブル（以下「ＰＣテーブル」という。）２４とを含んで構成される。
【００６７】
ＰＣ選択部２１は、プロセッサモジュール１０から出力される各種の信号に従って、プロセッサモジュール１０の命令フェッチ部１１から出力されるプログラムカウンタ信号ＰＣ、又はプロセッサモジュール１０の実行部１３から出力されるプログラムカウンタ信号ＰＣ２のいずれかを選択し、該選択の結果をＰＣ比較部２２に出力する。ＰＣ選択部２１は、例えば、比較器２１１（１）及び２１１（２）と、論理和回路２１２と、信号判断部２１３と、論理積回路２１４と、選択回路２１５とを含んで構成される。
【００６８】
比較器２１１は、入力される２つの信号を比較し、該比較の結果を論理和回路２１２に出力する。具体的には、比較器２１１（１）は、プロセッサモジュール１０のレジスタリード部１２から出力されるリードレジスタ信号ＲＲＥＧ１とプロセッサモジュール１０の実行部１３から出力されるライトレジスタ信号ＷＲＥＧとを比較し、該２つの信号が示す値が一致している場合、例えば“１”を出力し、該２つの信号が示す値が一致していない場合、例えば“０”を出力する。また、比較器２１１（２）は、プロセッサモジュール１０のレジスタリード部１２から出力されるリードレジスタ信号ＲＲＥＧ２と、プロセッサモジュール１０の実行部１３から出力されるライトレジスタ信号ＷＲＥＧとを比較し、該比較の結果を論理和回路２１２に出力する。
【００６９】
論理和回路２１２は、比較器２１１（１）及び２１１（２）の比較結果に対して論理和を行い、該論理和の結果を論理積回路２１４に出力する。
【００７０】
信号判断部２１３は、プロセッサモジュール１０の実行部１３から出力される制御信号ＣＮＴが示す命令の内容がメモリモジュール２０に対する読み出しであるか否かを判断する。信号判断部２１３は、制御信号ＣＮＴが示す命令の内容がメモリモジュール２０に対する読み出しであると判断する場合、“１”の状態を示す信号を論理積回路２１４に出力する一方で、制御信号ＣＮＴが示す命令の内容がメモリモジュール２０に対する読み出しでないと判断する場合、“０”の状態を示す信号を論理積回路２１４に出力する。
【００７１】
論理積回路２１４は、信号判断部２１３から出力される判断の結果と論理和回路２１２から出力される論理和の結果とに対して論理積を行い、該論理積の結果を選択回路２１５の選択端子ＳＬに出力する。
【００７２】
選択回路２１５は、例えばマルチプレクサであるがこれに限られず、データセレクタや信号切替器であっても良い。選択回路２１５は、論理積回路２１４から出力される論理積の結果に従って、プロセッサモジュール１０の命令フェッチ部１１から出力されるプログラムカウンタ信号ＰＣ又はプロセッサモジュール１０の実行部１３から出力されるプログラムカウンタ信号ＰＣ２のいずれかを選択し、該選択の結果をＰＣ比較部２２に出力する。選択回路２１５は、論理積回路２１４の論理積の結果が“１”である場合、プログラムカウンタ信号ＰＣ２を選択する一方で、論理積回路２１４の論理積の結果が“０”である場合、プログラムカウンタ信号ＰＣを選択する。
【００７３】
以上のように構成されるＰＣ選択部２１は、実行部１３から出力される制御信号ＣＮＴがメモリモジュール２０に対する読み出しを示し、かつ、プロセッサモジュール１０のレジスタリード部１２から出力されるリードレジスタ信号ＲＲＥＧ１又はＲＲＥＧ２とプロセッサモジュール１０の実行部１３から出力されるライトレジスタ信号ＷＲＥＧとが一致する場合に、実行部１３から出力されるプログラムカウンタ信号ＰＣ２を選択し、出力する。一方、ＰＣ選択部２１は、制御信号ＣＮＴがメモリモジュール２０に対する読み出しを示さないか、又は、リードレジスタ信号ＲＲＥＧ１又はＲＲＥＧ２とライトレジスタ信号ＷＲＥＧとが一致しない場合、命令フェッチ部１１から出力されるプログラムカウンタ信号ＰＣを選択し、出力する。
【００７４】
これにより、ＰＣ選択部２１は、メモリモジュール２０に対する読み出し命令を行った直後に、該読み出しの結果を参照する命令が発行された場合には、命令フェッチ部１１のプログラムカウンタ１１１に保持されている値ではなく、実行部１３のレジスタ１３１（５）に保持されている値を選択する。よって、ＰＣ選択部２１は、メモリモジュール２０に対する読み出し命令を行った直後に、該読み出しの結果を参照する命令が発行された場合に発生し得るデータハザードに対しても、正しく個々の命令の実行数をカウントすることができるようにプログラムカウンタ信号を選択することができる。
【００７５】
ＰＣテーブル２４は、プログラム中の特定の実行アドレスを記憶する。特定の実行アドレスは、例えば、開発者等が命令の種類や特性に基づいて判断することにより決定される。ＰＣテーブル２４に記憶された所定の実行アドレスは、ＰＣ比較部２２に出力される。なお、ＰＣテーブル２４は、典型的には、所定の実行アドレスの値を複数記憶し、ＰＣ比較部２２の比較器２２１（１）乃至２２１（ｎ）にそれぞれ異なる実行アドレスの値を示す信号を出力する。なお、本例では、ＰＣテーブル２４は、性能評価モジュ−ル４０の一部として設けられているがこれに限られるものでなく、ＰＣテーブル２４は、メモリモジュール２０に記憶されるものであっても良い。
【００７６】
ＰＣ比較部２２は、ＰＣ選択部２１によって選択されたプログラムカウンタ信号が示す値と、ＰＣテーブル２４に記憶された特定の実行アドレスの値とを比較し、該比較の結果を一致信号ＡＣＣＯＲＤとしてカウント制御部２３に出力する。ＰＣ比較部２２は、例えば、比較器２２１（１）乃至２２１（ｎ）と、論理和回路２２２とを含んで構成される。
【００７７】
比較器２２１（１）乃至２２１（ｎ）は、ＰＣ選択部２１から出力されるプログラムカウンタ信号の値とＰＣテーブル２４から出力される実行アドレスの値とを比較し、該比較の結果を論理和回路２２２に出力する。比較器２２１（１）乃至２２１（ｎ）は、プログラムカウンタ信号の値と実行アドレスの値とが一致すると判断する場合、“１”の状態を示す信号を出力する一方で、プログラムカウンタ信号の値と実行アドレスの値とが一致しないと判断する場合、“０”の状態を示す信号を出力する。
【００７８】
論理和回路２２２は、比較器２２１（１）乃至２２１（ｎ）から出力される比較の結果に対して論理和を行い、該論理和の結果を一致信号ＡＣＣＯＲＤとしてカウント制御部２３に出力する。
【００７９】
カウント制御部２３は、ＰＣ比較部２２から出力される一致信号ＡＣＣＯＲＤをラッチして、カウンタ２３５に出力する。また、カウント制御部２３は、プロセッサモジュール１０の実行部１３から出力される結果信号ＲＥＳＵＬＴの状態に従って、カウンタ２３５に出力する信号の状態を制御する。カウント制御部２３は、例えば、信号判断部２３１と、選択回路２３２（１）及び２３２（２）と、順序回路２３３（１）及び２３３（２）と論理積回路２３４とを含んで構成される。
【００８０】
信号判断部２３１は、プロセッサモジュール１０の実行部１３から出力される結果信号ＲＥＳＵＬＴが示す内容が“分岐条件成立”であるか否かを判断する。信号判断部２３１は、結果信号ＲＥＳＵＬＴが示す内容が“分岐条件成立”である場合、例えば“１”の状態を示す信号を選択回路２３２（１）及び２３２（２）の選択端子ＳＬと論理積回路２３４とに出力する。これに対して、結果信号ＲＥＳＵＬＴが示す内容が“分岐条件不成立”である場合、信号判断部２３１は、例えば“０”の状態を示す信号を選択回路２３２（１）及び２３２（２）の選択端子ＳＬと論理積回路２３４とに出力する。
【００８１】
選択回路２３２は、例えばマルチプレクサであるがこれに限られず、データセレクタや信号切替器であっても良い。選択回路２３２は、選択端子ＳＬに入力される信号に従って、入力端子Ａ０又はＡ１に入力される信号のいずれかを選択し出力端子Ｙから出力する。具体的には、選択回路２３２（１）は、信号判断部２３１から出力される信号が例えば“０”を示す場合、ＰＣ比較部２２から出力される一致信号ＡＣＣＯＲＤを選択する。また、信号判断部２３１から出力される信号が例えば“１”を示す場合、選択回路２３２（１）は、論理積回路２３４から出力される信号を選択し、該選択の結果を順序回路２３３（１）のデータ入力端子Ｄに出力する。また、選択回路２３２（２）は、信号判断部２３１から出力される信号が例えば“０”を示す場合、順序回路２３３（１）から出力される信号を選択する。また、信号判断部２３１から出力される信号が例えば“１”を示す場合、選択回路２３２（２）は、論理積回路２３４から出力される信号を選択し、該選択の結果を順序回路２３３（２）のデータ入力端子Ｄに出力する。
【００８２】
順序回路２３３は、例えば、Ｄ型フリップフロップであるがこれに限られない。順序回路２３３は、クロック端子ＣＫに入力されるクロックに基づいて、データ入力端子Ｄに入力される信号をデータ出力端子Ｑから出力する。具体的には、順序回路２３３（１）は、所定のクロックＣＬＫに基づいて、選択回路２３２（１）から出力される信号を選択回路２３２（２）の入力端子Ａ１に出力する。また、順序回路２３３（２）は、所定のクロックＣＬＫに基づいて、選択回路２３２（２）から出力される信号を論理積回路２３４とカウンタ２３５とに出力する。
【００８３】
論理積回路２３４は、信号判断部２３１から出力される信号と順序回路２３３（２）から出力される信号とに対して論理積を行い、該論理積の結果を選択回路２３２（１）の入力端子Ａ０及び選択回路２３２（２）の入力端子Ａ０に出力する。
【００８４】
カウンタ２３５は、順序回路２３３（２）から出力される信号を受信する。カウンタ２３５は、順序回路２３３（２）から出力される信号が例えば“１”を示す場合、カウントを行ってカウント値を更新する。カウンタ２３５は、該カウントの結果をカウント信号ＣＯＵＮＴとしてチップセット３０を介してメモリモジュール２０に出力する。
【００８５】
以上のように構成されるカウント制御部２３は、実行部１３から出力される結果信号ＲＥＳＵＬＴが“分岐条件不成立”を示す場合、ＰＣ比較部２２から出力される一致信号ＡＣＣＯＲＤを順序回路２３３（１）及び２３３（２）によってラッチし、該ラッチした結果をカウンタ２３５に出力する。これに対して、カウント制御部２３は、結果信号ＲＥＳＵＬＴが“分岐条件成立”を示す場合、順序回路２３３（１）及び２３３（２）の状態を順序回路２３３（２）の出力の状態に設定し、該順序回路の状態に基づいてカウンタ２３５によってカウントを行う。
【００８６】
これにより、カウント制御部２３は、結果信号ＲＥＳＵＬＴが“分岐命令成立”を示す場合、順序回路２３３（１）及び２３３（２）の入力を順序回路２３３（２）の出力に設定するので、分岐命令が発行されてから２回分の命令のカウント値を、分岐条件が成立しなかった場合のそれぞれの命令のカウント値ではなく、該分岐命令のカウント値とする。よって、カウント制御部２３は、分岐条件が成立した場合に発生する制御ハザードに対しても、正しく個々の命令の実行数をカウントすることができるように、カウント値を制御することができる。
【００８７】
以上のように構成される性能評価モジュール４０は、ＰＣ選択部２１によって選択されたプログラムカウンタ信号に対して、ＰＣ比較部２２によって所定の実行アドレスと一致するか否かを判断し、該判断の結果をカウント制御部２３によってラッチし、該ラッチした信号に対して分岐条件が成立する場合の制御を行った後に、カウンタ２３５によってカウントを行う。これにより、性能評価モジュール４０は、プロセッサモジュール１０で行われる命令のうち所定の実行アドレスに対応する個々の命令の実行数をカウントすることができる。
【００８８】
なお、本例では、性能評価モジュール４０は、１つのＰＣテーブル２４を含むが、これに限られるものではない。性能評価モジュール４０は、複数のＰＣテーブル２４を含み、性能評価モジュール４０が実行される度に、該複数のＰＣテーブル２４のうちから１つのＰＣテーブル２４を選択し、該選択したＰＣテーブル２４に記憶された所定のアドレスとＰＣ選択部２１によって選択されたプログラムカウンタが示す値とを比較しても良い。
【００８９】
また、本例では、性能評価モジュール４０は、ＰＣ選択部２１、ＰＣ比較部２２及びカウント制御部２３をそれぞれ１つずつ含むが、これに限られるものではない。性能評価モジュール４０は、ＰＣ選択部２１、ＰＣ比較部２２及びカウント制御部２３をそれぞれ複数含んでも良い。かかる性能評価モジュール４０は、各ＰＣ比較部２２のＰＣテーブル２４でそれぞれ異なる命令の実行アドレスを記憶することによって、一度の処理で、それぞれ異なる命令の実行数を個別にカウントすることができる。
【００９０】
図６は、本発明の一実施形態に係る性能評価モジュールの動作の一例を示すフローチャートである。同図において、性能評価モジュール４０は、まず、プロセッサモジュール１０から各種の信号を受信する。具体的には、性能評価モジュール４０は、プロセッサモジュール１０の命令フェッチ部１１からプログラムカウンタ信号ＰＣと、レジスタリード部１２からリードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２と、実行部１３からプログラムカウンタ信号ＰＣ２、ライトレジスタ信号ＷＲＥＧ、及び制御信号ＣＮＴとを受信する（Ｓ６０１）。性能評価モジュール４０は、受信したリードレジスタ信号ＲＲＥＧ１及びＲＲＥＧ２とライトレジスタ信号ＷＲＥＧとを比較する（Ｓ６０２）。
【００９１】
次に、性能評価モジュール４０は、制御信号ＣＮＴがメモリモジュール２０に対する読み出し命令を示し、かつ、リードレジスタ信号ＲＲＥＧ１又はＲＲＥＧ２とライトレジスタ信号ＷＲＥＧとが一致するか否かを判断する（Ｓ６０３）。性能評価モジュール４０は、制御信号ＣＮＴがメモリモジュール２０に対する読み出し命令を示し、かつ、リードレジスタ信号ＲＲＥＧ１又はＲＲＥＧ２とライトレジスタ信号ＷＲＥＧとが一致すると判断する場合（Ｓ６０３のＹｅｓ）、実行部１３から出力されるプログラムカウンタ信号ＰＣ２を選択する（Ｓ６０４）。これに対して、性能評価モジュール４０は、制御信号ＣＮＴがメモリモジュール２０に対する読み出し命令を示さないか、又は、リードレジスタ信号ＲＲＥＧ１又はＲＲＥＧ２とライトレジスタ信号ＷＲＥＧとが一致しないと判断する場合（Ｓ６０３のＮｏ）、命令フェッチ部１１から出力されるプログラムカウンタ信号ＰＣを選択する（Ｓ６０５）。
【００９２】
性能評価モジュール４０は、続いて、選択したプログラムカウンタ信号に従って、命令の実行数をカウントする（Ｓ６０６）。なお、ステップＳ６０６の処理の詳細に関しては、図７を参照して説明される。
【００９３】
図７は、本発明の一実施形態に係る性能評価モジュールの動作の一例を示すフローチャートであり、図６のステップＳ６０６の処理の詳細を示している。同図に示すように、まず、性能評価モジュール４０は、図６のステップＳ６０４又はＳ６０５の処理で選択したプログラムカウンタ信号の値と、ＰＣテーブル２４に記憶された値とを比較する（Ｓ７０１）。
【００９４】
次に、性能評価モジュール４０は、プロセッサモジュール１０の実行部１３から出力される結果信号ＲＥＳＵＬＴが“分岐条件命令成立”を示すか否かを判断する（Ｓ７０２）。性能評価モジュール４０は、結果信号ＲＥＳＵＬＴが“分岐条件成立”を示す場合（Ｓ７０２のＹｅｓ）、順序回路２３３（１）及び２３３（２）の入力を順序回路２３３（２）の出力に設定する（Ｓ７０３）。一方、性能評価モジュール４０は、結果信号ＲＥＳＵＬＴが“分岐条件成立”を示さない場合（Ｓ７０２のＮｏ）、順序回路２３３（１）の入力をステップＳ７０１の処理における比較結果に、順序回路２３３（２）の入力を順序回路２３３（１）の出力にそれぞれ設定する（Ｓ７０４）。
【００９５】
性能評価モジュール４０は、次に、順序回路２３３（２）の出力が“１”であるか否かを判断する（Ｓ７０５）。性能評価モジュール４０は、順序回路２３３（２）の出力が“１”である場合（Ｓ７０５のＹｅｓ）、カウンタ２３５をカウントアップさせ（Ｓ７０６）、ステップＳ７０７の処理に進む。これに対して、性能評価モジュール４０は、順序回路２３３（２）の出力が“１”でない場合（Ｓ７０５のＮｏ）、ステップＳ７０７の処理に進む。
【００９６】
性能評価モジュール４０は、順序回路２３３（１）及び２３３（２）の出力を自身の入力にそれぞれ更新し（Ｓ７０７）、処理を終了する。
【００９７】
上述したように、性能評価モジュール４０は、命令フェッチ部１１から出力されるプログラムカウンタの値をＰＣテーブル２４に記憶された値と比較して、該比較の結果に従ってカウントを行うため、ＰＣテーブル２４に記憶された実行アドレスに対応する命令の実行数をカウントすることができる。また、性能評価モジュール４０は、分岐条件が成立すると判断される場合、順序回路２３３（１）及び２３３（２）の入力を順序回路２３３（２）の出力（すなわち、分岐命令のプログラムカウンタの値）に設定するため、分岐命令によって制御ハザードが発生する場合でも、正しく命令の実行数をカウントすることができる。また、性能評価モジュール４０は、メモリモジュール２０に対する読み出し命令の直後に、該読み出し命令の結果を参照する命令が発行された場合、実行部１３から出力されるプログラムカウンタの値を用いるため、該読み出し命令の結果を直後に参照することによって発生するデータハザードに対しても、正しく命令の実行数をカウントすることができる。
【００９８】
次に、性能評価モジュール４０が異なる命令ごとに実行数をカウントする例を図８乃至図１０を参照しつつ説明する。ここでは、性能評価モジュール４０は、特定の１以上の命令ごとに割り当てられた識別子（ＩＤ）に従って識別される命令グループごとに実行数をカウントする。したがって、異なるＩＤごとにその命令の実行アドレスの値を記憶するＰＣテーブル２４が用意され、性能評価モジュール４０は、複数のＰＣテーブル２４のそれぞれに対応した、ＰＣ選択部２１、ＰＣ比較部２２、及びカウント制御部２３からなる構成を複数含む。
【００９９】
図８は、本発明の一実施形態に係る半導体集積回路のプロセッサモジュールによるパイプライン処理における性能評価モジュールのカウントの動作を説明するための概念図である。同図において、プロセッサモジュール１０が所定の動作クロックに従い動作するタイミングをｔ８０１乃至ｔ８０９として示している。すなわち、同図は、ある一連の命令（命令１乃至命令５）のそれぞれが、ある時刻ｔにおいて、プロセッサモジュール１０のどのコンポーネントによって処理されているかを示している。ここで、“ＩＦ”、“ＲＲ”、“ＥＸ”、“ＭＡ”及び“ＷＢ”は、それぞれ、命令フェッチ部１１、レジスタリード部１２、実行部１３、メモリアクセス部１４、及びライトバック部１５を指す。また、命令１、命令３及び命令５にはＩＤ＃０が割り当てられ、命令２及び命令４にはＩＤ＃１が割り当てられている。本例では、第１のＰＣテーブル２４ａには、ＩＤ＃０が割り当てられた命令の実行アドレスが記憶され、第２のＰＣテーブル２４ｂには、ＩＤ＃１が割り当てられた命令の実行アドレスが記憶され、第３のＰＣテーブル２４ｃにはＩＤ＃０及びＩＤ＃１が割り当てられた命令の実行アドレスが記憶されているものとする。
【０１００】
時刻ｔ８０１で、プロセッサモジュール１０の命令フェッチ部１１は、メモリモジュール２０から命令１をフェッチし、命令１に対するプログラムカウンタの値を性能評価モジュール４０に出力する。性能評価モジュール４０は、上述したように、２クロック分にわたってラッチしたプログラムカウンタの値と、ＰＣテーブル２４に記憶された所定の実行アドレスの値とを比較し、これらが一致していると判断する場合に、対応する命令の実行数をカウントアップするが、命令１に対するプログラムカウンタの値は、まだ２クロック分ラッチされていないため、性能評価モジュール４０は、カウントアップを行わない。したがって、ＩＤ＃０及びＩＤ＃１に対応する命令の実行数は、０のままである。
【０１０１】
時刻ｔ８０２では、命令フェッチ部１１は、命令２をフェッチし、命令２に対するプログラムカウンタの値を性能評価モジュール４０に出力する。また、プロセッサモジュール１０は、レジスタリード部１２によって命令１を処理する。命令１及び命令２に対するプログラムカウンタの値は、まだ２クロック分ラッチされていないため、性能評価モジュール４０は、ＩＤ＃０及びＩＤ＃１に対応する命令の実行数をカウントアップせず、したがって、その実行数及び全体の命令の実行数は０のままである。
【０１０２】
時刻ｔ８０３で、命令フェッチ部１１は、命令３をフェッチし、命令３に対するプログラムカウンタの値を性能評価モジュール４０に出力する。また、レジスタリード部１２は、命令２を処理する一方、実行部１３は、命令１を処理する。時刻ｔ８０３で命令１に対するプログラムカウンタの値が２クロック分ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数を１つカウントアップし、１とする。一方、命令２に対するプログラムカウンタの値は、まだ２クロック分ラッチされていないため、ＩＤ＃１に対応する命令の実行数は、０のままである。時刻ｔ８０３で、全体の命令の実行数は、ＩＤ＃０及びＩＤ＃１に対応する命令の実行数の合計であるため、１となる。
【０１０３】
時刻ｔ８０４で、命令フェッチ部１１は、命令４をフェッチし、命令４に対するプログラムカウンタの値を性能評価モジュール４０に出力する。また、レジスタリード部１２は、命令３を処理し、実行部１３は、命令２を処理し、メモリアクセス部１４は、命令１を処理する。時刻ｔ８０４で、命令２に対するプログラムカウンタの値が２クロック分ラッチされるため、性能評価モジュール４０は、ＩＤ＃１に対応する命令の実行数を１つカウントアップし、１とする。時刻ｔ８０４で、全体の命令の実行数は、２となる。
【０１０４】
時刻ｔ８０５で、命令フェッチ部１１は、命令５をフェッチし、命令５を示すプログラムカウンタの値を性能評価モジュール４０に出力する。また、レジスタリード部１２、実行部１３、メモリアクセス部１４、及びライトバック部１５は、それぞれ、命令４、命令３、命令２、及び命令１を処理する。時刻ｔ８０４で、命令３に対するプログラムカウンタの値が２クロック分ラッチされているため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数を１つカウントアップし、２とする。時刻ｔ８０５で、全体の命令の実行数は、３となる。
【０１０５】
時刻ｔ８０６以降においても、プロセッサモジュール１０の各コンポーネントは、上述したように、一連の命令をパイプライン処理する。性能評価モジュール４０は、プロセッサモジュール１０から受信するプログラムカウンタの値を２クロック分ラッチしたプログラムカウンタの値について、該プログラムカウンタの値がＰＣテーブル２４に記憶された所定の実行アドレスの値と一致する場合、該プログラムカウンタに１つカウントアップする。
【０１０６】
上述したように、プロセッサモジュール１０の各コンポーネントは、一連の命令を順次にパイプライン処理する一方で、性能評価モジュール４０が、命令フェッチ部１１から送られるプログラムカウンタの値を２クロック分ラッチしながら、プログラムカウンタの値がＰＣテーブル２４に記憶された所定の実行アドレスの値と一致している場合に、カウントを行う。これにより、性能評価モジュール４０は、クロックサイクルベースで、特定の命令の実行数をカウントすることができる。
【０１０７】
次に、一連の命令に分岐命令が含まれている場合の、性能評価モジュール４０による実行数のカウントについて説明する。図９は、本発明の一実施形態に係る半導体集積回路のプロセッサモジュールによるパイプライン処理における性能評価モジュールのカウントの動作を説明するための概念図である。同図において、プロセッサモジュール１０が所定の動作クロックに従い動作するタイミングをｔ９０１乃至ｔ９０９として示している。本例では、命令１及び命令４にはＩＤ＃０が割り当てられ、命令２、命令３及び命令５にはＩＤ＃１が割り当てられている。また、第１のＰＣテーブル２４ａには、ＩＤ＃０が割り当てられた命令の実行アドレスが記憶され、第２のＰＣテーブル２４ｂには、ＩＤ＃１が割り当てられた命令の実行アドレスが記憶され、第３のＰＣテーブル２４ｃには、ＩＤ＃０及びＩＤ＃１に割り当てられた命令の実行アドレスが記憶されているものとする。また、命令１は、分岐条件が成立する場合に、命令４に分岐する一方で、分岐条件が成立しない場合に命令２に続く命令であるものとする。
【０１０８】
時刻ｔ９０１で、命令フェッチ部１１は、同様に、命令１をフェッチし、命令１に対するプログラムカウンタの値を性能評価モジュール４０に出力する。命令１に対するプログラムカウンタの値は、まだ２クロック分ラッチされていないため、性能評価モジュール４０は、カウントアップを行わない。したがって、ＩＤ＃０及びＩＤ＃１に対応する命令と全体の命令の実行数は、０のままである。なお、命令１は、実行部１３によって処理が行われるまで分岐条件が成立するか否かは不明である。プロセッサモジュール１０の各コンポーネントは、命令１の分岐条件が成立するか否かが判明するまで、上述したような、命令に対する所与の処理を遂行する。
【０１０９】
時刻ｔ９０２で、命令フェッチ部１１は、命令２をフェッチし、命令２に対するプログラムカウンタの値を性能評価モジュール４０に出力する。また、レジスタリード部１２は、命令１を処理する。時刻ｔ９０２で、命令１に対するプログラムカウンタの値は、まだ２クロック分ラッチされていないため、ＩＤ＃０及びＩＤ＃１に対応する命令の実行数と全体の命令の実行数は、０のままである。
【０１１０】
時刻ｔ９０３で、命令フェッチ部１１は、命令３をフェッチし、命令３に対するプログラムカウンタの値を性能評価モジュール４０に出力する。また、実行部１３は、命令１を処理する。本例では、実行部１３は、処理の結果、分岐条件が成立すると判断し、“分岐条件成立”を示す制御信号ＣＮＴを性能評価モジュール４０に出力する。性能評価モジュール４０は、制御信号ＣＮＴに従って、ラッチしている２クロック分の（すなわち、命令１及び命令２に対する）プログラムカウンタの値の全てを命令１に対するプログラムカウンタの値に変更する。性能評価モジュール４０は、命令１に対するプログラムカウンタの値をカウントするため、ＩＤ＃０に対応する命令の実行数を、１とする。一方、命令２に対するプログラムカウンタの値は、命令１に対するプログラムカウンタの値に変更されたためカウントされず、ＩＤ＃１に対応する命令の実行数は、０のままである。時刻ｔ９０３で、全体の命令の実行数は１となる。
【０１１１】
時刻ｔ９０４で、命令フェッチ部１１は、命令４をフェッチし、命令４に対するプログラムカウンタの値を性能評価モジュール４０に出力する。また、メモリアクセス部１４は、命令１を処理するが、実行部１３において分岐条件が成立したため、レジスタリード部１２による命令３に対する処理及び実行部１３による命令２に対する処理は中止される。時刻ｔ９０４で、命令１に対するプログラムカウンタの値が２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数をカウントアップし、２とする。時刻ｔ９０４で、全体の命令の実行数は２となる。
【０１１２】
時刻ｔ９０５で、命令フェッチ部１１は、命令５をフェッチし、命令５に対するプログラムカウンタの値を性能評価モジュール４０に出力する。また、レジスタリード部１２は、命令４を処理するとともに、ライトバック部１５は、命令１を処理する。命令１に対するプログラムカウンタの値が２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数をカウントアップし、３とする。一方、時刻ｔ９０５で、命令５に対するプログラムカウンタの値は２回ラッチされていないため、ＩＤ＃１に対応する命令の実行数は、０のままである。時刻ｔ９０５で、全体の命令の実行数は３となる。
【０１１３】
時刻ｔ９０６で、レジスタリード部１２は、命令５を処理し、また、実行部１３によって命令４を処理する。命令４に対するプログラムカウンタの値が２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数をカウントアップし、４とする。一方、時刻ｔ９０６で、命令５に対するプログラムカウンタの値は２回ラッチされていないため、ＩＤ＃１に対応する命令の実行数は、０のままである。時刻ｔ９０５で、全体の命令の実行数は４となる。
【０１１４】
時刻ｔ９０７で、実行部１３は、命令５を処理し、また、メモリアクセス部１４は、命令４を処理する。時刻ｔ９０７で、命令５に対するプログラムカウンタの値は２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃１に対応する命令の実行数をカウントアップし、１とする。時刻ｔ９０７で、全体の命令の実行数は５となる。
【０１１５】
上述したように、プロセッサモジュール１０の各コンポーネントは、一連の命令に分岐命令が含まれる場合に、分岐条件が成立するか否かが判明するまで、命令に対する所与の処理を進めるが、分岐条件が成立すると判断されるとこれまでの処理を中止して、分岐条件が成立したことを示す制御信号ＣＮＴを性能評価モジュール４０に出力する。性能評価モジュール４０は、制御信号ＣＮＴに従って、２クロック分ラッチしているプログラムカウンタの値を分岐命令に対応するプログラムカウンタの値に変更する。これにより、性能評価モジュール４０は、分岐命令の実行により発生する制御ハザードによる遅延を分岐命令による遅延としてカウントするため、個々の命令の実行数をクロックサイクルベースで正しくカウントすることができる。
【０１１６】
図１０は、本発明の一実施形態に係る半導体集積回路のプロセッサモジュールによるパイプライン処理における性能評価モジュールのカウントの動作を説明するための概念図である。同図において、プロセッサモジュール１０の各構成要素が各命令を処理する時刻を時刻ｔ１００１乃至ｔ１００８とする。また、同図において、命令１乃至命令３にはＩＤ＃０が割り振られ、命令４にはＩＤ＃１が割り振られる。第１のＰＣテーブル２４ａには、ＩＤ＃０が割り当てられた命令の実行アドレスが記憶され、第２のＰＣテーブル２４ｂには、ＩＤ＃１が割り当てられた命令の実行アドレスが記憶され、第３のＰＣテーブル２４ｃには、ＩＤ＃０及びＩＤ＃１が割り当てられた命令の実行アドレスが記憶されているものとする。
【０１１７】
時刻ｔ１００１で、プロセッサモジュール１０は、メモリモジュール２０から命令１を受信し、命令フェッチ部１１によって命令１を処理する。また命令フェッチ部１１は、命令１を示すプログラムカウンタの値を性能評価モジュール４０に出力する。命令１に対するプログラムカウンタの値は、まだ２クロック分ラッチされていないため、性能評価モジュール４０は、カウントアップを行わない。したがって、ＩＤ＃０及びＩＤ＃１に対応する命令と全体の命令の実行数は、０のままである。
【０１１８】
時刻ｔ１００２で、プロセッサモジュール１０は、メモリモジュール２０からメモリモジュール２０に対する読み出しを示す命令２を受信し、命令フェッチ部１１によって命令２を処理する。また、命令フェッチ部１１は、命令２を示すプログラムカウンタの値を性能評価モジュール４０に出力する。また、プロセッサモジュール１０は、レジスタリード部１２によって、命令１を処理する。時刻ｔ１００２で、命令１に対するプログラムカウンタの値は２回分ラッチされていないため、ＩＤ＃０に対応する命令の実行数はまだ０である。時刻ｔ１００２で、全体の命令の実行数は、０のままである。
【０１１９】
時刻ｔ１００３で、プロセッサモジュール１０は、メモリモジュール２０から命令２の結果を参照する命令３を受信し、命令フェッチ部１１によって命令３を処理する。また、命令フェッチ部１１は、命令３を示すプログラムカウンタの値を性能評価モジュール４０に出力する。また、プロセッサモジュール１０は、レジスタリード部１２によって命令２を処理するとともに、実行部１３によって命令１を処理する。時刻ｔ１００３で、命令１のプログラムカウンタの値が２回分ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数をカウントアップし、１とする。時刻ｔ１００３で、全体の命令の実行数は１となる。
【０１２０】
時刻ｔ１００４で、プロセッサモジュール１０は、メモリモジュール２０から命令４を受信し、命令フェッチ部１１によって命令４を処理する。プロセッサモジュール１０は、実行部１３によって命令２を処理するとともに、メモリアクセス部１４によって命令１を処理する。また、プロセッサモジュール１０は、命令３が命令２の結果を参照する命令であること、命令２がメモリモジュール２０に対する読み出し命令であること、及び命令２がメモリアクセス１４による処理ステージに至っていないこととから、レジスタリード部１２による命令３の処理を行わずに待機させる。
【０１２１】
時刻ｔ１００４で、性能評価モジュール４０は、レジスタリード部１２のリードレジスタ信号ＲＲＥＧ１又はＲＲＥＧ２と、実行部１３のライトレジスタ信号ＷＲＥＧが一致して、かつ、実行部１３の制御信号ＣＮＴがメモリモジュール２０に対する読み出し命令であると判断する。性能評価モジュール４０は、該判断の結果に従って、実行部１３の命令２のプログラムカウンタの値をラッチする。時刻ｔ１００４で、命令２のプログラムカウンタの値が２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数をカウントアップし、２とする。時刻ｔ１００４で、全体の命令の実行数は２となる。
【０１２２】
時刻ｔ１００５で、プロセッサモジュール１０は、レジスタリード部１２による命令３の処理が終わっていないことから、再び命令フェッチ部１１によって命令４を処理する。また、命令フェッチ部１１は、命令４を示すプログラムカウンタの値を性能評価モジュール４０に出力する。プロセッサモジュール１０は、レジスタリード部１２によって命令３を処理するとともに、メモリアクセス部１４によって命令２を処理し、ライトバック部１５によって命令１を処理する。時刻ｔ１００５で、命令３のプログラムカウンタの値が２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数をカウントアップし、３とする。時刻ｔ１００５で、全体の命令の実行数は３となる。
【０１２３】
時刻ｔ１００６で、プロセッサモジュール１０は、レジスタリード部１２によって命令４を処理するとともに、実行部１３によって命令３を処理し、ライトバック部１５によって命令２を処理する。時刻ｔ１００６で、命令３のプログラムカウンタの値が２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃０に対応する命令の実行数をカウントアップし４とする。時刻ｔ１００６で、全体の命令の実行数は４となる。
【０１２４】
時刻ｔ１００７で、プロセッサモジュール１０は、実行部１３によって命令４を処理するとともに、メモリアクセス部１４によって命令３を処理する。時刻ｔ１００７で命令４のプログラムカウンタの値が２回ラッチされるため、性能評価モジュール４０は、ＩＤ＃１に対応する命令の実行数をカウントアップし、１とする。時刻ｔ１００７で、全体の命令の実行数は５となる。
【０１２５】
上述したように、プロセッサモジュール１０は、メモリモジュール２０に対する読み出し命令を行った直後に、該命令の結果を参照する命令を受信した場合、命令の結果を参照する命令をレジスタリード部１２のステージで１ステージ分待機させる。また、性能評価モジュール４０は、メモリモジュール２０に対する読み出し命令を行った直後に、該命令の結果を参照する命令が発せられた場合、実行部１３のプログラムカウンタの値をラッチするため、待機による遅延時間をメモリモジュール２０に対する読み出し命令のプログラムカウンタの値としてカウントする。
【０１２６】
これにより、性能評価モジュール４０は、メモリモジュール２０に対する読み出し命令を行った直後に、該読み出しの結果を参照する命令が発せられた場合に発生するデータハザードに対しても、正しく個々の命令の実行数をカウントすることができる。なお、本実施形態では、読み出し命令を例にして説明したが、例えば、書き込み命令についても同様に適用することができる。
【０１２７】
図１１は、本発明の一実施形態に係る半導体集積回路の概略構成の他の例を示す図である。同図に示すように、本実施形態に係る半導体集積回路１’は、複数の性能評価モジュール４０（１）乃至４０（ｍ）を含んで構成される。
【０１２８】
性能評価モジュール４０（１）乃至４０（ｍ）の回路構成自体は同じであるが、それぞれのＰＣテーブル２４に記憶される内容（すなわち、実行アドレスの値）が異なっている。つまり、各ＰＣテーブル２４には、それぞれ異なるＩＤが割り当てられた命令の実行アドレスの値が記憶される。性能評価モジュール４０（１）乃至４０（ｍ）は、それぞれのカウントの結果をカウント信号ＣＯＵＮＴ（１）乃至ＣＯＵＮＴ（ｍ）としてチップセット３０を介してメモリモジュール２０に出力する。これにより、半導体集積回路１’は、一度のプログラムの実行で、性能評価モジュール４０の数に応じた異なる命令の実行数をカウントすることができる。
【０１２９】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
【０１３０】
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【０１３１】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ（技術的事項）を適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
【産業上の利用可能性】
【０１３２】
本発明は、プロセッサを備える半導体集積回路の分野に広く利用することができる。
【符号の説明】
【０１３３】
１…半導体集積回路
１０…プロセッサモジュール
１１…命令フェッチ部
１１１…プログラムカウンタ
１１２…命令キャッシュ
１２…レジスタリード部
１２１…レジスタ
１２２…レジスタファイル
１３…実行部
１３１…レジスタ
１３２…演算部
１４…メモリアクセス部
１４１…レジスタ
１４２…データキャッシュ
１５…ライトバック部
１５１…レジスタ
１５２…選択回路
２０…メモリモジュール
３０…チップセット
４０…性能評価モジュール
２１…ＰＣ選択部
２１１…比較器
２１２…論理和回路
２１３…信号判断部
２１４…論理積回路
２１５…選択回路
２２…ＰＣ比較部
２２１…比較器
２２２…論理和回路
２３…カウント値制御部
２３１…信号判断部
２３２…選択回路
２３３…順序回路
２３４…論理積回路
２３５…カウンタ
２４…ＰＣテーブル
５０…ストレージデバイス
６０…入出力装置
【図１】
0006473023.tif 000002
【図２】
0006473023.tif 000003
【図３】
0006473023.tif 000004
【図４】
0006473023.tif 000005
【図５】
0006473023.tif 000006
【図６】
0006473023.tif 000007
【図７】
0006473023.tif 000008
【図８】
0006473023.tif 000009
【図９】
0006473023.tif 000010
【図１０】
0006473023.tif 000011
【図１１】
0006473023.tif 000012