(57)【要約】【課題】キャッシュのヒット状況に応じて、キャッシュのリフィルサイズを動的に変更可能なマイクロプロセッサ及びキャッシュ制御方法を提供する。【解決手段】主記憶装置７と、主記憶装置７から命令及びデータを取り込み、命令を解読し、命令を実行する中央演算処理装置３と、主記憶装置７から取り込んだ命令及びデータを格納するキャッシュブロック４と、主記憶装置７がキャッシュブロック４へアクセスする回数及びヒットミスする回数を数えるカウンタと、キャッシュブロック７の制御条件を設定し、カウンタ６から出力される信号に基づきリフィルサイズを変更するキャッシュ制御部５とを有するマイクロプロセッサ。【選択図】      図１
2004259109.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置と、
前記主記憶装置から命令及びデータを取り込み、格納するキャッシュブロックと、
前記キャッシュブロックにアクセスし前記命令及び前記データを取り込み、前記命令を実行する中央演算処理装置と、
前記中央演算処理装置が前記キャッシュブロックへアクセスする回数及びヒットミス回数を数えるカウンタと、
前記カウンタから出力される信号に基づき前記キャッシュのリフィルサイズを変更するキャッシュ制御部
とを有することを特徴とするマイクロプロセッサ。
【請求項２】
前記カウンタは、
前記中央演算処理装置が前記キャッシュブロックにアクセスした回数を数えるアクセスカウンタと、
前記中央演算処理装置が前記キャッシュブロックにアクセスした際に目的とする命令又はデータが前記キャッシュブロック上に存在しない回数を数えるヒットミスカウンタ
とを有することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
前記キャッシュブロックは、
前記命令を格納する命令キャッシュと、
前記データを格納するデータキャッシュ
とを有し、
前記アクセスカウンタは、
前記中央演算処理装置が前記命令キャッシュにアクセスした回数を数える命令アクセスカウンタと、
前記中央演算処理装置が前記データキャッシュにアクセスした回数を数えるデータアクセスカウンタ
とを有することを特徴とする請求項２記載のマイクロプロセッサ。
【請求項４】
前記ヒットミスカウンタは、
前記中央演算処理装置が前記命令キャッシュにアクセスした際に目的とする命令が前記命令キャッシュ上に存在しない回数を数える命令ヒットミスカウンタと、
前記中央演算処理装置が前記データキャッシュにアクセスした際に目的とするデータが前記データキャッシュ上に存在しない回数を数えるデータヒットミスカウンタ
とを有することを特徴とする請求項２記載のマイクロプロセッサ。
【請求項５】
前記キャッシュ制御部は、
前記キャッシュ制御部のモードを示すステータスフラグと、
前記キャッシュ制御部の機能が有効であるか否かを示すイネーブルフラグと、
前記キャッシュ制御部の割り込み処理が有効であるか否かを示す割込処理有効フラグと、
前記ヒットミスカウンタ又は前記アクセスカウンタと比較する値を設定するコンペアレジスタと、
前記キャッシュブロックのリフィルサイズを設定するリフィルサイズレジスタ
とを有することを特徴とする請求項４記載のマイクロプロセッサ。
【請求項６】
主記憶装置に格納された命令及びデータの一部をキャッシュブロックに格納するステップと、
中央演算処理装置が、前記キャッシュブロックにアクセスし、前記キャッシュブロックに格納された前記命令及び前記データを取り込み、前記命令を実行するステップと、
前記中央演算処理装置が前記キャッシュブロックへアクセスするアクセス回数及びヒットミス回数をカウンタが数えるステップと、
前記アクセス回数及び前記ヒットミス回数に応じてキャッシュ制御部が前記キャッシュのリフィルサイズを変更するステップ
とを含むことを特徴とするキャッシュ制御方法。
【請求項７】
前記リフィルサイズを変更するステップは、
前記ヒットミス回数の上限値及び前記アクセス回数の上限値を前記キャッシュ制御部に設定する手順と、
前記ヒットミスカウンタの値と前記ヒットミス回数の上限値とが等しい場合は、前記キャッシュブロックのリフィルサイズを最大モードに設定する手順と、
前記アクセスカウンタの値と前記アクセス回数の上限値とが等しい場合は、前記リフィルサイズを最小モードに設定する手順
とを含むことを特徴とする請求項６記載のキャッシュ制御方法。
【請求項８】
前記リフィルサイズを変更するステップは、
前記命令キャッシュへのヒットミス回数が前記命令キャッシュのヒットミス回数の上限値と等しい場合は、前記命令キャッシュのリフィルサイズを前記最大モード命令リフィルサイズレジスタの値にする手順と、
前記命令キャッシュへのアクセス回数が前記命令キャッシュへおアクセス回数の上限値と等しい場合は、前記命令キャッシュのリフィルサイズを前記最小モード命令リフィルサイズレジスタの値にする手順
とを含むことを特徴とする請求項６記載のキャッシュ制御方法。
【請求項９】
前記リフィルサイズを変更するステップは、
前記データキャッシュへのヒットミス回数が前記データキャッシュのヒットミス回数の上限値の値と等しい場合は、前記データキャッシュのリフィルサイズを前記最大モードデータリフィルサイズレジスタの値にする手順と、
前記データキャッシュへのアクセス回数が前記データキャッシュのアクセス回数の上限値の値と等しい場合は、前記データキャッシュのリフィルサイズを前記最小モードデータリフィルサイズレジスタの値にする手順とを含むことを特徴とする請求項８記載のキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュを有するマイクロプロセッサ及びキャッシュ制御方法に関する。
【０００２】
【従来の技術】
一般に、マイクロプロセッサに内蔵されているキャッシュは、キャッシュのリフィル処理時にキャッシュのラインサイズ若しくはその倍数サイズのメモリ空間分のデータをキャッシュラインに取り込む。このリフィル時のサイズ（リフィルサイズ）は、マイクロプロセッサに搭載されるキャッシュの機能によって固定するか、ユーザーが任意の値に設定される。また、このリフィルサイズは、システムの動作中、通常、一定の値で維持される。
【０００３】
従来のマイクロプロセッサに内蔵されているキャッシュでは、リフィルサイズを小さく設定している場合、一度のヒットミスに対するメモリへのアクセス量は少なく、リフィル処理時のオーバーヘッドは小さい。しかし、アクセスするメモリのアドレスに、連続性が認められる場合は、一度のリフィル処理でメモリから取り込まれるサイズが小さい分、キャッシュのヒット率が低下する。そのため、リフィル処理の回数が増えることとなり、処理全体のスループットが低下する。
【０００４】
これに対して、キャッシュのリフィルサイズを大きく設定している場合、一度のヒットミスに対するメモリへのアクセス量が大きく、リフィル処理時のオーバーヘッドは大きくなる。しかし、アクセスするメモリのアドレスに連続性が認められる場合、一度のリフィル処理でメモリから取り込まれるサイズが大きい分、キャッシュのヒット率が向上する。その結果、リフィル回数が減り、処理全体のスループットも向上する。しかし、アクセスするメモリのアドレスにランダム性が強くなると、キャッシュのヒット率が低下するため、リフィル回数も増える。その結果、一度のリフィル処理時のオーバーヘッドが大きい分だけ、処理全体のスループットが低下する。
【０００５】
【発明が解決しようとする課題】
従って、従来は、マイクロプロセッサにおける処理全体の最適なスループットを実現するために、システム設計時にシステムがアクセスするメモリアドレスの特性やキャッシュのヒット率などを考慮し、マイクロコントローラにおけるメモリへのアクセス処理時のオーバーヘッドをなるべく小さくするように、最適なリフィルサイズを予め決定しておかなければならなかった。しかし、最適なリフィルサイズを決定しても、システムの動作状況に応じて最適なリフィルサイズは変動するため、従来のマイクロプロセッサでは、処理全体のスループットを平均して向上させることしか出来なかった。
【０００６】
本発明は上述の如き従来の課題を解決するためになされたもので、その目的は、リフィルサイズをシステムの動作状況、即ち、キャッシュのヒットミスの発生率、に応じて、動的にシステムの動作に対し適切なリフィルサイズに変更できるようなキャッシュ機能を内蔵するマイクロプロセッサ及びキャッシュ制御方法を提供することである。
【０００７】
本発明のその他の目的は、システムのメモリアドレス特性やキャッシュのヒット率に応じて、処理全体のスループットを向上させるキャッシュ機能を内蔵するマイクロプロセッサ及びキャッシュ制御方法を提供することである。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の特徴は、主記憶装置と、主記憶装置から命令及びデータを取り込み、命令を解読し、命令を実行する中央演算処理装置と、主記憶装置から取得した命令及びデータを格納するキャッシュブロックと、主記憶装置がキャッシュブロックへアクセスする回数及びヒットミス回数を数えるカウンタと、キャッシュの制御条件を設定し、カウンタから出力される信号に基づきリフィルサイズを変更するキャッシュ制御部とを有するマイクロプロセッサとしたことである。
【０００９】
本発明の第１の特徴に係るマイクロプロセッサでは、リフィルサイズをシステムの動作状況、即ち、キャッシュのヒットミスの発生率、に応じて、動的に適切なサイズに変更できるようなキャッシュ機能を内蔵するマイクロプロセッサを提供することができる。また、本発明の第１の特徴に係るマイクロプロセッサでは、システムのメモリアドレス特性やキャッシュヒット率に応じて、処理全体のスループットを向上させるためのキャッシュ機能を内蔵するマイクロプロセッサを提供することができる。
【００１０】
本発明の第２の特徴は、中央演算処理装置とキャッシュブロックを有するマイクロプロセッサにおいて、中央演算処理装置がキャッシュブロックへのアクセス回数をアクセスカウンタへ格納し、中央演算処理装置のヒットミス回数をヒットミスカウンタへ格納し、キャッシュブロックの制御条件を設定し、回数に応じて信号を出力し、出力された信号に基づきキャッシュブロックのリフィルサイズを変更するキャッシュ制御方法としたことである。
【００１１】
本発明の第２の特徴に係るキャッシュ制御方法では、リフィルサイズをシステムの動作状況、即ち、キャッシュのヒットミスの発生率、に応じて、動的に適切なサイズに変更できるようなキャッシュ制御方法を提供することができる。また、本発明の第２の特徴に係るキャッシュ制御方法では、システムのメモリアドレス特性やキャッシュのヒット率に応じて、処理全体のスループットを向上させるキャッシュ制御方法を提供することができる。
【００１２】
本発明の第３の特徴は、命令キャッシュを有するマイクロプロセッサにおいて、命令キャッシュへのヒットミス回数の上限値を第１命令コンペアレジスタに設定し、命令キャッシュへのアクセス回数の上限値を第２命令コンペアレジスタに設定し、命令キャッシュでのヒットミス回数をカウントし、ヒットミス回数を命令ヒットミスカウンタに格納し、命令キャッシュへのアクセス回数をカウントし、アクセス回数を命令アクセスカウンタに格納するキャッシュ制御方法としたことである。
【００１３】
本発明の第３の特徴に係るキャッシュ制御方法では、リフィルサイズをシステムの動作状況、即ち、キャッシュのヒットミスの発生率、に応じて、動的に適切なサイズに変更できるようなキャッシュ制御方法を提供することができる。また、本発明の第３の特徴に係るキャッシュ制御方法では、システムのメモリアドレス特性やキャッシュのヒット率に応じて、処理全体のスループットを向上させるキャッシュ制御方法を提供することができる。
【００１４】
本発明の第４の特徴は、データキャッシュを有するマイクロプロセッサにおいて、データキャッシュへのヒットミス回数の上限値を第１データコンペアレジスタに設定し、データキャッシュへのアクセス回数の上限値を第２データコンペアレジスタに設定し、データキャッシュでのヒットミス回数をカウントし、ヒットミス回数をデータヒットミスカウンタに格納し、データキャッシュへのアクセス回数をカウントし、アクセス回数をデータアクセスカウンタに格納するキャッシュ制御方法としたことである。
【００１５】
本発明の第４の特徴に係るキャッシュ制御方法では、リフィルサイズをシステムの動作状況、即ち、キャッシュのヒットミスの発生率、に応じて、動的に適切なサイズに変更できるようなキャッシュ制御方法を提供することができる。また、本発明の第４の特徴に係るキャッシュ制御方法では、システムのメモリアドレス特性やキャッシュのヒット率に応じて、処理全体のスループットを向上させるキャッシュ制御方法を提供することができる。
【００１６】
【発明の実施の形態】
次に、図面を参照して、本発明の実施形態について説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
【００１７】
（構成）
本発明の実施の形態に係るマイクロプロセッサ１は、図１に示すように、処理装置２と、主記憶装置７と、入力装置８と、出力装置９と、補助記憶装置１０とから少なくとも構成されている。処理装置２には、中央演算処理装置（ＣＰＵ）３と、キャッシュブロック４と、キャッシュ制御部５と、カウンタ６とが備えられている。
【００１８】
ＣＰＵ３は、主記憶装置７から命令及びデータを取り込み、命令を解読し、命令を実行する。キャッシュブロック４は、図２に示すように、ＣＰＵ３が主記憶装置７から取り込む命令及びデータを格納する命令キャッシュ４ａとデータキャッシュ４ｂとが備えられている。命令キャッシュ４ａは命令を格納し、データキャッシュ４ｂはデータを格納する。
【００１９】
キャッシュ制御部５は、キャッシュブロック４の命令キャッシュ４ａ及びデータキャッシュ４ｂの各々のリフィルサイズを設定するために、ステータスフラグ２３、イネーブルフラグ２４、第１命令コンペアレジスタ２５ａ、第２命令コンペアレジスタ２５ｂ、データコンペアレジスタ２６ａ、第２データコンペアレジスタ２６ｂ、割込処理有効フラグ２７、最大モード命令リフィルサイズレジスタ２８ａ、最小モード命令リフィルサイズレジスタ２８ｂ、最大モードデータリフィルサイズレジスタ２９ａ、最小モードデータリフィルサイズレジスタ２９ｂ、割込モード命令リフィルサイズレジスタ３０ａ、割込モードデータリフィルサイズレジスタ３０ｂを備える。
【００２０】
ステータスフラグ２３は、キャッシュ制御部５のモード（最小モード、最大モード、割込モード等）を示すリードオンリーフラグであり、命令が実行されるごとに状態が変わる。そして、ステータスフラグ２３には、命令キャッシュ４ａ及びデータキャッシュ４ｂに対してそれぞれ１ビットずつの命令ビット２３ａとデータビット２３ｂとからなる２ビットのフラグを有する。ここで、「最小モード」とは、中央演算処理装置３がキャッシュブロック４にアクセスした際のヒットミス率が高い状態、即ち、ヒット率が高い状態をいう。「最大モード」とは、中央演算処理装置３がキャッシュブロック４にアクセスした際のヒットミス率が低い状態、即ち、ヒット率が高い状態をいう。「割込モード」とは、中央演算処理装置３が割込処理中の状態をいう。イネーブルフラグ２４は、キャッシュ制御部５の機能が有効かどうかを設定するフラグであり、命令キャッシュ４ａ及びデータキャッシュ４ｂに対してそれぞれ１ビットずつの命令ビット２４ａとデータビット２４ｂとからなる２ビットのフラグを有する。割込処理有効フラグ２７は、割込モードを有効にするかどうかを設定する１ビットのフラグである。
【００２１】
第１命令コンペアレジスタ２５ａは、命令キャッシュ４ａへのヒットミス回数の上限値を格納するｎビットのレジスタである。第２命令コンペアレジスタ２５ｂは、命令キャッシュ４ａへのアクセス回数の上限値を格納するｎビットのレジスタである。第１データコンペアレジスタ２６ａは、データキャッシュ４ｂへのヒットミス回数の上限値を格納するｎビットのレジスタである。第２データコンペアレジスタ２６ｂは、データキャッシュ４ｂへのアクセス回数の上限値を格納するｎビットのレジスタである。最大モード命令リフィルサイズレジスタ２８ａは、キャッシュ制御部５が最大モード時の命令キャッシュ４ａのリフィルサイズを格納するｎビットのレジスタである。最小モード命令リフィルサイズレジスタ２８ｂは、キャッシュ制御部５が最小モード時の命令キャッシュのリフィルサイズを格納するｎビットのレジスタである。最大モードデータリフィルサイズレジスタ２９ａは、キャッシュ制御部５が最大モード時のデータキャッシュのリフィルサイズを格納するｎビットのレジスタである。最小モードデータリフィルサイズレジスタ２９ｂは、キャッシュ制御部５が最小モード時のデータキャッシュのリフィルサイズを格納するｎビットのレジスタである。割込モード命令リフィルサイズレジスタ３０ａは、キャッシュ制御部５が割込モード時の命令キャッシュのリフィルサイズを格納するｎビットのレジスタである。割込モードデータリフィルサイズレジスタ３０ｂは、キャッシュ制御部５が割込モード時のデータキャッシュのリフィルサイズを格納するｎビットのレジスタである。
【００２２】
カウンタ６は、ＣＰＵ３がキャッシュブロック４へアクセスした回数（アクセス回数）と、ＣＰＵ３が目的とする命令又はデータがキャッシュブロック４上に存在しない回数（ヒットミス回数）とを数えるために、命令ヒットミスカウンタ２１ａと、命令アクセスカウンタ２１ｂと、データヒットミスカウンタ２２ａと、データアクセスカウンタ２２ｂとを備える。命令ヒットミスカウンタ２１ａは、ＣＰＵ３が命令キャッシュ４ａへアクセスした際に、ＣＰＵ３が目的とする命令のヒットミス回数を数える。そして、第１命令コンペアレジスタ２５ａの値が命令ヒットミスカウンタ２１ａの値と同じになったとき、命令ヒットミスカウンタ２１ａは値を「０」に初期化し、命令キャッシュディスパッチ信号（第１の信号）Ａ５１をアサートする。命令アクセスカウンタ２１ｂは、ヒットミスの有無にかかわらず、ＣＰＵ３から命令キャッシュ４ａへのアクセス回数を数えるカウンタであり、ＣＰＵ３が命令キャッシュ４ａへアクセスする度にインクリメントされる。そして、第２命令コンペアレジスタ２５ｂの値と命令アクセスカウンタ２１ｂの値とが同じになったとき、命令アクセスカウンタ２１ｂは値を「０」に初期化し、命令キャッシュディスパッチ信号（第２の信号）Ｂ５２をアサートする。データヒットミスカウンタ２２ａは、ＣＰＵ３がデータキャッシュ４ｂへアクセスした際に、データキャッシュ４ｂ上におけるＣＰＵ３のヒットミス回数を数える。そして、第１データコンペアレジスタ２６ａの値がデータヒットミスカウンタ２２ａの値と同じになったとき、データヒットミスカウンタ２２ａは値を「０」に初期化し、データキャッシュディスパッチ信号（第３の信号）Ａ５３をアサートする。データアクセスカウンタ２２ｂは、ヒットミスの有無にかかわらず、ＣＰＵ３がデータキャッシュ４ｂへアクセスする回数を数えるカウンタであり、データキャッシュ４ｂへのアクセスの度にインクリメントされる。そして、第２データコンペアレジスタ２６ｂの値とデータアクセスカウンタ２２ｂの値とが同じになったとき、データアクセスカウンタ２２ｂは値を「０」に初期化し、データキャッシュディスパッチ信号（第４の信号）Ｂ５４をアサートする。なお、キャッシュ制御部５の割込処理有効フラグ２７が有効で、ＣＰＵ割込モード信号が入力されている間は、命令ヒットミスカウンタ２１ａ、命令アクセスカウンタ２１ｂ、データヒットミスカウンタ２２ａ、データアクセスカウンタ２２ｂは一切変化しない。
【００２３】
主記憶装置７には、ＲＯＭ及びＲＡＭが組み込まれている。ＲＯＭは、ＣＰＵ３において実行されるプログラムを格納しているプログラム記憶装置等として機能する。ＲＡＭは、ＣＰＵ３におけるプログラム実行処理中に利用されるデータ等を一時的に格納したり、作業領域として利用される一時的なデータメモリ等として機能する。入力装置８は、キーボード、マウス、ＯＣＲ等の認識装置、イメージスキャナ等の図形入力装置、音声認識装置等の特殊入力装置などにより、出力装置９は、液晶ディスプレイ、ＣＲＴディスプレイ等の表示装置、インクジェットプリンタ、レーザープリンタなどの印刷装置等によりそれぞれ構成される。補助記憶装置１０は、必要なときに主記憶装置７に読み込める形式で、プログラムやデータを保存しておくための装置であり、フレキシブルディスク装置、磁気ディスク装置、ＣＤ−ＲＯＭ、及び光ディスク装置などによる。
【００２４】
（キャッシュ制御方法）
図３〜図６を参照し、本発明の実施形態に係るキャッシュ制御方法の処理手順について説明する。まずはじめに、ＣＰＵ３が命令キャッシュ４ａへアクセスした際のカウンタ６における処理手順について図３を参照し説明する。
【００２５】
（イ）図３のステップＳ１０１において、ＣＰＵ３による命令キャッシュ４ａへのアクセス発生を検出すると、カウンタ６は、ステップＳ１０３において、割込処理有効フラグ２７が有効であり、更に割込モード信号入力があるか否かを判断する。割込処理有効フラグ２７が有効であり、割込モード信号入力がある場合は、ステップＳ１０１の処理へ戻り、命令キャッシュ４ａへアクセスし直す。割込処理有効フラグ２７が有効でない又は割込モード信号入力がない場合は、ステップＳ１０５の処理へ進む。
【００２６】
（ロ）ステップＳ１０５において、カウンタ６は、命令キャッシュ４ａにヒットミスがあるか否かを判断する。ヒットミスが有る場合は、ステップＳ１０７において、命令ヒットミスカウンタ２１ａをインクリメントし、ステップＳ１０９の処理へ進む。ヒットミスがない場合は、ステップＳ１０９の処理へ進み、命令アクセスカウンタ２１ｂをインクリメントする。
【００２７】
（ハ）次に、ステップＳ１１１において、命令ヒットミスカウンタ２１ａは、命令ヒットミスカウンタ２１ａの値と第１命令コンペアレジスタ２５ａの値とが同じであるか否かを判断する。命令ヒットミスカウンタ２１ａの値と第１命令コンペアレジスタ２５ａの値が同じである場合は、命令ヒットミスカウンタ２１ａは、ステップＳ１１３において、命令キャッシュディスパッチ信号Ａ５１をキャッシュ制御部５に入力（アサート）し、ステップＳ１１９の処理へ進む。そして、ステップＳ１１９において、命令ヒットミスカウンタ２１ａと命令アクセスカウンタ２１ｂを「０」に初期化し、ステップＳ１０１の処理へ戻る。命令ヒットミスカウンタ２１ａの値と第１命令コンペアレジスタ２５ａの値が同じでない場合は、ステップＳ１１５の処理へ進む。
【００２８】
（ニ）ステップＳ１１５において、命令アクセスカウンタ２１ｂは、命令アクセスカウンタ２１ｂの値と第２命令コンペアレジスタ２５ｂの値とが同じであるか否かを判断する。命令アクセスカウンタ２１ｂの値と第２命令コンペアレジスタ２５ｂの値とが同じである場合は、ステップＳ１１７において、命令アクセスカウンタ２１ｂは、命令キャッシュディスパッチ信号Ｂ５２をキャッシュ制御部５に入力（アサート）し、ステップＳ１１９の処理へ進む。そして、ステップＳ１１９において、命令ヒットミスカウンタ２１ａと命令アクセスカウンタ２１ｂとを「０」に初期化し、ステップＳ１０１の処理へ戻りＣＰＵ３が命令キャッシュ４ａへアクセスするのを待つ。命令アクセスカウンタ２１ｂの値と第２命令コンペアレジスタ２５ｂの値とが同じでない場合は、ステップＳ１０１の処理へ戻り、ＣＰＵ３が命令キャッシュ４ａへアクセスするのを待つ。
【００２９】
次に、命令キャッシュ４ａに対するキャッシュ制御部５のモード遷移状態について図４を参照し説明する。
【００３０】
（イ）図３のステップＳ１１７において、命令アクセスカウンタ２１ｂから命令キャッシュディスパッチ信号Ｂ５２が入力された場合、キャッシュ制御部５では、命令キャッシュ４ａに対し最大モード（Ｍａｘモード）となる。従って、図４のステップＳ１１に示すように、キャッシュ制御部５において命令キャッシュ４ａに対し、既に最大モードである場合は、そのままの状態を維持する。また、キャッシュ制御部５において、命令キャッシュ４ａに対し最小モード（Ｍｉｎモード）である場合は、ステップＳ１２において命令キャッシュ４ａに対し、最大モードの状態に切り替える。そして、キャッシュ制御部５において命令キャッシュ４ａに対し最大モードの状態になると、キャッシュブロック４の命令キャッシュ４ａのリフィルサイズは、キャッシュ制御部５の最大モード命令リフィルサイズレジスタ２８ａの値に設定される。
【００３１】
（ロ）次に、図３のステップＳ１１５において、命令ヒットミスカウンタ２１ａから命令キャッシュディスパッチ信号Ａ５１が入力された場合、キャッシュ制御部５では、命令キャッシュ４ａに対し最小モードとなる。従って、図４のステップＳ１４に示すように、キャッシュ制御部５において命令キャッシュ４ａに対し、既に最小モードである場合は、そのままの状態を維持する。また、命令キャッシュ４ａに対し、最大モードである場合は、ステップＳ１３において命令キャッシュ４ａに対し最小モードの状態に切り替える。そして、キャッシュ制御部５において命令キャッシュ４ａに対し、最小モードの状態になると、キャッシュブロック４の命令キャッシュ４ａのリフィルサイズは、キャッシュ制御部５の最小モード命令リフィルサイズレジスタ２８ｂの値に設定される。
【００３２】
（ハ）次に、ＣＰＵ３がキャッシュを使用しない場合等、命令キャッシュ４ａに対するイネーブル（Ｅｎａｂｌｅ）フラグ２４が無効である場合、図４のステップＳ１５、Ｓ１６に示すように、キャッシュ制御部５は、命令キャッシュ４ａに対しディスエイブル（Ｄｉｓａｂｌｅ）モードに切り替わる。そして、命令キャッシュ４ａのリフィルサイズは、デフォルトで設定されているリフィルサイズに設定される。
【００３３】
（ニ）次に、割込処理有効フラグ２７が割込モードを有効にしている場合、なんらかの割込が発生しＣＰＵ３が割込モードになっている間、ＣＰＵ３からキャッシュ制御部５へ割込モード信号が入力され、命令キャッシュ４ａは割込モードへ切り替わる。このとき、命令キャッシュ４ａが最大モードとなっている場合は、ステップＳ１７において、キャッシュ制御部５は命令キャッシュ４ａに対し割込モードへ切り替わる。また、命令キャッシュ４ａが最小モードとなっている場合は、ステップＳ１８において、キャッシュ制御部５は命令キャッシュ４ａに対し割込モードへ切り替わる。そして、命令キャッシュ４ａのリフィルサイズは、割込モード命令リフィルサイズレジスタ３０ａの値に設定される。
【００３４】
（ホ）次に、命令キャッシュ４ａに対してイネーブルフラグ２４が有効であり、命令キャッシュ４ａに対しステータスフラグ２３が最大モードである場合、キャッシュ制御部５は命令キャッシュ４ａに対して最大モードに切り替わる。たとえば、命令キャッシュ４ａに対し、キャッシュ制御部５がディスエイブルモードである場合は、図４のステップＳ１９において、キャッシュ制御部５は命令キャッシュ４ａに対し、最大モードに切り替わる。そして、命令キャッシュ４ａのリフィルサイズは、最大モード命令リフィルサイズレジスタ２８ａの値に設定される。
【００３５】
（へ）次に、命令キャッシュ４ａに対するイネーブルフラグが有効であり、命令キャッシュ４ａに対しステータスフラグ２３が最小モードである場合、キャッシュ制御部５は命令キャッシュ４ａに対して最小モードに切り替わる。たとえば、キャッシュ制御部５が命令キャッシュ４ａに対しディスエイブルモードである場合、ステップＳ２０において、キャッシュ制御部５は命令キャッシュ４ａに対して最小モードに切り替わる。そして、命令キャッシュ４ａのリフィルサイズは、最小モード命令リフィルサイズレジスタ２８ｂの値に設定される。
【００３６】
（ト）次に、キャッシュ制御部５が命令キャッシュ４ａに対し最大モードである場合に発生した割込処理が終了すると、キャッシュ制御部５は、ステップＳ２１において、命令キャッシュ４ａに対し最大モードに切り替わる。そして、命令キャッシュ４ａのリフィルサイズは最大モード命令リフィルサイズレジスタ２８ａの値に設定される。
【００３７】
（チ）次に、キャッシュ制御部５が命令キャッシュ４ａに対し最小モードである場合に発生した割込処理が終了すると、キャッシュ制御部５は、ステップＳ２２において、命令キャッシュ４ａに対し最小モードに切り替わる。そして、命令キャッシュ４ａのリフィルサイズは最小モード命令リフィルサイズレジスタ２８ｂの値に設定される。
【００３８】
次に、ＣＰＵ３がデータキャッシュ４ｂへアクセスした際のカウンタ６における処理手順について図５を参照し説明する。
【００３９】
（イ）図５のステップＳ１２１において、ＣＰＵ３によるデータキャッシュ４ｂへのアクセス発生を検出すると、カウンタ６は、ステップＳ１２３において、割込処理有効フラグ２７が有効であり、更に割込モード信号入力があるか否かを判断する。割込処理有効フラグ２７が有効であり、割込モード信号入力がある場合は、ステップＳ１２１の処理へ戻り、データキャッシュ４ｂへアクセスし直す。割込処理有効フラグ２７が有効でない又は割込モード信号入力がない場合は、ステップＳ１２５の処理へ進む。
【００４０】
（ロ）ステップＳ１２５において、カウンタ６は、データキャッシュ４ｂにヒットミスがあるか否かを判断する。ヒットミスが有る場合は、ステップＳ１２７において、データヒットミスカウンタ２２ａをインクリメントし、ステップＳ１２９の処理へ進む。ヒットミスがない場合は、ステップＳ１２９の処理へ進み、データアクセスカウンタ２２ｂをインクリメントする。
【００４１】
（ハ）次に、ステップＳ１３１において、データヒットミスカウンタ２２ａは、データヒットミスカウンタ２２ａの値と第１データコンペアレジスタ２６ａの値とが同じであるか否かを判断する。データヒットミスカウンタ２２ａの値と第１データコンペアレジスタ２６ａの値が同じである場合は、データヒットミスカウンタ２２ａは、ステップＳ１３３において、データキャッシュディスパッチ信号Ａ５３をキャッシュ制御部５に入力（アサート）し、ステップＳ１３９の処理へ進む。そして、ステップＳ１３９において、データヒットミスカウンタ２２ａとデータアクセスカウンタ２２ｂを「０」に初期化し、ステップＳ１２１の処理へ戻る。データヒットミスカウンタ２２ａの値と第１データコンペアレジスタ２６ａの値が同じでない場合は、ステップＳ１３５の処理へ進む。
【００４２】
（ニ）ステップＳ１３５において、データアクセスカウンタ２２ｂは、データアクセスカウンタ２２ｂの値と第２データコンペアレジスタ２６ｂの値とが同じであるか否かを判断する。データアクセスカウンタ２２ｂの値と第２データコンペアレジスタ２６ｂの値とが同じである場合は、ステップＳ１３７において、データアクセスカウンタ２２ｂは、データキャッシュディスパッチ信号Ｂ５４をキャッシュ制御部５に入力（アサート）し、ステップＳ１３９の処理へ進む。そして、ステップＳ１３９において、データヒットミスカウンタ２２ａとデータアクセスカウンタ２２ｂとを「０」に初期化し、ステップＳ１２１の処理へ戻りＣＰＵ３がデータキャッシュ４ｂへアクセスするのを待つ。データアクセスカウンタ２２ｂの値と第２データコンペアレジスタ２６ｂの値とが同じでない場合は、ステップＳ１２１の処理へ戻り、ＣＰＵ３がデータキャッシュ４ｂへアクセスするのを待つ。
【００４３】
次に、データキャッシュ４ｂに対するキャッシュ制御部５のモード遷移状態について図６を参照し説明する。
【００４４】
（イ）図５のステップＳ１３７において、データアクセスカウンタ２２ｂからデータキャッシュディスパッチ信号Ｂ５４が入力された場合、キャッシュ制御部５では、データキャッシュ４ｂに対し最大モード（Ｍａｘモード）となる。従って、図６のステップＳ３１に示すように、キャッシュ制御部５においてデータキャッシュ４ｂに対し、既に最大モードである場合は、そのままの状態を維持する。また、キャッシュ制御部５において、データキャッシュ４ｂに対し最小モード（Ｍｉｎモード）である場合は、ステップＳ３２においてデータキャッシュ４ｂに対し、最大モードの状態に切り替える。そして、キャッシュ制御部５においてデータキャッシュ４ｂに対し最大モードの状態になると、キャッシュブロック４のデータキャッシュ４ｂのリフィルサイズは、キャッシュ制御部５の最大モードデータリフィルサイズレジスタ２９ａの値に設定される。
【００４５】
（ロ）次に、図５のステップＳ１３５において、データヒットミスカウンタ２２ａからデータキャッシュディスパッチ信号Ａ５３が入力された場合、キャッシュ制御部５では、データキャッシュ４ｂに対し最小モードとなる。従って、図６のステップＳ３４に示すように、キャッシュ制御部５においてデータキャッシュ４ｂに対し、既に最小モードである場合は、そのままの状態を維持する。また、データキャッシュ４ｂに対し、最大モードである場合は、ステップＳ３３においてデータキャッシュ４ｂに対し最小モードの状態に切り替える。そして、キャッシュ制御部５においてデータキャッシュ４ｂに対し、最小モードの状態になると、キャッシュブロック４のデータキャッシュ４ｂのリフィルサイズは、キャッシュ制御部５の最小モードデータリフィルサイズレジスタ２９ｂの値に設定される。
【００４６】
（ハ）次に、ＣＰＵ３がキャッシュを使用しない場合等、データキャッシュ４ｂに対するイネーブルフラグ２４が無効である場合、図６のステップＳ３５、Ｓ３６に示すように、キャッシュ制御部５は、データキャッシュ４ｂに対しディスエイブルモードに切り替わる。そして、データキャッシュ４ｂのリフィルサイズは、デフォルトで設定されているリフィルサイズに設定される。
【００４７】
（ニ）次に、割込処理有効フラグ２７が割込モードを有効にしている場合、なんらかの割込が発生しＣＰＵ３が割込モードになっている間、ＣＰＵ３からキャッシュ制御部５へ割込モード信号が入力され、データキャッシュ４ｂは割込モードへ切り替わる。このとき、データキャッシュ４ｂが最大モードとなっている場合は、ステップＳ３７において、キャッシュ制御部５はデータキャッシュ４ｂに対し割込モードへ切り替わる。また、データキャッシュ４ｂが最小モードとなっている場合は、ステップＳ３８において、キャッシュ制御部５はデータキャッシュ４ｂに対し割込モードへ切り替わる。そして、データキャッシュ４ｂのリフィルサイズは、割込モードデータリフィルサイズ３０ｂの値に設定される
（ホ）次に、データキャッシュ４ｂに対してイネーブルフラグ２４が有効であり、データキャッシュ４ｂに対しステータスフラグ２３が最大モードである場合、キャッシュ制御部５はデータキャッシュ４ｂに対して最大モードに切り替わる。たとえば、データキャッシュ４ｂに対し、キャッシュ制御部５がディスエイブルモードである場合は、図６のステップＳ３９において、キャッシュ制御部５はデータキャッシュ４ｂに対し、最大モードに切り替わる。そして、データキャッシュ４ｂのリフィルサイズは、最大モードデータリフィルサイズレジスタ２９ａの値に設定される。
【００４８】
（へ）次に、データキャッシュ４ｂに対するイネーブルフラグが有効であり、データキャッシュ４ｂに対しステータスフラグ２３が最小モードである場合、キャッシュ制御部５はデータキャッシュ４ｂに対して最小モードに切り替わる。たとえば、キャッシュ制御部５がデータキャッシュ４ｂに対しディスエイブルモードである場合、ステップＳ４０において、キャッシュ制御部５はデータキャッシュ４ｂに対して最小モードに切り替わる。そして、データキャッシュ４ｂのリフィルサイズは、最小モードデータリフィルサイズレジスタ２９ｂの値に設定される。
【００４９】
（ト）次に、キャッシュ制御部５がデータキャッシュ４ｂに対し最大モードである場合に発生した割込処理が終了すると、キャッシュ制御部５は、ステップＳ４１において、データキャッシュ４ｂに対し最大モードに切り替わる。そして、データキャッシュ４ｂのリフィルサイズは最大モードデータリフィルサイズレジスタ２９ａの値に設定される。
【００５０】
（チ）次に、キャッシュ制御部５がデータキャッシュ４ｂに対し最小モードである場合に発生した割込処理が終了すると、キャッシュ制御部５は、ステップＳ４２において、データキャッシュ４ｂに対し最小モードに切り替わる。そして、データキャッシュ４ｂのリフィルサイズは最小モードデータリフィルサイズレジスタ２９ｂの値に設定される。
【００５１】
本発明の実施形態に係る発明では、第２命令コンペアレジスタ２５ｂ及び第２データコンペアレジスタ２６ｂに設定される値のアクセス数内に、第１命令コンペアレジスタ２５ａ及び第１データコンペアレジスタ２６ａに設定される値のヒットミスが発生した場合を「ヒットミス率が高い場合（最小モード）」とし、発生しない場合を「ヒットミス率が低い場合（最大モード）」と定義することが可能となる。そして、第２命令コンペアレジスタ２５ｂ、第２データコンペアレジスタ２６ｂに設定する値を調整することにより、命令キャッシュ４ａ及びデータキャッシュ４ｂのリフィルサイズを動的に変更させることが可能となり、システムのスループットを常に高くするためのリフィルサイズを動的に維持することができる。
【００５２】
これにより、本発明の実施形態に係る発明は、従来のキャッシュ機能を持つマイクロプロセッサを用いる場合に比べ、システムのメモリアドレス特性に関係なく、最適なキャッシュリフィルサイズにてシステムを動作させることが可能であり、システム全体の処理機能のスループットを向上させることができる。
【００５３】
また、本発明の実施形態に係る発明は、割込処理時などのマイクロプロセッサにおける特別な状況をユーザーが自由に設定することができるため、通常のマイクロプロセッサの動作状況において、それぞれ任意に割り当てられたキャッシュリフィルサイズをアプリケーションで対応することなく切り替えることができ、割り込み処理のスループットを向上させることができる。
【００５４】
更に、本発明の実施形態に係る発明は、キャッシュのリフィルサイズやリフィル変更条件等をソフトウェアを用いて設定することが可能となり、キャッシュのヒット状況に応じて、キャッシュのリフィルサイズを動的に変更することができるキャッシュ機能をより多くのシステムに提供することが可能となる。
【００５５】
（その他の実施の形態）
上記のように、本発明は一実施形態によって記載したが、この開示の一部をなす論述及び図面は、この発明を限定するものであると理解すべきではない。この開示から、当業者には様々な代替実施の形態及び実施例が明らかとなろう。
【００５６】
本発明はここでは記載していない様々な実施の形態などを含むことは勿論である。従って、本発明の技術的な範囲は上記説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【００５７】
【発明の効果】
本発明によれば、リフィルサイズをシステムの動作状況、即ち、キャッシュのヒットミスの発生率、に応じて、動的に適切なサイズに変更できるようなキャッシュ機能を内蔵するマイクロプロセッサ及びキャッシュ制御方法を提供することができる。
【００５８】
本発明によれば、システムのメモリアドレス特性やキャッシュのヒット率に応じて、処理全体のスループットを向上させるためのキャッシュ機能を内蔵するマイクロプロセッサ及びキャッシュ制御方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るマイクロプロセッサの構成を示すブロック図である。
【図２】図１に示すマイクロプロセッサの処理装置の構成を示すブロック図である。
【図３】本発明の実施形態に係る命令キャッシュのキャッシュ制御方法の処理手順を示すフロー図である。
【図４】本発明の実施形態に係る命令キャッシュに対するキャッシュ制御部の状態遷移を示す状態遷移図である。
【図５】本発明の実施形態に係るデータキャッシュのキャッシュ制御方法の処理手順を示すフロー図である。
【図６】本発明の実施形態に係るデータキャッシュに対するキャッシュ制御部の状態遷移を示す状態遷移図である。
【符号の説明】
１  マイクロプロセッサ
２  処理装置
３  ＣＰＵ
４  キャッシュブロック
４ａ  命令キャッシュ
４ｂ  データキャッシュ
５  キャッシュ制御部
６  カウンタ
７  主記憶装置
８  入力装置
９  出力装置
１０  補助記憶装置
２１ａ  命令ヒットミスカウンタ
２１ｂ  命令アクセスカウンタ
２２ａ  データヒットミスカウンタ
２２ｂ  データアクセスカウンタ
２３  ステータスフラグ
２３ａ  命令ビット
２３ｂ  データビット
２４  イネーブルフラグ
２４ａ  命令ビット
２４ｂ  データビット
２５ａ  第１命令コンペアレジスタ
２５ｂ  第２命令コンペアレジスタ
２６ａ  第１データコンペアレジスタ
２６ｂ  第２データコンペアレジスタ
２６ａ  データコンペアレジスタ
２７  割込処理有効フラグ
２８ａ  最大モード命令リフィルサイズレジスタ
２８ｂ  最小モード命令リフィルサイズレジスタ
２９ａ  最大モードデータリフィルサイズレジスタ
２９ｂ  最小モードデータリフィルサイズレジスタ
３０ａ  割込モード命令リフィルサイズレジスタ
３０ｂ  割込モードデータリフィルサイズ
３０ｂ  割込モードデータリフィルサイズレジスタ
Ａ５１  命令キャッシュディスパッチ信号
Ａ５４  データキャッシュディスパッチ信号
Ｂ５２  命令キャッシュディスパッチ信号
Ｂ５３  データキャッシュディスパッチ信号
【図１】
2004259109.tif 000003
【図２】
2004259109.tif 000004
【図３】
2004259109.tif 000005
【図４】
2004259109.tif 000006
【図５】
2004259109.tif 000007
【図６】
2004259109.tif 000008