(57)【要約】【課題】不揮発性メモリーに対する不要なアクセスの回数を低減してマイコンの消費電力を削減すると共に、キャッシュメモリーの利用効率を向上させてパフォーマンスを改善する。【解決手段】このマイコンは、ＣＰＵと、不揮発性メモリーと、分岐命令が再度実行された場合に分岐が行われる可能性が低いときに第１の状態に設定されるプリフェッチ実行フラグを、分岐命令が格納されているラインに格納するキャッシュメモリーと、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第２のラインに格納されているか判定する判定回路と、第１のラインに格納されているプリフェッチ実行フラグが第１の状態に設定され、且つ、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第２のラインに格納されていない場合に、プリフェッチを実行するプリフェッチ回路とを備える。【選択図】図１
2019117491.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
不揮発性メモリーと、
分岐命令で分岐が行われたか否かによって、前記分岐命令が再度実行された場合に分岐が行われる可能性が低いことを表す第１の状態と前記分岐命令が再度実行された場合に分岐が行われる可能性が高いことを表す第２の状態とを含む複数の状態の内の１つに設定されるプリフェッチ実行フラグを、前記分岐命令が格納されているラインに格納するキャッシュメモリーと、
前記キャッシュメモリーにおいて選択されている第１のラインに格納されているタグと前記第１のラインの次の第２のラインに格納されているタグとに基づいて、前記第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が前記第２のラインに既に格納されているか否かを判定する判定回路と、
前記第１のラインに格納されている前記プリフェッチ実行フラグが前記第１の状態に設定され、且つ、前記第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が前記第２のラインに格納されていない場合に、前記第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令を前記不揮発性メモリーから予め読み出して前記キャッシュメモリーの前記第２のラインに格納するプリフェッチ回路と、
を備えるマイクロコンピューター。
【請求項２】
前記プリフェッチ回路が、前記プリフェッチ実行フラグの初期状態を前記第１の状態に設定し、前記分岐命令で分岐が行われなかった場合に、前記分岐命令が格納されているラインの前記プリフェッチ実行フラグを前記第１の状態に維持又は設定し、前記分岐命令で分岐が行われた場合に、前記分岐命令が格納されているラインの前記プリフェッチ実行フラグを前記第２の状態に設定又は維持する、請求項１記載のマイクロコンピューター。
【請求項３】
前記プリフェッチ回路が、
前記プリフェッチ実行フラグの初期状態を前記第１の状態に設定し、前記分岐命令で分岐が行われなかった場合に、前記分岐命令が格納されているラインの前記プリフェッチ実行フラグが前記第１の状態に設定されていたら前記プリフェッチ実行フラグを第３の状態に設定し、前記プリフェッチ実行フラグが前記第２の状態に設定されていたら前記プリフェッチ実行フラグを前記第１の状態に設定し、前記分岐命令で分岐が行われた場合に、前記分岐命令が格納されているラインの前記プリフェッチ実行フラグが前記第１の状態に設定されていたら前記プリフェッチ実行フラグを前記第２の状態に設定し、前記プリフェッチ実行フラグが前記第２の状態に設定されていたら前記プリフェッチ実行フラグを第４の状態に設定し、
前記第１のラインに格納されている前記プリフェッチ実行フラグが前記第１の状態又は前記第３の状態に設定され、且つ、前記第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が前記第２のラインに格納されていない場合に、前記第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令を前記不揮発性メモリーから読み出して前記キャッシュメモリーの前記第２のラインに格納する、
請求項１記載のマイクロコンピューター。
【請求項４】
前記プリフェッチ回路が、
前記分岐命令で分岐が行われなかった場合に、前記分岐命令が格納されているラインの前記プリフェッチ実行フラグが前記第３の状態に設定されていたら前記プリフェッチ実行フラグを前記第３の状態に維持し、前記プリフェッチ実行フラグが前記第４の状態に設定されていたら前記プリフェッチ実行フラグを前記第２の状態に設定し、
前記分岐命令で分岐が行われた場合に、前記分岐命令が格納されているラインの前記プリフェッチ実行フラグが前記第３の状態に設定されていたら前記プリフェッチ実行フラグを前記第１の状態に設定し、前記プリフェッチ実行フラグが前記第４の状態に設定されていたら前記プリフェッチ実行フラグを前記第４の状態に維持する、
請求項３記載のマイクロコンピューター。
【請求項５】
請求項１〜４のいずれか１項記載のマイクロコンピューターを備える電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令コードを格納するキャッシュメモリーを内蔵したマイクロコンピューターに関する。さらに、本発明は、そのようなマイクロコンピューターを用いた電子機器等に関する。
【背景技術】
【０００２】
マイクロコンピューター（マイコン）は、例えば、フラッシュメモリー等の不揮発性メモリーから命令コード（以下、単に「命令」ともいう）を読み出して各種の処理を行うが、フラッシュメモリーに対するアクセスは、ＲＡＭ（ランダムアクセスメモリー）に対するアクセスと比較して、消費電流が大きく、読み出し速度が遅い。
【０００３】
そのため、マイコンの消費電流を削減する等の目的で、ＳＲＡＭ（スタティックＲＡＭ）等で構成されるキャッシュメモリーが用いられる。フラッシュメモリーから読み出した命令をキャッシュメモリーに格納しておき、再度同じ命令にアクセスする場合には、キャッシュメモリーから命令を読み出すことにより、フラッシュメモリーから命令を読み出す場合と比較して消費電流を削減することができる。
【０００４】
また、読み出し速度は、フラッシュメモリーよりもキャッシュメモリーの方が速い。従って、高速のクロック信号でマイコンを動作させる際に、フラッシュメモリーから命令を読み出す場合には複数サイクルの待ち時間が必要となるのに対し、キャッシュメモリーから命令を読み出す場合には待ち時間なしで処理を行うことができるので、より高いパフォーマンスを発揮することが可能である。
【０００５】
さらに、キャッシュメモリーにプリフェッチ機能（次のアドレスの命令を先行して読み出しておく機能）を搭載することにより、次に実行すべき命令がキャッシュメモリーに格納されていないという事態（キャッシュミス）によるペナルティを減らして、さらに高いパフォーマンスを発揮することができる。
【０００６】
関連する技術として、特許文献１には、マイクロプロセッサーに内蔵されるキャッシュ回路が開示されている。このキャッシュ回路は、プリフェッチアドレスレジスターと、命令コードを記憶するキャッシュメモリーと、キャッシュメモリーに記憶された命令のアドレスを記憶するレジスター、及び、該アドレスとプリフェッチアドレスレジスターの内容とを比較する機能を合わせ持った回路と、命令キューと、ジャンプ命令実行後にキャッシュメモリーからの出力を選択し、それ以外の時は命令キューの出力を選択するマルチプレクサーと、マルチプレクサーの出力が入力されるインストラクションレジスターとを有する。
【０００７】
特許文献１によれば、キャッシュメモリーと命令キューとを合わせ持つことによって、ジャンプ命令実行時以外は命令キューの命令を実行し、ジャンプ命令実行後のみキャッシュメモリーからの命令を実行することによって、連続アドレスで実行中はアドレス比較動作を行わず、連続アドレスの命令を命令キューに記憶することによって、キャッシュメモリーの容量を削減することができる。しかしながら、特許文献１には、フラッシュメモリー等の外部メモリーに対する不要なアクセスの回数を低減することは開示されていない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６２−１５１９３６号公報（特許請求の範囲、発明の効果、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
一般に、キャッシュメモリーの記憶容量は、フラッシュメモリーの記憶容量よりもかなり小さいので、フラッシュメモリーに記憶されているプログラムの全てを一度に読み出してキャッシュメモリーに格納することはできない。従って、キャッシュメモリーに格納されるプログラムの断片が随時入れ替えられる。その結果、キャッシュメモリーから削除された命令を再度実行する場合には、フラッシュメモリーから命令を読み出さなくてはならないので、パフォーマンスの低下の原因となる。
【００１０】
そのようなパフォーマンスの低下を防ぐためには、マイコンにプリフェッチ機能を搭載して、現在実行中の命令に後続する命令をフラッシュメモリーから予め読み出してキャッシュメモリーに格納しておくという手法がとられる。しかしながら、分岐命令等による制御フローの変化により、プリフェッチされた命令が必ず実行されるとは限らない。プリフェッチされた命令が実行されない場合には、フラッシュメモリーに対する不要なアクセスが発生するので、消費電力が増加する。また、キャッシュメモリーに格納されていた命令が不要に削除されるので、パフォーマンスの低下の原因ともなり得る。
【００１１】
そこで、上記の点に鑑み、本発明の第１の目的は、不揮発性メモリーに対する不要なアクセスの回数を低減してマイクロコンピューターの消費電力を削減すると共に、キャッシュメモリーの利用効率を向上させてパフォーマンスを改善することである。また、本発明の第２の目的は、そのようなマイクロコンピューターを用いた電子機器等を提供することである。
【課題を解決するための手段】
【００１２】
以上の課題の少なくとも一部を解決するために、本発明の第１の観点に係るマイクロコンピューターは、ＣＰＵと、不揮発性メモリーと、分岐命令で分岐が行われたか否かによって、分岐命令が再度実行された場合に分岐が行われる可能性が低いことを表す第１の状態と分岐命令が再度実行された場合に分岐が行われる可能性が高いことを表す第２の状態とを含む複数の状態の内の１つに設定されるプリフェッチ実行フラグを、分岐命令が格納されているラインに格納するキャッシュメモリーと、キャッシュメモリーにおいて選択されている第１のラインに格納されているタグと第１のラインの次の第２のラインに格納されているタグとに基づいて、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第２のラインに既に格納されているか否かを判定する判定回路と、第１のラインに格納されているプリフェッチ実行フラグが第１の状態に設定され、且つ、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第２のラインに格納されていない場合に、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令を不揮発性メモリーから予め読み出してキャッシュメモリーの第２のラインに格納するプリフェッチ回路とを備える。
【００１３】
本発明の第１の観点によれば、分岐命令が再度実行された場合に分岐が行われる可能性が高いことを表す第２の状態にプリフェッチ実行フラグが設定されている場合には、プリフェッチが実行されない。従って、分岐命令に後続する命令のプリフェッチが必要ない場合にプリフェッチが実行されてしまう確率を下げることにより、不揮発性メモリーに対する不要なアクセスの回数を低減してマイクロコンピューターの消費電力を削減すると共に、キャッシュメモリーの利用効率を向上させてパフォーマンスを改善することができる。
【００１４】
ここで、プリフェッチ回路が、プリフェッチ実行フラグの初期状態を第１の状態に設定し、分岐命令で分岐が行われなかった場合に、分岐命令が格納されているラインのプリフェッチ実行フラグを第１の状態に維持又は設定し、分岐命令で分岐が行われた場合に、分岐命令が格納されているラインのプリフェッチ実行フラグを第２の状態に設定又は維持するようにしても良い。それにより、比較的簡単な論理に従って、プリフェッチ実行フラグを設定することができる。
【００１５】
あるいは、プリフェッチ回路が、プリフェッチ実行フラグの初期状態を第１の状態に設定し、分岐命令で分岐が行われなかった場合に、分岐命令が格納されているラインのプリフェッチ実行フラグが第１の状態に設定されていたらプリフェッチ実行フラグを第３の状態に設定し、プリフェッチ実行フラグが第２の状態に設定されていたらプリフェッチ実行フラグを第１の状態に設定し、分岐命令で分岐が行われた場合に、分岐命令が格納されているラインのプリフェッチ実行フラグが第１の状態に設定されていたらプリフェッチ実行フラグを第２の状態に設定し、プリフェッチ実行フラグが第２の状態に設定されていたらプリフェッチ実行フラグを第４の状態に設定し、第１のラインに格納されているプリフェッチ実行フラグが第１の状態又は第３の状態に設定され、且つ、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第２のラインに格納されていない場合に、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令を不揮発性メモリーから読み出してキャッシュメモリーの第２のラインに格納するようにしても良い。このように、第１の状態及び第２の状態に加えて第３の状態及び第４の状態にプリフェッチ実行フラグを設定可能とすることにより、分岐命令が再度実行された場合に分岐が行われる可能性に応じて多様な対応をとることができる。
【００１６】
その場合に、プリフェッチ回路が、分岐命令で分岐が行われなかった場合に、分岐命令が格納されているラインのプリフェッチ実行フラグが第３の状態に設定されていたらプリフェッチ実行フラグを第３の状態に維持し、プリフェッチ実行フラグが第４の状態に設定されていたらプリフェッチ実行フラグを第２の状態に設定し、分岐命令で分岐が行われた場合に、分岐命令が格納されているラインのプリフェッチ実行フラグが第３の状態に設定されていたらプリフェッチ実行フラグを第１の状態に設定し、プリフェッチ実行フラグが第４の状態に設定されていたらプリフェッチ実行フラグを第４の状態に維持するようにしても良い。
【００１７】
それにより、例えば、分岐命令で分岐が１回だけ行われた場合には、プリフェッチ実行フラグが容易に第１の状態に戻る一方、分岐命令で分岐が２回以上連続して行われた場合には、プリフェッチ実行フラグが容易に第１の状態に戻らなくなる。従って、プリフェッチが必要であるか否かをより精度高く予測して、適切な対応をとることができる。
【００１８】
本発明の第２の観点に係る電子機器は、上記いずれかのマイクロコンピューターを備える。本発明の第２の観点によれば、不揮発性メモリーに対する不要なアクセスの回数を低減して消費電力が削減されると共にキャッシュメモリーの利用効率を向上させてパフォーマンスが改善されたマイクロコンピューターを用いて、低消費電力で高性能の電子機器を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係るマイクロコンピューターの構成例を示す回路図。
【図２】プリフェッチ動作の第１の例を示すタイミングチャート。
【図３】プリフェッチ動作の第２の例を示すタイミングチャート。
【図４】プリフェッチ実行フラグの第１の設定例を示す状態遷移図。
【図５】プリフェッチ実行フラグの第２の設定例を示す状態遷移図。
【図６】本発明の一実施形態に係る電子機器の構成例を示すブロック図。
【発明を実施するための形態】
【００２０】
以下に、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、同一の構成要素には同一の参照番号を付して、重複する説明を省略する。
＜マイクロコンピューター＞
図１は、本発明の一実施形態に係るマイクロコンピューターの構成例を示す回路図である。図１に示すように、このマイクロコンピューターは、ＣＰＵ（中央演算装置）１０と、不揮発性メモリー（本実施形態においては、フラッシュメモリー）２０と、キャッシュメモリー３０と、キャッシュメモリー制御回路４０と、判定回路５０と、プリフェッチ回路６０とを含んでいる。
【００２１】
ＣＰＵ１０は、図示しない発振回路から供給されるクロック信号に同期して動作し、プログラムに従って各種の信号処理又は制御処理等を行う。フラッシュメモリー２０は、ＣＰＵ１０が各種の処理を行うためのプログラムやデータ等を記憶している。フラッシュメモリー２０において、プログラムに含まれている命令コードが記憶される複数の記憶領域には、それぞれのアドレスが付されている。キャッシュメモリー３０は、フラッシュメモリー２０から読み出された命令コードを一時的に格納する。
【００２２】
図１には、キャッシュメモリー３０から命令コードを読み出すためにＣＰＵ１０から出力される命令アドレスが示されている。以下において、［ｎ：ｍ］は、ビット番号ｎ〜ｍのビットを意味する。本願においては、一般的な表示にならい、最下位ビットのビット番号を「０」とし、上位ビットに向けてビット番号がインクリメントされている。
【００２３】
図１に示す例において、命令アドレスは、アドレスの上位２１ビット［３１：１１］と、アドレスの下位８ビット［１０：３］と、２ビットの命令選択情報［２：１］と、常に「０」の最下位ビット［０：０］とを有している。アドレスの下位８ビットは、キャッシュメモリー３０の各々のラインに付されたインデックス（Index）を選択するために用いられる。図１においては、インデックス「２」が付されたラインが選択されている。
【００２４】
キャッシュメモリー３０は、例えば、ＳＲＡＭ等のＲＡＭで構成され、アドレスの下位８ビットに対応するインデックス０〜２５５が付された２５６のラインを有している。キャッシュメモリー３０の各々のラインには、１ビットの有効フラグＶＡＬと、少なくとも１ビットのプリフェッチ実行フラグＰＦと、アドレスの上位２１ビットに対応する２１ビットのタグＴＡＧと、４つの命令コード（例えば、各１６ビット）ＩＮ３〜ＩＮ０とが格納される。
【００２５】
ただし、プログラムの最後の部分に関しては、キャッシュメモリー３０の１つのラインに３つ以下の命令コードが格納される場合もある。また、キャッシュメモリー３０の１つのラインに格納される命令コードの数は、上記に限られるものではなく、様々なバリエーションを設けても良い。さらに、キャッシュメモリー３０の１つのラインに格納されるタグ数に、インデックス毎にバリエーションを設けても良い。
【００２６】
有効フラグＶＡＬは、そのラインが有効であるか又は無効であるかを表している。例えば、有効フラグＶＡＬの初期状態が、ラインが無効であることを表す状態「０」に設定される。その後、少なくとも１つの命令コードがキャッシュメモリー３０のラインに書き込まれる際に、そのラインの有効フラグＶＡＬが、ラインが有効であることを表す状態「１」に設定される。
【００２７】
プリフェッチ実行フラグＰＦは、そのラインに格納されている分岐命令が実行された場合に分岐が行われる可能性が低いか又は高いかを表している。例えば、プリフェッチ実行フラグＰＦの初期状態が、分岐命令が再度実行された場合に分岐が行われる可能性が低いことを表す第１の状態に設定される。
【００２８】
その後、分岐命令で分岐が行われたか否かによって、そのラインのプリフェッチ実行フラグＰＦが、分岐命令が再度実行された場合に分岐が行われる可能性が低いことを表す第１の状態と、分岐命令が再度実行された場合に分岐が行われる可能性が高いことを表す第２の状態とを含む複数の状態の内の１つに設定される。第１の設定例（図４参照）においては、１ビットのプリフェッチ実行フラグＰＦが、第１の状態「１」と第２の状態「０」との内の１つに設定される。
【００２９】
キャッシュメモリー３０において、プリフェッチ実行フラグＰＦは、分岐命令が格納されるラインのみならず、分岐命令以外の命令が格納されるラインにも格納される。その場合に、プリフェッチ実行フラグＰＦは、初期状態である第１の状態に維持されて、分岐が行われないことを表すために用いられる。
【００３０】
キャッシュメモリー制御回路４０は、比較回路４１と、ＡＮＤ回路４２と、マルチプレクサー４３とを含んでいる。比較回路４１は、ＣＰＵ１０から出力される命令アドレスにおけるアドレスの上位２１ビット［３１：１１］とキャッシュメモリー３０において選択されているラインに格納されている２１ビットのタグＴＡＧとを比較して、両者が一致していれば出力信号をハイレベルに活性化し、両者が一致していなければ出力信号をローレベルに非活性化する。
【００３１】
ＡＮＤ回路４２は、キャッシュメモリー３０において選択されているラインに格納されている有効フラグＶＡＬと比較回路４１の出力信号との論理積を求めて、論理積を表すキャッシュヒット信号を出力する。ＣＰＵ１０から出力される命令アドレスによって指定される命令コードがキャッシュメモリー３０において選択されているラインに格納されている場合には、キャッシュヒット信号がハイレベルに活性化される。
【００３２】
マルチプレクサー４３は、ＣＰＵ１０から出力される命令アドレスにおける命令選択情報［２：１］に従って、キャッシュメモリー３０において選択されているラインに格納されている４つの命令コードＩＮ３〜ＩＮ０の内から１つの命令コードを選択する。それにより、キャッシュメモリー制御回路４０は、キャッシュヒット信号がハイレベルに活性化されている場合に、マルチプレクサー４３によって選択された命令コードをＣＰＵ１０に出力する（命令リード）。
【００３３】
プリフェッチ回路６０は、所定の場合にフラッシュメモリー２０にプリフェッチアドレスを出力することにより、フラッシュメモリー２０から命令を予め読み出して、キャッシュメモリー３０において選択されているライン（「第１のライン」ともいう）の次の第２のラインに格納する（プリフェッチ動作）。本実施形態においては、１回のプリフェッチ動作によって、４つの命令がフラッシュメモリー２０から読み出されてキャッシュメモリー３０の第２のラインに格納される。
【００３４】
＜プリフェッチ動作＞
図２は、プリフェッチ動作の第１の例を示すタイミングチャートである。ＣＰＵ１０は、クロック信号のパルス（クロックパルス）に同期して、命令アドレスＡＤ１を出力する。キャッシュメモリー制御回路４０は、ＣＰＵ１０から命令アドレスＡＤ１が出力されるクロックパルスの次のクロックパルスに同期して、命令アドレスＡＤ１によって指定される命令ＩＮ１をキャッシュメモリー３０から読み出してＣＰＵ１０に出力する（命令リード）。
【００３５】
それと同じタイミングで、プリフェッチ回路６０は、プリフェッチアドレスＡＤ５−８をフラッシュメモリー２０に出力することにより、フラッシュメモリー２０のアドレスＡＤ５−８にそれぞれ記憶されている命令ＩＮ５−８を予め読み出してキャッシュメモリー３０に格納する（プリフェッチリード）。このプリフェッチ動作には、複数のクロックパルス分の時間を要する。
【００３６】
第１の例においては、ＣＰＵ１０から命令アドレスＡＤ５が出力されるタイミングで、フラッシュメモリー２０のアドレスＡＤ５−８にそれぞれ記憶されている命令ＩＮ５−８が読み出されてキャッシュメモリー３０に格納される。キャッシュメモリー制御回路４０は、ＣＰＵ１０から命令アドレスＡＤ５が出力されるクロックパルスの次のクロックパルスに同期して、キャッシュメモリー３０から命令ＩＮ５を読み出してＣＰＵ１０に出力する（命令リード）。
【００３７】
図３は、プリフェッチ動作の第２の例を示すタイミングチャートである。第２の例においては、命令ＩＮ４が分岐命令であり、命令ＩＮ４で分岐が行われる。それにより、ＣＰＵ１０は、命令アドレスＡＤ４の次に命令アドレスＡＤ１２を出力する。従って、フラッシュメモリー２０のアドレスＡＤ５−８にそれぞれ記憶されている命令ＩＮ５−８を予め読み出すプリフェッチ動作は無駄となる。
【００３８】
プリフェッチ回路６０は、ＣＰＵ１０から命令アドレスＡＤ１２が出力されると、次のクロックパルスに同期して、プリフェッチアドレスＡＤ１２−１５をフラッシュメモリー２０に出力することにより、フラッシュメモリー２０のアドレスＡＤ１２−１５にそれぞれ記憶されている命令ＩＮ１２−１５を読み出してキャッシュメモリー３０に格納する（プリフェッチリード）。キャッシュメモリー制御回路４０は、ＣＰＵ１０から次の命令アドレスＡＤ１３が出力されるタイミングで、キャッシュメモリー３０から命令ＩＮ１２を読み出してＣＰＵ１０に出力する（命令リード）。
【００３９】
このように、図１に示すキャッシュメモリー３０において選択されている第１のラインに分岐命令が格納されている場合には、分岐命令によって制御フローが変更される可能性があるので、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令をフラッシュメモリー２０から予め読み出すプリフェッチ動作を行っても、プリフェッチ動作が無駄になる可能性がある。
【００４０】
そこで、プリフェッチ回路６０は、判定回路５０によって生成されるプリフェッチ信号に従って、プリフェッチを実行するか否かを決定する。判定回路５０は、キャッシュメモリー３０において選択されている第１のラインに格納されているタグＴＡＧと、第１のラインの次の第２のラインに格納されているタグＴＡＧとに基づいて、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第２のラインに既に格納されているか否かを判定し、その判定結果とプリフェッチ実行フラグＰＦとに基づいてプリフェッチ信号を生成する。
【００４１】
判定回路５０は、比較回路５１と、片側反転入力のＡＮＤ回路５２とを含んでいる。比較回路５１は、キャッシュメモリー３０において選択されている第１のラインに格納されている２１ビットのタグＴＡＧと、第１のラインの次の第２のラインに格納されている２１ビットのタグＴＡＧとを比較して、両者が一致していれば出力信号をハイレベルに活性化し、両者が一致していなければ出力信号をローレベルに非活性化する。
【００４２】
ＡＮＤ回路５２の非反転入力端子には、キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが供給され、反転入力端子には、比較回路５１の出力信号が供給される。ＡＮＤ回路５２は、プリフェッチ実行フラグＰＦと比較回路５１の出力信号の反転レベルとの倫理積を求めて、倫理積を表すプリフェッチ信号を出力する。
【００４３】
プリフェッチ信号は、キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが第１の状態（ハイレベル）に設定され、且つ、比較回路５１の出力信号がローレベルである（第１のラインのタグＴＡＧと第２のラインのタグＴＡＧとが一致しない）場合にハイレベルに活性化され、それ以外の場合にローレベルに非活性化される。
【００４４】
プリフェッチ回路６０は、プリフェッチ信号及びキャッシュヒット信号がハイレベルに活性化されている場合に、プリフェッチを実行する。通常状態においては、ＣＰＵ１０から出力される命令アドレスによって指定される命令がキャッシュメモリー３０において選択されている第１のラインに格納されているので、キャッシュヒット信号はハイレベルに活性化されている。
【００４５】
従って、プリフェッチ回路６０は、キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが第１の状態に設定され、且つ、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第１のラインの次の第２のラインに格納されていない場合に、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令をフラッシュメモリー２０から予め読み出してキャッシュメモリー３０の第２のラインに格納する。
【００４６】
本実施形態によれば、分岐命令が再度実行された場合に分岐が行われる可能性が高いことを表す第２の状態にプリフェッチ実行フラグＰＦが設定されている場合には、プリフェッチが実行されない。従って、分岐命令に後続する命令のプリフェッチが必要ない場合にプリフェッチが実行されてしまう確率を下げることにより、フラッシュメモリー２０に対する不要なアクセスの回数を低減してマイクロコンピューターの消費電力を削減すると共に、キャッシュメモリー３０の利用効率を向上させてパフォーマンスを改善することができる。
【００４７】
＜プリフェッチ実行フラグの第１の設定例＞
図４は、プリフェッチ実行フラグの第１の設定例を示す状態遷移図である。例えば、フラッシュメモリー２０から読み出された命令がキャッシュメモリー３０のラインに格納される際に、プリフェッチ回路６０が、そのラインのプリフェッチ実行フラグＰＦの初期状態を第１の状態Ｓ１に設定する。
【００４８】
キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが第１の状態Ｓ１に設定されている場合には、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第１のラインの次の第２のラインに格納されていなければ、プリフェッチが実行される。例えば、１回のプリフェッチによって４つの命令がフラッシュメモリー２０から読み出される場合に、４クロックパルス毎に１回のプリフェッチが実行される。
【００４９】
その後、プリフェッチ回路６０は、ＣＰＵ１０から出力される命令アドレスに基づいて、分岐命令で分岐が行われたか否かを判定し、その分岐命令が格納されているラインのプリフェッチ実行フラグＰＦを設定する。例えば、プリフェッチ回路６０は、分岐命令で分岐が行われなかった場合に、プリフェッチ実行フラグＰＦが第１の状態Ｓ１に設定されていたらプリフェッチ実行フラグＰＦを第１の状態Ｓ１に維持し、プリフェッチ実行フラグＰＦが第２の状態Ｓ２に設定されていたらプリフェッチ実行フラグＰＦを第１の状態Ｓ１に設定する。
【００５０】
一方、プリフェッチ回路６０は、分岐命令で分岐が行われた場合に、プリフェッチ実行フラグＰＦが第１の状態Ｓ１に設定されていたらプリフェッチ実行フラグＰＦを第２の状態Ｓ２に設定し、プリフェッチ実行フラグＰＦが第２の状態Ｓ２に設定されていたらプリフェッチ実行フラグＰＦを第２の状態Ｓ２に維持する。それにより、比較的簡単な論理に従って、プリフェッチ実行フラグＰＦを設定することができる。
【００５１】
キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが第２の状態Ｓ２に設定されている場合には、プリフェッチが実行されない。それにより、分岐命令に後続する命令のプリフェッチが必要ない場合にプリフェッチが実行されてしまう確率を下げることができる。
【００５２】
＜プリフェッチ実行フラグの第２の設定例＞
プリフェッチ実行フラグの第２の設定例においては、２ビットのプリフェッチ実行フラグＰＦが、第１の状態Ｓ１〜第４の状態Ｓ４の内の１つに設定される。第３の状態Ｓ３は、分岐命令が再度実行された場合に分岐が行われる可能性が第１の状態Ｓ１よりも低いことを表しており、第４の状態Ｓ４は、分岐命令が再度実行された場合に分岐が行われる可能性が第２の状態Ｓ２よりも高いことを表している。
【００５３】
図１に示す判定回路５０において、ＡＮＤ回路５２の非反転入力端子には、キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが第１の状態Ｓ１又は第３の状態Ｓ３に設定されている場合にハイレベルの信号が供給され、プリフェッチ実行フラグＰＦが第２の状態Ｓ２又は第４の状態Ｓ４に設定されている場合にローレベルの信号が供給される。
【００５４】
図５は、プリフェッチ実行フラグの第２の設定例を示す状態遷移図である。例えば、フラッシュメモリー２０から読み出された命令がキャッシュメモリー３０のラインに格納される際に、プリフェッチ回路６０が、そのラインのプリフェッチ実行フラグＰＦの初期状態を第１の状態Ｓ１に設定する。
【００５５】
その後、プリフェッチ回路６０は、ＣＰＵ１０から出力される命令アドレスに基づいて、分岐命令で分岐が行われたか否かを判定し、その分岐命令が格納されているラインのプリフェッチ実行フラグＰＦを設定する。例えば、プリフェッチ回路６０は、分岐命令で分岐が行われなかった場合に、その分岐命令が格納されているラインのプリフェッチ実行フラグＰＦが第１の状態Ｓ１に設定されていたらプリフェッチ実行フラグＰＦを第３の状態Ｓ３に設定し、プリフェッチ実行フラグＰＦが第２の状態Ｓ２に設定されていたらプリフェッチ実行フラグＰＦを第１の状態Ｓ１に設定する。
【００５６】
一方、プリフェッチ回路６０は、分岐命令で分岐が行われた場合に、その分岐命令が格納されているラインのプリフェッチ実行フラグＰＦが第１の状態Ｓ１に設定されていたらプリフェッチ実行フラグＰＦを第２の状態Ｓ２に設定し、プリフェッチ実行フラグＰＦが第２の状態Ｓ２に設定されていたらプリフェッチ実行フラグＰＦを第４の状態Ｓ４に設定する。
【００５７】
プリフェッチ回路６０は、キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが第１の状態Ｓ１又は第３の状態Ｓ３に設定され、且つ、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令が第２のラインに格納されていない場合に、プリフェッチを実行する。即ち、プリフェッチ回路６０は、第１のラインに格納されている命令のアドレスに後続するアドレスを有する命令をフラッシュメモリー２０から読み出してキャッシュメモリー３０の第２のラインに格納する。
【００５８】
一方、キャッシュメモリー３０において選択されている第１のラインに格納されているプリフェッチ実行フラグＰＦが第２の状態Ｓ２又は第４の状態Ｓ４に設定されている場合には、プリフェッチが実行されない。このように、第１の状態Ｓ１及び第２の状態Ｓ２に加えて第３の状態Ｓ３及び第４の状態Ｓ４にプリフェッチ実行フラグＰＦを設定可能とすることにより、分岐命令が再度実行された場合に分岐が行われる可能性に応じて多様な対応をとることができる。
【００５９】
例えば、プリフェッチ回路６０は、分岐命令で分岐が行われなかった場合に、その分岐命令が格納されているラインのプリフェッチ実行フラグＰＦが第３の状態Ｓ３に設定されていたらプリフェッチ実行フラグＰＦを第３の状態Ｓ３に維持し、プリフェッチ実行フラグＰＦが第４の状態Ｓ４に設定されていたらプリフェッチ実行フラグＰＦを第２の状態Ｓ２に設定する。
【００６０】
一方、プリフェッチ回路６０は、分岐命令で分岐が行われた場合に、その分岐命令が格納されているラインのプリフェッチ実行フラグＰＦが第３の状態Ｓ３に設定されていたらプリフェッチ実行フラグＰＦを第１の状態Ｓ１に設定し、プリフェッチ実行フラグＰＦが第４の状態Ｓ４に設定されていたらプリフェッチ実行フラグＰＦを第４の状態Ｓ４に維持する。
【００６１】
それにより、例えば、分岐命令で分岐が１回だけ行われた場合には、プリフェッチ実行フラグＰＦが容易に第１の状態Ｓ１に戻る一方、分岐命令で分岐が２回以上連続して行われた場合には、プリフェッチ実行フラグＰＦが容易に第１の状態Ｓ１に戻らなくなる。従って、プリフェッチが必要であるか否かをより精度高く予測して、適切な対応をとることができる。
【００６２】
＜電子機器＞
次に、本発明の一実施形態に係る電子機器について説明する。
図６は、本発明の一実施形態に係る電子機器の構成例を示すブロック図である。この電子機器は、本発明の一実施形態に係るマイクロコンピューター１００と、操作部１１０と、通信部１２０と、音声出力部１３０と、表示部１４０とを含んでいる。なお、図６に示す構成要素の一部を省略又は変更しても良いし、あるいは、図６に示す構成要素に他の構成要素を付加しても良い。
【００６３】
マイクロコンピューター１００は、図１〜図５を参照しながら説明したものと同様である。例えば、マイクロコンピューター１００は、操作部１１０から供給される操作信号に応じて各種の信号処理を行ったり、外部との間でデータ通信を行うために通信部１２０を制御する。あるいは、マイクロコンピューター１００は、音声出力部１３０に各種の音声を出力させるための音声信号を生成したり、表示部１４０に各種の画像を表示させるための画像信号を生成する。
【００６４】
操作部１１０は、例えば、操作キーやボタンスイッチ等を含む入力装置であり、ユーザーによる操作に応じた操作信号をマイクロコンピューター１００に出力する。通信部１２０は、例えば、アナログ回路及びデジタル回路で構成され、マイクロコンピューター１００と外部装置との間のデータ通信を行う。音声出力部１３０は、例えば、音声回路及びスピーカー等を含み、マイクロコンピューター１００から供給される音声信号に基づいて音声を出力する。また、表示部１４０は、例えば、表示ドライバー回路及びＬＣＤ（液晶表示装置）等を含み、マイクロコンピューター１００から供給される画像信号に基づいて各種の情報を表示する。
【００６５】
上記の電子機器としては、例えば、携帯電話機等の移動端末、スマートカード、電卓、電子辞書、電子ゲーム機器、デジタルスチルカメラ、デジタルムービー、テレビ、テレビ電話、防犯用テレビモニター、ヘッドマウント・ディスプレイ、パーソナルコンピューター、プリンター、ネットワーク機器、カーナビゲーション装置、測定機器、及び、医療機器（例えば、電子体温計、血圧計、血糖計、心電図計測装置、超音波診断装置、及び、電子内視鏡）等が該当する。
【００６６】
本実施形態によれば、不揮発性メモリーに対する不要なアクセスの回数を低減して消費電力が削減されると共にキャッシュメモリーの利用効率を向上させてパフォーマンスが改善されたマイクロコンピューター１００を用いて、低消費電力で高性能の電子機器を提供することができる。
【００６７】
本発明は、以上説明した実施形態に限定されるものではなく、当該技術分野において通常の知識を有する者によって、本発明の技術的思想内で多くの変形が可能である。
【符号の説明】
【００６８】
１０…ＣＰＵ、２０…フラッシュメモリー、３０…キャッシュメモリー、４０…キャッシュメモリー制御回路、４１…比較回路、４２…ＡＮＤ回路、４３…マルチプレクサー、５０…判定回路、５１…比較回路、５２…ＡＮＤ回路、６０…プリフェッチ回路、１００…マイクロコンピューター、１１０…操作部、１２０…通信部、１３０…音声出力部、１４０…表示部
【図１】
2019117491.tif 000003
【図２】
2019117491.tif 000004
【図３】
2019117491.tif 000005
【図４】
2019117491.tif 000006
【図５】
2019117491.tif 000007
【図６】
2019117491.tif 000008