(57)【要約】【課題】キャッシュメモリのフラッシュ動作を行わずに、キャッシュヒット率を低下させることができるプロセッサ評価装置を提供する。【解決手段】キャッシュメモリへのキャッシュヒット率を考慮して行うプロセッサ評価装置において、アクセスカウンタ回路202は、プロセッサがキャッシュメモリに対して行うメモリアクセスの回数をカウントする。コンペア回路203は、カウントしたメモリアクセスの回数と、キャッシュミスを発生させる頻度を示すキャッシュミスポイント信号26とを比較する。セレクタ201は、プロセッサが出力するアドレス22を、キャッシュミスを起こすダミーベースアドレス24に変更する。変更されたアドレスに基づいて、キャッシュメモリにヒットしたかどうかをヒットミス判定回路は判定する。【選択図】図３
2007128236.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、該プロセッサがアクセスするキャッシュメモリと、該キャッシュメモリにヒットしなかったときにアクセスする記憶手段とを含み、該プロセッサの性能評価を、少なくとも該キャッシュメモリへのキャッシュヒット率を考慮して行うプロセッサ評価装置において、該装置は、
前記プロセッサが出力するアドレスを、キャッシュミスを起こすアドレスに変更する変更手段と、
該変更手段により変更されたアドレスに基づいて、前記キャッシュメモリにヒットしたかどうかを判定する判定手段と、
該判定手段の判定が、ヒットしていないという判定であるとき、前記記憶手段へのアクセスを行うアクセス手段と、
前記プロセッサの性能を評価する評価手段とを含み、キャッシュヒット率を低下させて前記プロセッサの性能評価を行うことを特徴とするプロセッサ評価装置。
【請求項２】
請求項１に記載のプロセッサ評価装置において、該装置は、前記プロセッサが前記キャッシュメモリに対して行うメモリアクセスの回数をカウントするカウント手段を含み、
前記変更手段は、該カウント手段がカウントしたメモリアクセスの回数と、キャッシュミスを発生させる回数を示すデータとに基づいて、前記プロセッサが出力するアドレスを、キャッシュミスを起こすアドレスに変更することを特徴とするプロセッサ評価装置。
【請求項３】
プロセッサと、該プロセッサがアクセスするキャッシュメモリと、該キャッシュメモリにヒットしなかったときにアクセスする記憶手段とを含み、該プロセッサの性能評価を、少なくとも該キャッシュメモリへのキャッシュヒット率を考慮して行うプロセッサ評価装置において、該装置は、
前記プロセッサが出力するアドレスに依存しないで、キャッシュミスが発生したという判定を行う判定手段と、
該キャッシュミスを起こしたという判定に従って、前記記憶手段へのアクセスを行うアクセス手段と、
前記プロセッサの性能を評価する評価手段とを含み、キャッシュヒット率を低下させて前記プロセッサの性能評価を行うことを特徴とするプロセッサ評価装置。
【請求項４】
請求項３に記載のプロセッサ評価装置において、該装置は、キャッシュヒットの回数をカウントするカウント手段を含み、
前記判定手段は、該カウント手段がカウントしたキャッシュヒットの回数と、キャッシュミスを発生させる回数を示すデータとに基づいて、キャッシュミスが発生したという判定を行うことを特徴とするプロセッサ評価装置。
【請求項５】
請求項３または４に記載のプロセッサ評価装置において、
前記判定手段は、キャッシュミスが発生したという判定を、前記キャッシュメモリにヒットしたときに行い、該キャッシュヒットという判定を、キャッシュミスという判定に変更し、
前記アクセス手段は、該変更された判定に従って、前記記憶手段へのアクセスを行うことを特徴とするプロセッサ評価装置。
【請求項６】
キャッシュメモリにアクセスするプロセッサの性能評価を、少なくとも該キャッシュメモリへのキャッシュヒット率を考慮して行うプロセッサ評価方法において、該方法は、
前記プロセッサが出力するアドレスを、キャッシュミスを起こすアドレスに変更する工程と、
該変更されたアドレスに基づいて、前記キャッシュメモリにヒットしたかどうかを判定する工程と、
該判定が、ヒットしていないという判定であるとき、記憶手段へのアクセスを行う工程と、
前記プロセッサの性能を評価する工程とを含み、キャッシュヒット率を低下させて前記プロセッサの性能評価を行うことを特徴とするプロセッサ評価方法。
【請求項７】
請求項６に記載のプロセッサ評価方法において、該方法は、前記プロセッサが前記キャッシュメモリに対して行うメモリアクセスの回数をカウントする工程を含み、
前記アドレスを変更する工程は、該カウントしたメモリアクセスの回数と、キャッシュミスを発生させる回数を示すデータとに基づいて、前記プロセッサが出力するアドレスを、キャッシュミスを起こすアドレスに変更することを特徴とするプロセッサ評価方法。
【請求項８】
キャッシュメモリにアクセスするプロセッサの性能評価を、少なくとも該キャッシュメモリへのキャッシュヒット率を考慮して行うプロセッサ評価方法において、該方法は、
前記プロセッサが出力するアドレスに依存しないで、キャッシュミスが発生したという判定を行う工程と、
キャッシュミスを起こしたという判定に従って、記憶手段へのアクセスを行う工程と、
前記プロセッサの性能を評価する工程とを含み、キャッシュヒット率を低下させて前記プロセッサの性能評価を行うことを特徴とするプロセッサ評価方法。
【請求項９】
請求項８に記載のプロセッサ評価方法において、該方法は、キャッシュヒットの回数をカウントする工程を含み、
前記判定を行う工程は、該カウントしたキャッシュヒットの回数と、キャッシュミスを発生させる回数を示すデータとに基づいて、キャッシュミスが発生したという判定を行うことを特徴とするプロセッサ評価方法。
【請求項１０】
請求項６または９に記載のプロセッサ評価方法を用いて設計されたプロセッサの製造方法において、該方法は、
前記評価に基づいて前記プロセッサを設計する工程と、
該設計に基づいて該プロセッサを製造する工程とを含むことを特徴とする製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリへアクセスするプロセッサの性能評価を、キャッシュメモリへのキャッシュヒット率を考慮して行うプロセッサ評価装置およびプロセッサ評価方法、ならびに、このプロセッサ評価方法を用いて設計されたプロセッサの製造方法に関するものである。
【背景技術】
【０００２】
プロセッサは情報処理装置において用いられ、演算処理等を行う。情報処理装置としてはマイクロコンピュータや、マイクロコンピュータの一種で制御用であるマイクロコントローラ等がある。マイクロコンピュータやマイクロコントローラでは、LSI化されたプロセッサ、すなわちマイクロプロセッサが用いられる。
【０００３】
一般に、プロセッサの性能はプログラムの処理時間によって評価される。プログラムの処理時間を向上させるため、プロセッサの内部もしくは外部にキャッシュメモリを搭載する方法がある。キャッシュメモリは高速にアクセス可能なメモリであるが、容量が少ないため、メインメモリに格納されているデータの一部を格納する。プロセッサは通常、キャッシュメモリとして、命令を格納する命令キャッシュと、データを格納するデータキャッシュとを、内部もしくは外部に有する。
【０００４】
プロセッサが命令を読み込む場合、命令キャッシュに命令が存在すれば、すなわちキャッシュヒットのときは、高速に読み込めるため、処理時間は短くなる。一方、命令キャッシュに命令が存在しなければ、すなわち、キャッシュミスのときは、メインメモリにアクセスするため、処理時間が長くなる。データを読み込む場合も同様である。したがって、キャッシュメモリを搭載したプロセッサは、キャッシュヒットの割合、すなわちキャッシュヒット率が低下すると、性能が低下する。そのため、キャッシュメモリを搭載したプロセッサは、キャッシュヒット率が低下した場合のプログラムの処理時間を評価している。すなわち、プロセッサの性能の下限を測定する。なおキャッシュヒット率は、さまざまな定義があるが、たとえばキャッシュメモリへのアクセス回数に対するキャッシュヒットの回数、キャッシュミスの回数に対するキャッシュヒットの回数、または、所定時間または所定サイクル数内のキャッシュヒットの回数で定義される。
【０００５】
キャッシュヒット率は、プログラムが実行されていくにつれて、キャッシュメモリに命令およびデータが蓄積されるため、高くなる。そこで、キャッシュヒット率を低下させる方法として、プログラムの実行途中でキャッシュメモリを空の状態にすることがある。これをフラッシュと呼ぶ。キャッシュメモリが空の状態でプログラムを実行すると、キャッシュメモリにデータが存在しないため、キャッシュミスが発生する回数が増加する。これにより、プログラムを実行した時のキャッシュヒット率が低下する。また、プログラムの実行時に発生させるフラッシュ動作の頻度を増加させると、キャッシュメモリが空の状態でプログラムを実行する割合も増加し、キャッシュヒット率が低下する割合が大きくなる。そこで、キャッシュメモリをフラッシュする回数を変動させて、処理時間を測定し、プロセッサの性能を評価する。
【０００６】
キャッシュメモリをフラッシュする動作は、評価するプログラムの処理から外れて、実施され、フラッシュ動作の終了後、キャッシュメモリが空の状態で、元のプログラムの処理を再開する。この動作をプログラム実行中に入れることで、キャッシュヒット率を低下させて測定を行う。
【０００７】
キャッシュヒット率を低下させて、プロセッサの性能を評価する方法としては、たとえば特許文献１に記載の技術がある。これは、プロセッサの性能を実際に測定するものではなく、ソフトウェア的にマイクロプロセッサの動作をシミュレーションするシミュレーション装置において、キャッシュミス率を指定して、プログラムの実行時間を計算により正確に求めるものである。この装置は、フラッシュ動作を用いて性能評価を行うものではない。また、実行時間を実際に測定するものでもない。
【０００８】
【特許文献１】特開２０００−２２２２４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
キャッシュメモリをフラッシュすることにより、キャッシュヒット率を低下させる方法、すなわちキャッシュミス率を増加させる方法の場合、評価するプログラムの処理から外れて、キャッシュメモリをフラッシュする動作を行うため、評価するプログラムの処理時間とは関係のないフラッシュ動作の時間が、評価に含まれてしまう。そこで、フラッシュ動作の時間をプログラムの処理時間から除外するが、パイプライン動作にフラッシュ動作が入ってしまうため、正確にフラッシュ動作の時間だけを除外することができない。そのため、単純にキャッシュミスが発生した時に比べて、誤差を含んだプログラムの処理時間となる。この誤差はキャッシュメモリをフラッシュする毎に発生するため、フラッシュの回数を増加させると誤差も大きくなり、評価結果の精度が低くなるという問題があった。
【００１０】
本発明はこのような課題に鑑み、キャッシュメモリのフラッシュ動作を行わずに、キャッシュヒット率を低下させることができるプロセッサ評価装置、プロセッサ評価方法、およびプロセッサの製造方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は上述の課題を解決するために、プロセッサと、プロセッサがアクセスするキャッシュメモリと、キャッシュメモリにヒットしなかったときにアクセスする記憶手段とを含み、プロセッサの性能評価を、少なくともキャッシュメモリへのキャッシュヒット率を考慮して行うプロセッサ評価装置において、プロセッサが出力するアドレスを、キャッシュミスを起こすアドレスに変更する変更手段と、変更手段により変更されたアドレスに基づいて、キャッシュメモリにヒットしたかどうかを判定する判定手段と、判定手段の判定が、ヒットしていないという判定であるとき、記憶手段へのアクセスを行うアクセス手段と、プロセッサの性能を評価する評価手段とを含み、キャッシュヒット率を低下させてプロセッサの性能評価を行うことを特徴とする。
【００１２】
本発明によると、キャッシュメモリのフラッシュ動作をすることなく、キャッシュヒット率を低下させることができる。
【００１３】
本発明においては、プロセッサ評価装置が、プロセッサがキャッシュメモリに対して行うメモリアクセスの回数をカウントするカウント手段を含み、変更手段は、カウント手段がカウントしたメモリアクセスの回数と、キャッシュミスを発生させる回数を示すデータとに基づいて、プロセッサが出力するアドレスを、キャッシュミスを起こすアドレスに変更することが好ましい。
【００１４】
本発明によると、プロセッサは、評価対象のプログラムを実行すると、外部から設定したキャッシュメモリへのアクセス回数毎に必ずキャッシュミスが発生する。したがって、キャッシュメモリのフラッシュ動作をすることなく、キャッシュヒット率を低下させることができる。さらに、この外部からの設定は可変とすることも可能であり、キャッシュヒット率を変動させた測定ができる。
【００１５】
また、ハードウェアでキャッシュミスを発生させることができるため、プロセッサは、評価するプログラムの流れの中でキャッシュミスが発生したのと同様のパイプライン動作となる。このように、キャッシュメモリのフラッシュ動作を、プログラムの処理に入れずにパイプライン動作させるため、従来よりも精度の高いプロセッサの性能評価が可能となる。
【００１６】
本発明は、また、上記の課題を解決するために、プロセッサが出力するアドレスに依存しないで、キャッシュミスが発生したという判定を行う判定手段と、キャッシュミスを起こしたという判定に従って、記憶手段へのアクセスを行うアクセス手段と、プロセッサの性能を評価する評価手段とを含み、キャッシュヒット率を低下させてプロセッサの性能評価を行うこととしてもよい。この発明においても、前述の発明と同様な効果を得ることができる。
【００１７】
さらに、本発明では、プロセッサ評価装置が、キャッシュヒットの回数をカウントするカウント手段を含み、判定手段は、カウント手段がカウントしたキャッシュヒットの回数と、キャッシュミスを発生させる回数を示すデータとに基づいて、キャッシュミスが発生したという判定を行うことが好ましい。
【００１８】
これによれば、既述の本発明では、アクセス回数に対して、キャッシュミスを発生させているため、キャッシュヒット率が下がらないこともありうるが、この発明では、キャッシュヒットの回数をカウントして、所定の回数に達すると、キャッシュミスを発生させているため、キャッシュヒット率が確実に低下する。
【発明の効果】
【００１９】
本発明によれば、キャッシュメモリのフラッシュ動作をすることなく、キャッシュヒット率を低下させることができる。したがって、評価するプログラム以外の処理をしないで、キャッシュヒット率を低下させることができる。
【発明を実施するための最良の形態】
【００２０】
次に添付図面を参照して、本発明によるプロセッサ評価装置の一実施例を詳細に説明する。本実施例では評価装置はたとえば、ワークステーションであり、ワークステーションは、マイクロコンピュータ、ハードディスク装置、およびモニタ等を含む。マイクロコンピュータはプロセッサを含み、本実施例では、プロセッサは、性能評価の対象であると同時に、自身の性能測定を行うことができる。すなわち、このプロセッサは、評価対象である評価プログラムを実行するとともに、評価プログラムを実行するために要した時間を評価するためのプログラムであるデバッガを実行する。
【００２１】
デバッガは、プロセッサの性能を評価する評価手段であり、プログラムの実行時間、サイクル数、実行命令数などの計測機能を有する。デバッガは、プロセッサがプログラムを実行する時間等を計測することにより、プロセッサの性能評価を行う。
【００２２】
デバッガを用いた実行時間計測は、たとえば次のように行う。ワークステーションに含まれるハードディスク装置に評価プログラムを格納し、キャッシュミスを発生させる回数もしくは頻度を示すデータを、後述するようにプロセッサのキャッシュ機構に設定する。デバッガに、デバッグの対象として、上記評価プログラムを指示し、かつ実行時間を計測することを指示した後、デバッガを実行する。デバッガは、時間計測を開始するとともに評価プログラムを起動する。評価プログラムの実行が終了すると、デバッガは時間計測を終了し、評価プログラムの起動から終了までに要した時間をハードディスク装置に保存するとともに、ユーザの指示に応じて、モニタに表示する。キャッシュミスを発生させる頻度を示すデータを変えて、デバッガにより同様に時間計測を行うことができる。
【００２３】
なお、プロセッサと評価装置とを別のものとし、プロセッサと評価装置とを、電気的に接続し、プロセッサは評価プログラムを実行し、評価装置は、デバッガを実行することとしてもよい。
【００２４】
次に、本実施例のマイクロコンピュータについて、図１により説明する。図１は、マイクロコンピュータ10の構成を示し、とくにキャッシュ機構に係わる部分のみを示す。図１を参照すると、マイクロコンピュータ10は、プロセッサ12と、プロセッサ12がアクセスするプロセッサ12に接続された命令キャッシュ14およびデータキャッシュ16と、各キャッシュ14, 16に接続された命令メインメモリ18およびデータメインメモリ20とを含む。本実施例では、キャッシュ機構は、命令を格納する命令キャッシュ14と、データを格納するデータキャッシュ16とを有し、命令とデータを別々のキャッシュメモリに格納する。命令メインメモリ18およびデータメインメモリ20には、命令キャッシュ14およびデータキャッシュ16内にあるキャッシュメモリにヒットしなかったときに、アクセスする。
【００２５】
プロセッサ12は、命令を読み出すときは、命令アドレス出力端子IADDRに接続された信号線12aを介して、命令キャッシュ14に、読み込むべき命令のアドレスを出力する。命令キャッシュ14は、信号線12aに接続された命令アドレス入力端子ICADDRIから命令のアドレスを入力される。
【００２６】
命令キャッシュ14は、当該アドレスで指定された命令を、命令キャッシュ14内のキャッシュメモリに格納しているかどうかを判定する。判定の詳細は後述する。格納している場合(キャッシュヒットの場合)は、ただちに、その命令を、命令データ出力端子ICDATA0に接続された信号線14aを介して、プロセッサ12に出力する。プロセッサ12は、信号線14aに接続された命令データ入力端子IDATAから命令を入力される。
【００２７】
一方、命令キャッシュ14が、当該アドレスで指定された命令を、命令キャッシュ14内のキャッシュメモリに格納していない場合(キャッシュミスの場合)、命令キャッシュ14は、命令アドレス出力端子ICADDR0に接続された信号線14bを介して、命令メインメモリ18に、当該アドレスを出力する。命令メインメモリ18は、信号線14bに接続された命令アドレス入力端子IMADDRから当該アドレスを入力される。
【００２８】
命令メインメモリ18は、当該アドレスで指定された命令を、命令データ出力端子IMDATAに接続された信号線18aを介して、命令キャッシュ14に出力する。命令キャッシュ14は、その命令を、命令データ出力端子ICDATA0に接続された信号線14aを介して、プロセッサ12に出力する。プロセッサ12は、信号線14aに接続された命令データ入力端子IDATAから命令を入力される。
【００２９】
プロセッサ12が、データを読み書きするときは、命令を読み出すときと、ほぼ同様に処理する。命令の場合は、読出しのみであったが、データの場合は、読出しと書込みがある点で異なる。データを読み書きするとき、プロセッサ12は、データアドレス出力端子DADDRに接続された信号線12bを介して、データキャッシュ16に、読み書きすべきデータのアドレスを出力する。データキャッシュ16は、信号線12bに接続されたデータアドレス入力端子DCADDRIからデータのアドレスを入力される。
【００３０】
データキャッシュ16は、当該アドレスで指定されたデータを、データキャッシュ16内のキャッシュメモリに格納している場合(キャッシュヒットの場合)は、ただちに、そのデータを、データ入出力端子DCDATA1に接続された信号線16aを介して、プロセッサ12に出力(読出し時)、もしくはプロセッサ12から入力する(書込み時)。プロセッサ12は、信号線16aに接続されたデータ入出力端子DDATAからデータを入力(読出し時)、もしくはデータを出力する(書込み時)。
【００３１】
一方、データキャッシュ16が、当該アドレスで指定されたデータを、データキャッシュ16内のキャッシュメモリに格納していない場合(キャッシュミスの場合)、データキャッシュ16は、データアドレス出力端子DCADDR0に接続された信号線16bを介して、データメインメモリ20に、当該アドレスを出力する。データメインメモリ20は、信号線16bに接続されたデータアドレス入力端子DMADDRから当該アドレスを入力される。
【００３２】
データメインメモリ20は、当該アドレスで指定されたデータを、データ入出力端子DMDATAに接続された信号線20aを介して、データキャッシュ16に出力(読出し時)、もしくはデータキャッシュ16から入力する(書込み時)。読出し時、データキャッシュ16は、そのデータを、信号線20aに接続されたデータ入出力端子DCDATA2から受け取り、データ入出力端子DCDATA1に接続された信号線16aを介して、プロセッサ12に出力する。プロセッサ12は、信号線16aに接続されたデータ入力端子DDATAからデータを入力される。書込み時は、信号線16aおよび信号線20aを介してデータがデータメインメモリ20に送られる。
【００３３】
書込み時に、プロセッサが出力したデータを上記のようにただちにデータメインメモリに書き込む方式をライトスルー方式と呼ぶが、本発明はこれに限られるものではない。
【００３４】
プロセッサ12は、キャッシュミスを故意に起こさせるために必要なデータを、信号線12c, 12dを介してそれぞれ命令キャッシュ14およびデータキャッシュ12Dに送る。信号線12c, 12dについては後述する。
【００３５】
次に、キャッシュ機構を、キャッシュメモリにヒットしたかどうかの判定に係わる部分について説明する。データキャッシュに対して読出しを行う場合の判定について説明する。書込みの場合の判定も同様であり、また、命令キャッシュに対する読出しのときの判定も同様である。
【００３６】
図２は、図１のデータキャッシュ16の内部構成を示すブロック図である。命令キャッシュ14およびデータキャッシュ16のキャッシュミスまたはヒットを判定する部分である。命令キャッシュ、データキャッシュともに同様の構成を有する。以下の図において、信号線に斜線で示す数字は、その信号線により伝送されるデータのビット数である。
【００３７】
既述のように、プロセッサ12は、データアドレス出力端子DADDRに接続された信号線12bを介して、データキャッシュ16に、読み書きすべきデータのアドレスとして、プロセッサ出力アドレス22を出力する。データキャッシュ16は、信号線12bに接続されたデータアドレス入力端子DCADDRIからプロセッサ出力アドレス22を入力される。プロセッサ出力アドレス22は、本実施例では32ビットとする。
【００３８】
データキャッシュ16に入力されたプロセッサ出力アドレス22は、信号線22aを介してアドレス変換回路101に入力される。アドレス変換回路101は、プロセッサ12がキャッシュメモリに対して行うメモリアクセスの回数をカウントするとともに、カウントしたメモリアクセスの回数と、キャッシュミスを発生させる頻度を示すデータとに基づいて、プロセッサ12が出力するプロセッサ出力アドレス22を、キャッシュミスを起こすプロセッサ出力アドレスに変更する。アドレス変換回路101の詳細については後述する。
【００３９】
プロセッサ出力アドレス22は、信号線22bを介してキャッシュミスアクセス生成回路102に入力される。キャッシュミスアクセス生成回路102は、判定結果が、ヒットしていないという判定であるとき、すなわちキャッシュミス発生時に、データメインメモリ20へのアクセスを行う。キャッシュミスアクセス生成回路102は、キャッシュミス発生時にデータメインメモリ20に対して、入力されたプロセッサ出力アドレス22を、信号線16bを介して出力する。なお、判定結果は、信号線105aを介してヒットミス判定回路105から入力される。判定方法は後述する。
【００４０】
プロセッサ出力アドレス22のタグフィールド(31〜12ビット)は、タグRAM103へ信号線22cを介して入力される。タグRAM103は、データキャッシュ16が保持しているデータを検索するために、すなわちキャッシュヒットおよびミスの判定のために、以下のデータを格納している。タグRAM103は、データキャッシュ16が保持しているデータのプロセッサ出力アドレス22のうち、タグフィールドおよびインデックスフィールド(11〜５ビット)を格納する。インデックスフィールドはタグRAM103にアドレス変換回路101から、信号線101aを介して入力される。
【００４１】
データキャッシュ16が保持しているデータの検索は、本実施例では通常、次のように行われる。キャッシュミスを故意に起こさせる本発明の方法については、後述する。アドレス変換回路101から、信号線101aを介してインデックスフィールドをタグRAM103に入力すると、タグRAM103は、保持しているタグフィールドおよびインデックスフィールドを検索して、入力されたインデックスフィールドに対応するタグフィールドを、信号線103aを介してヒットミス判定回路105に出力する。一方、ヒットミス判定回路105には、アドレス変換回路101から、信号線101bを介してタグフィールドが入力される。ヒットミス判定回路105は、両方のタグフィールドを比較して、一致するときは、キャッシュヒットと判定し、一致しないときは、キャッシュミスと判定する。なお、タグRAM103は、128エントリである。これは、インデックスフィールドが、本実施例では７ビットであるからである。
【００４２】
データキャッシュ16が保持しているデータが変更されると、これに対応して、当該データのプロセッサ出力アドレス22のタグフィールドおよびインデックスフィールドが、タグRAM103に格納される。このときのタグフィールドは、信号線22cを介して入力されたものであり、インデックスフィールドは、信号線101aを介して入力されたものである。
【００４３】
キャッシュミスを故意に起こさせる本発明の方法について説明する。キャッシュミスを故意に起こさせるために、アドレス変換回路101は、ダミーベースアドレス24とキャッシュミスポイント信号26を、プロセッサ12から信号線12dを介して入力される。
【００４４】
ダミーベースアドレス24は、データキャッシュ16に保持されている有効なデータのアドレス以外のアドレスのタグフィールドとする。ダミーベースアドレス24は、20ビットである。キャッシュミスポイント信号26は、この信号26で指定された値のキャッシュアクセス回数毎にキャッシュミスが発生するものである。アクセス回数が100以下のときに１回ミスが発生するように、本実施例では設定される。キャッシュミスポイント信号26は７ビット信号である。
【００４５】
ダミーベースアドレス24およびキャッシュミスポイント信号26は、１つの評価対象プログラムを実行中は、固定とする。キャッシュミスポイント信号26は、ユーザの意向により変えることが可能であり、キャッシュミスを発生させたい頻度に従って、値を設定できる。アドレス変換回路101から出力されるインデックスフィールド(11-5ビット)はタグRAM103に接続される。
【００４６】
アドレス変換回路101は、キャッシュアクセス回数をカウントし、回数が、キャッシュミスポイント信号26と一致したときのみ、ダミーベースアドレス24をタグフィールドとして出力する。一致しないときは、信号線22aを介して入力されたプロセッサ出力アドレス22のタグフィールドを出力する。
【００４７】
アドレス変換回路101が出力するタグフィールド(31-12ビット)と、タグRAM103が出力するタグフィールド(20ビット)は、ヒットミス判定回路105に入力される。ヒットミス判定回路105は、通常はプロセッサ出力アドレス22について、判定信号を出力する。アクセス回数が所定の回数になると、ヒットミス判定回路105は、アドレス変換回路101により変更されたアドレス（ダミーベースアドレス24）に基づいて、キャッシュメモリにヒットしたかどうかを判定するため、必ずキャッシュミスという判定を行う。
【００４８】
ヒットミス判定回路105は判定信号を、信号線105aを介してデータRAM104およびキャッシュミスアクセス生成回路102に出力する。判定信号はたとえば、キャッシュヒット時は、値「1」であり、キャッシュミス時は、値「0」である。
【００４９】
判定信号を入力されるデータRAM104は、アドレス変換回路101から出力されるインデックスフィールド(11-5ビット)も入力される。データRAM104は、キャッシュデータ(32ビット)を蓄積するものである。キャッシュデータは本実施例では32ビットとする。
【００５０】
データRAM104は、判定信号からキャッシュヒットと判断したとき、蓄積しているキャッシュデータを、信号線16aを介してプロセッサ12に出力する。データRAM104は、判定信号からキャッシュミスと判断したとき、データメインメモリ20から信号線20aを介して入力されるデータを蓄積する。さらに、このデータを、信号線16aを介してプロセッサ12に出力する。データRAM104は、ここでは１エントリ128バイトとする。プロセッサ出力アドレス22の下位５ビット分のデータを一度に読み出すためである。
【００５１】
次に図３により本実施例のアドレス変換回路101を具体的に説明する。図３は、アドレス変換回路101のブロック図である。アドレス変換回路101へ入カされた32ビットのプロセッサ出力アドレス22は、信号線22dを介してアクセスカウンタ回路202に入力される。アクセスカウンタ回路202は、アクセス発生回数をカウントするものである。アクセスカウンタ回路202は、本実施例では７ビットのカウンタであり、カウントする数は、100以下である。
【００５２】
アクセスカウンタ回路202は、プロセッサ出力アドレス22が入力される毎に、すなわちアクセス発生毎にカウントアップされる。アクセスカウンタ回路202には、信号線12dを介してキャッシュミスポイント信号26も入力される。アクセスカウンタ回路202は、カウントしたカウント値がキャッシュミスポイント信号26に達すると、リセットされ、その後、カウントアップを開始する。アクセスカウンタ回路202はカウント値(7ビット)を、信号線202aを介してコンペア回路203に出力する。
【００５３】
コンペア回路203には、キャッシュミスポイント信号26も入力される。コンペア回路203は２つの入力を比較し、両者が一致しているかどうかを判定する。比較結果は、セレクト信号203aとしてセレクタ201に、信号線203aを介して出力する。セレクト信号203aは、一致している場合、値「1」であり、一致していない場合、値「0」である。
【００５４】
セレクタ201は、セレクト信号203aが値「1」の時は、すなわちキャッシュへのアクセス回数がキャッシュミスポイント信号26と一致している時はダミーベースアドレス24(20ビット)を出力し、セレクト信号203aが値「0」の時は、すなわち一致していない時はプロセッサ出力アドレス22のタグフィールド(31-12ビット)を出力する。そのため、セレクタ201には、信号線12dを介してダミーベースアドレス24が入力され、信号線22eを介してプロセッサ出力アドレス22のタグフィールドが入力される。
【００５５】
セレクタ201の出力(20ビット)は、信号線101bを介してヒットミス判定回路105に出力される。アドレス変換回路101に入力されたプロセッサ出力アドレス22の下位ビット(11〜５ビット)は、信号線101bを介してタグRAM103に出力される。
【００５６】
次に、本実施例の動作について説明する。データキャッシュ16は、データキャッシュ16ヘのアクセスが発生すると、プロセッサ12からプロセッサ出力アドレス22(32ビット)が入力される。アドレスが入力される毎に、アドレス変換回路101のアクセスカウンタ回路202でカウントアップが行われる。
【００５７】
カウントアップされた結果は、設定されたキャッシュミスポイント信号とコンペア回路203で比較され、一致していない間はプロセッサ出力アドレス22のタグフィールド(31-12ビット)をアドレス変換回路101からヒットミス判定回路105へ出力し、一致している場合は、キャッシュミスを発生させるため、ダミーベースアドレス24(20ビット)をヒットミス判定回路105へ出力する。
【００５８】
アドレス変換回路101は、また、プロセッサ出力アドレス22のインデックスフィールド(11-5ビット)をタグRAM103ヘ出力する。出力されたインデックスフィールド(11-5ビット)に基づいて、タグRAM103は、対応するタグフィールド(31-12ビット)をヒットミス判定回路105へ出力する。
【００５９】
アドレス変換回路101から出力されたタグフィールド(31-12ビット)と、タグRAM103から出力されたタグフィールド(31-12ビット)は、ヒットミス判定回路105で、一致しているかどうかが判定される。一致していればデータはキャッシュに存在し、ヒットミス判定回路105はキャッシュヒットと判定し、一致しなければキャッシュにデータは存在しないので、キャッシュミスと判定する。ダミーべースアドレス24がアドレス変換回路101から出力された場合は、タグRAM103には、対応するアドレスが存在しないため、キャッシュミスと判定する。キャッシュヒット、またはキャッシュミスと判定した時に、マイクロコンピュータ10は次のように動作する。
【００６０】
キャッシュヒットと判定した時、すなわちタグRAM103の出力結果(20ビット)とアドレス変換回路101から出力されるタグフィールド(31-12ビット)が一致した場合、ヒットミス判定回路105はキャッシュヒットと判定する。この時、データRAM104は、信号線105aからのデータによりキャッシュヒットであることを知り、アドレス変換回路101から信号線101aを介してデータRAM104に入力されたインデックスフィ一ルドに対応するデータを、信号線16aを介して、キャッシュ読み出しデータとしてプロセッサ12ヘ出力する。  キャッシュミスと判定した時、すなわちタグRAM103の出力結果(20ビット)とアドレス変換回路101から出力されるタグフィールド(31-12ビット)が一致しない場合、ヒットミス判定回路105はキャッシュミスと判定する。この時、キャッシュミスアクセス生成回路102は、信号線105aからのデータによりキャッシュミスであることを知り、信号線22bを介して入力されたプロセッサ出力アドレス22(32ビット)を、データメインメモリ20ヘアクセスするためのアドレスとしてデータメインメモリ20ヘ出力する。
【００６１】
このアドレス22に対応してデータメインメモリ20から読み出したデータ(32ビット)は、信号線20aを介してデータRAM104に格納される。また、タグRAM103は、信号線101aを介して入力されたプロセッサ出力アドレス22のタグフィールド(11-5ビット)、および信号線22cを介して入力されたプロセッサ出力アドレス22のインデックスフィールド(31-12ビット)を格納する。これにより、ダミーベースアドレスが使用され、キャッシュミス判定が行なわれた場合でも、データRAM104に格納されているデータと、タグRAM103内に格納されているインデックスフィールドおよびタグフィールドとは、正確に対応した状態である。また、ダミーベースアドレスが選択された場合は必ず、キャッシュミスが発生することになる。
【００６２】
このように、ハードウェアに、プロセッサ出力アドレスを変換してキャッシュミスを起こさせる回路を実装したため、キャッシュ機構のフラッシュ動作をすることなく、キャッシュミスを発生させ、キャッシュヒット率を低下させることができる。ここで、キャッシュヒット率は、キャッシュ機構またはマイクロコンピュータの外部から直接または間接に設定可能なキャッシュミスポイント信号によって、変動させることができる。また、評価するプログラム以外の処理時間が入ることはなく、通常のキャッシュミスが発生した時のパイプライン動作と同様にキャッシュミスを発生させることができる。
【００６３】
以上のように、本実施例によれば、マイクロプロセッサはプログラムを実行すると、外部から設定したキャッシュアクセス回数毎に必ずキャッシュミスが発生する。したがって、キャッシュのフラッシュ動作をすることなく、キャッシュヒット率を低下させることができる。さらにこの外部からの設定は可変であり、キャッシュヒット率を変動させた測定ができる。
【００６４】
また、ハードウェアでキャッシュミスを発生させるため、マイクロプロセッサは、評価するプログラムの流れの中でキャッシュミスが発生したのと同様のパイプライン動作となる。このように、キャッシュのフラッシュ動作をプログラムの処理に入れずにパイプライン動作させるため、従来よりも精度の高い性能評価が可能となる。
【００６５】
次に本発明の別の実施例について説明する。図４は本発明の別の実施例に係わるデータキャッシュ28の構成を示すブロック図である。図１のキャッシュ機構を搭載したマイクロコンピュータの命令キャッシュおよびデータキャッシュのキャッシュミスまたはヒットを判定する部分である。
【００６６】
データキャッシュ28以外の他の部分、すなわちプロセッサ12およびデータメインメモリ20は、図１と同様であり、また、データキャッシュ28と、プロセッサ12およびデータメインメモリ20との間の信号線も同一であるとする。本実施例の命令キャッシュ、データキャッシュともに同様の構成を有する。以下の図において、図２と同様の部分については、同一の参照符号を付し、その説明は、簡略化または省略する。
【００６７】
図２の実施例と同様にデータキャッシュ28に入力されたプロセッサ出力アドレス22(32ビット)は、信号線22bを介してキャッシュミスアクセス生成回路102に入力される。キャッシュミスアクセス生成回路102は、キャッシュミス発生時にメインメモリヘのアクセスアドレス(32ビット)を出力する。なお、判定結果は、信号線105aを介してキャッシュミス発生回路301から入力される。判定方法は後述する。
【００６８】
プロセッサ出力アドレス22のタグフィールド(31-12ビット)は、信号線22cを介してタグRAM103とヒットミス判定回路105に入力される。プロセッサ出力アドレス22のインデックスフィ一ルド(11-5ビット)は、信号線22dを介してタグRAM103とデータRAM104に入力される。タグRAM103の出力(20ビット)は、信号線103aを介してヒットミス判定回路105に入力され、ヒットミス判定回路105の出力は、信号線105bを介してキャッシュミス発生回路301に入力される。
【００６９】
データキャッシュ28が保持しているデータの検索は、本実施例では通常、次のように行われる。キャッシュミスを故意に起こさせる本実施例の方法については、後述する。信号線22dを介してインデックスフィールドがタグRAM103に入力されると、タグRAM103は、保持しているタグフィールドおよびインデックスフィールドを検索して、入力されたインデックスフィールドに対応するタグフィールドを、信号線103aを介してヒットミス判定回路105に出力する。
【００７０】
一方、ヒットミス判定回路105には、信号線22cを介してタグフィールドが入力される。ヒットミス判定回路105は、両方のタグフィールドを比較して、一致するときは、キャッシュヒットと判定し、一致しないときは、キャッシュミスと判定する。ヒットミス判定回路105は判定信号を、信号線105bを介してキャッシュミス発生回路301に出力する。判定信号はたとえば、キャッシュヒット時は、値「1」であり、キャッシュミス時は、値「0」である。
【００７１】
データキャッシュ28が保持しているデータが、キャッシュミスが起こったために変更されると、これに対応して、当該データのプロセッサ出力アドレス22のタグフィールドおよびインデックスフィールドが、タグRAM103に格納される。このときのタグフィールドは、信号線22cを介して入力されたものであり、インデックスフィールドは、信号線22dを介して入力されたものである。
【００７２】
キャッシュミスを故意に起こさせる本発明の方法について説明する。キャッシュミスを故意に起こさせるために、キャッシュミス発生回路301にはプロセッサ12から信号線12dを介してキャッシュミスポイント信号が入力される。キャッシュミスポイント信号で指定された値のキャッシュヒット回数毎に、キャッシュミス発生回路301はキャッシュミスを故意に発生させる。本実施例では、100回以下のキャッシュヒットに1回ミスを発生させることとし、信号線12dは７ビット信号とする。
【００７３】
すなわち、キャッシュミス発生回路301は、キャッシュヒットの回数をカウントし、カウントしたキャッシュヒットの回数と、キャッシュミスを発生させる頻度を示すデータとに基づいて、キャッシュミスが発生したという判定を行う。キャッシュミス発生回路301は、さらに、キャッシュミスが発生したという判定を、キャッシュにヒットしたときに行い、キャッシュヒットである判定を、キャッシュミスという判定に変更する。キャッシュミス発生回路301の詳細は後述する。
【００７４】
キャッシュミスポイント信号は可変であり、キャッシュミスを発生させたい頻度によって、初期値を与えることができる。キャッシュミス発生回路301は判定信号を、信号線105aを介してデータRAM104およびキャッシュミスアクセス生成回路102に出力する。判定信号はたとえば、キャッシュヒット時は、値「1」であり、キャッシュミス時は、値「0」である。
【００７５】
判定信号を入力されるデータRAM104には、メインメモリからの読出しデータ(32ビット)が、信号線20aを介して入力され、データRAM104は、キャッシュ読出しデータ(32ビット)を、信号線16aを介して出力する。
【００７６】
次に、図５により本実施例のキャッシュミス発生回路301を具体的に説明する。図５は、キャッシュミス発生回路301のブロック図である。キャッシュミス発生回路301に、信号線105bを介して入力されたヒットミス判定回路105の判定結果は、ヒット数カウンタ回路403に入力される。ヒット数カウンタ回路403は、キャッシュヒットの回数をカウントする。ヒット数カウンタ回路403は、キャッシュヒットの判定がされた場合のみ、カウントアップする。
【００７７】
ヒット数カウンタ回路403の出力(7ビット)とキャッシュミスポイント信号(7ビット)はコンペア回路404に入力される。コンペア回路404は、ヒット数カウンタ回路403がカウントしたキャッシュヒットの回数と、キャッシュミスを発生させる頻度を示すキャッシュミスポイント信号とを比較する。コンペア回路404は、比較の結果、一致したときは値「1」を出力し、一致しないときは値「0」を出力する。コンペア回路404は、信号線404aを介してこれらをANDゲート402に出力する。
【００７８】
ANDゲート402は、コンペア回路404の出力と、信号線105bを介したヒット/ミス判定結果とを入力される。ANDゲート402は、両者がともに、値「1」のときに、値「1」を出力し、それ以外のときは、値「0」を出力する。ANDゲート402の出力はセレクタ401に、信号線402aを介して、セレクタ401のセレクト信号として入力される。
【００７９】
セレクタ401には、信号線30aを介して固定ミス信号30が入力され、さらに信号線105bを介してヒットミス判定回路105の判定結果の信号が入力される。固定ミス信号30は、その値が常に固定されており、本実施例の場合は、値「0」である。すなわち、キャッシュミスという判定を意味する信号である。固定ミス信号30は、キャッシュミス発生回路301内で生成する。セレクタ401は、セレクト信号が値「0」のときに、ヒットミス判定回路105の判定結果をそのまま出力し、セレクト信号が値「1」のときに、固定ミス信号30を出力する。
【００８０】
すなわち、キャッシュヒットの回数がキャッシュミスポイント信号と一致したときは、キャッシュミスと故意に判定し、そうでないときは、ヒットミス判定回路105の判定結果をそのまま出力する。セレクタ401の出力はキャッシュヒット、またはキャッシュミスの判定信号として出力される。
【００８１】
コンペア回路404と、ANDゲート402と、セレクタ401は、ヒット数カウンタ回路403がカウントしたキャッシュヒットの回数と、キャッシュミスを発生させる頻度を示すキャッシュミスポイント信号とに基づいて、キャッシュミスが発生したという判定を行う手段を構成する。
【００８２】
次に、本実施例の動作について説明する。データキャッシュ28は、データキャッシュ28ヘのアクセスが発生すると、プロセッサ12からプロセッサ出力アドレス22(32ビット)が入力される。プロセッサ出力アドレス22のインデックスフィールド(11-5ビット)はタグRAM103ヘ入力され、インデックスフィールド(11-5ビット)に基づいて、タグRAM103は、対応するタグフィールド(31-12ビット)をヒットミス判定回路105へ出力する。
【００８３】
ヒットミス判定回路105は、タグRAM103からの出力(20ビット)と、プロセッサ出力アドレス22のタグフィールド(31-2ビット)とを入力される。ヒットミス判定回路105は、２つの入力値が一致していれば、キャッシュヒットと判定し、一致していなければ、キャッシュミスと判定する。通常は、この判定結果で所定のキャッシュヒット動作、またはキャッシュミス動作が行われる。本実施例では、この判定結果はキャッシュミス発生回路301に入力される。キャッシュミス発生回路301に入力されたヒット/ミス判定結果は、キャッシュミス発生回路301のヒット数カウンタ回路403に入力される。
【００８４】
ここでヒット回数(7ビット)がカウントされ、コンペア回路404でキャッシュミスポイント信号(7ビット)と比較が行なわれる。この結果により、以下の２つの動作が発生する。なお、ヒット数カウンタ回路403には、キャッシュミスポイント信号が入力され、カウント値がキャッシュミスポイント信号に一致した後は、カウント値がリセットされる。
【００８５】
キャッシュミス発生回路301においてカウントアップされた値(７ビット)がキャッシュミスポイント信号と一致しない場合、ヒットミス判定回路105の出力を選択し、キャッシュミス発生回路301からそのまま出力する。
【００８６】
一方、キャッシュミス発生回路301においてカウントアップされた値がキャッシュミスポイント信号と一致した場合、キャッシュミス発生回路301は、次に発生するキャッシュヒット判定をキャッシュミス判定に変更する。なお、次に発生するキャッシュヒット判定をキャッシュミス判定に変更する理由は、回路の遅延時間のために、現に発生しているキャッシュヒット判定をキャッシュミス判定に変更することが困難なためである。そのため、コンペア回路404は、キャッシュヒット判定が次に発生するまで、比較結果を保持する。
【００８７】
このようにして、コンペア回路404からの出力が一致を示し、次のキャッシュヒット/ミス判定結果がヒットを示している時、セレクタ401は、固定ミス信号30を選択し、キャッシュミス判定という出力を行う。判定がなされた後のキャッシュヒット、またはキャッシュミス時の動作は最初の実施例と同様である。
【００８８】
このように、ハードウェアによりキャッシュヒットをキャッシュミスの判定結果に変換し、キャッシュミスを起こす回路を実装したため、キャッシュのフラッシ動作をすることなく、キャッシュミスを発生させ、キャッシュヒット率を低下させることができる。ここで、キャッシュヒット率は、外部から設定するキャッシュミスポイント信号によって、変動させることができる。また、評価するプログラム以外の処理時間が入ることはなく、通常のキャッシュミスが発生した時のパイプライン動作と同様にキャッシュミスを発生させることができる。
【００８９】
以上のように、本実施例でも、最初の実施例と同様な効果を得ることができる。また、最初の実施例ではアクセス回数に基づいて、キャッシュミスを発生させているため、キャッシュヒット率が下がらない場合もあるが、本実施例ではキャッシュヒットのみをキャッシュミスと変更するため、キャッシュヒット率が確実に低下する効果が得られる。
【００９０】
以上のようなプロセッサ評価方法を用いて、プロセッサを評価し、その評価に基づいてプロセッサを改良して設計することができる。たとえば、データキャッシュのデータRAMおよびタグRAMの容量を、コストや処理性能を考慮して最適に設計することができる。この設計に基づいてプロセッサを製造することができる。
【００９１】
なお、以上の実施例においては、ハードウェアによりプロセッサの評価を行うこととしたが、本発明はこれに限られるものではなく、マイクロプロセッサをシミュレートするソフトウェアに本発明を適用することもできる。すなわち、図１〜図５の回路をソフトウェアで実現し、ソフトウェアにより、設計対象であるプロセッサの評価を行うこととしてもよい。
【００９２】
また、本発明においては、プロセッサがキャッシュメモリに対して行うメモリアクセスの回数、またはキャッシュヒットの回数をカウントするカウント手段を設けることとしたが、本発明にはこれに限られるものではなく、キャッシュミスの回数をカウントするカウント手段を設けても、本発明と実質的に同じ効果が得られる。キャッシュヒットの回数をカウントすることと、キャッシュミスの回数をカウントすることは同等だからである。同様のことは、キャッシュスミスを起こす回数を示すデータについても言える。すなわち、キャッシュスミスを起こす回数を示すデータを指定することと、キャッシュスヒットを起こす回数を示すデータを指定することとは同等である。
【００９３】
さらに、メモリアクセスの回数、またはキャッシュヒットの回数をカウントする以外に、時間またはサイクル数などをカウントし、所定時間または所定サイクル数などが経過するごとに、本発明の回路により故意にキャッシュミスを発生させることとしてもよい。すなわち、所定時間または所定サイクル数などが経過するごとに、ダミーベースアドレスを出力させるか、キャッシュヒットという判定をキャッシュミスという判定に変更する。この場合も、本発明の効果が達成される。
【図面の簡単な説明】
【００９４】
【図１】本発明の一実施例に係わるキャッシュメモリを搭載したマイクロコンピュータの構成を示すブロック図である。
【図２】本発明の一実施例に係わるデータキャッシュのブロック図である。
【図３】本発明の一実施例に係わるアドレス変換回路のブロック図である。
【図４】本発明の他の実施例に係わるデータキャッシュのブロック図である。
【図５】本発明の他の実施例に係わるキャッシュミス発生回路のブロック図である。
【符号の説明】
【００９５】
12  プロセッサ
14  命令キャッシュ
16  データキャッシュ
18  命令メインメモリ
20  データメインメモリ
101  アドレス変換回路
202  アクセスカウンタ回路
301  キャッシュミス発生回路
403  ヒット数カウンタ回路
【図１】
2007128236.tif 000003
【図２】
2007128236.tif 000004
【図３】
2007128236.tif 000005
【図４】
2007128236.tif 000006
【図５】
2007128236.tif 000007