(57)【特許請求の範囲】
【請求項１】
キャッシュメモリを有するマイクロコンピュータにおいて、
第１のレジスタを内蔵し、実行する処理を切替える毎に、次に実行する処理におけるキャッシュメモリの使用規則を示すキャッシュ使用情報を、前記第１のレジスタに格納する処理切替え制御回路と、
第２のレジスタを内蔵し、前記第１のレジスタに前記キャッシュ使用情報が格納されると前記キャッシュ使用情報を前記第２のレジスタに格納し、当該第２のレジスタに格納された前記キャッシュ使用情報で示された使用規則に従って、データの前記キャッシュメモリへの入出力を行うキャッシュ制御回路と、
を有することを特徴とするマイクロコンピュータ。
【請求項２】
前記処理切替え制御回路が実行する処理毎の前記キャッシュ使用情報を格納するキャッシュ使用情報格納レジスタを有し、
前記処理切替え制御回路は、次に実行する処理のキャッシュ使用情報を前記キャッシュ使用情報格納レジスタから取得して前記第１のレジスタに格納することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記キャッシュ使用情報は、前記キャッシュメモリを使用して処理を実行するか否かの情報であることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項４】
前記キャッシュ使用情報は、前記処理切替え制御回路が前記キャッシュメモリを使用して処理を実行している場合で、前記キャッシュメモリに新たなデータを格納可能とするか否かのエントリロック情報であることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項５】
前記処理切替え制御回路は、現在実行している処理の処理されるべき順序を示す優先度と、次に実行する処理の優先度とを比較し、次に実行する処理の優先度が高い場合に、前記キャッシュ使用情報を前記第１のレジスタに格納することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項６】
前記処理切替え制御回路が実行する処理を切替える毎に、前記第１のレジスタの値が入出力されるメモリと、
前記メモリの前記値が入出力されるアドレスを格納し、前記値の出入が行われたとき前記アドレスを増減するスタックポインタと、
を有することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項７】
キャッシュメモリを有するマイクロコンピュータのキャッシュメモリ制御方法において、
実行する処理を切替える毎に、次に実行する処理におけるキャッシュメモリの使用規則を示すキャッシュ使用情報を第１のレジスタに格納し、
前記第１のレジスタに前記キャッシュ使用情報が格納されると前記キャッシュ使用情報を第２のレジスタに格納し、
当該第２のレジスタに格納された前記キャッシュ使用情報で示された使用規則に従って、データの前記キャッシュメモリへの入出力を行う、
ことを特徴とするキャッシュメモリ制御方法。
【請求項８】
クロックに同期して処理を実行するマイクロコンピュータにおいて、
第１のレジスタを内蔵し、実行する処理を切替える毎に、次に実行する処理に使用されるクロックを示すクロック使用情報を、前記第１のレジスタに格納する処理切替え制御回路と、
第２のレジスタを内蔵し、前記第１のレジスタに前記クロック使用情報が格納されると前記クロック使用情報を前記第２のレジスタに格納し、複数のクロックから当該第２のレジスタに格納された前記クロック使用情報に従って、クロックを選択出力するクロック制御回路と、
を有することを特徴とするマイクロコンピュータ。
【請求項９】
前記クロック制御回路は、前記第２のレジスタに前記クロック使用情報が格納された後、前記複数のクロックの全てが同期したとき、前記クロックを選択出力することを特徴とする請求項８記載のマイクロコンピュータ。
【請求項１０】
クロックに同期して処理を実行するマイクロコンピュータのクロック制御方法において、
実行する処理を切替える毎に、次に実行する処理に使用されるクロックを示すクロック使用情報を第１のレジスタに格納し、
前記第１のレジスタに前記クロック使用情報が格納されると前記クロック使用情報を第２のレジスタに格納し、
複数のクロックを出力するクロック出力回路から当該第２のレジスタに格納された前記クロック使用情報に従ったクロックを出力する、
ことを特徴とするクロック制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はマイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法に関し、特にキャッシュメモリ、クロックを制御して、処理の高速化を図るマイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法に関する。
【０００２】
【従来の技術】
近年のマイクロコントローラは、内部にキャッシュメモリを搭載して、動作速度の遅い周辺メモリへのアクセスを極力減らし、高速化を実現している。キャッシュメモリは、プログラムに特定の命令を記述することによって、その使用が制御される。
【０００３】
図１３は、従来のマイクロコントローラの内部構成を示すブロック図である。マイクロコントローラ７は、処理ルーチンを実行するＣＰＵ（Central Processing Unit）７０、ＣＰＵ７０が頻繁にアクセスする処理ルーチンの一部、又は全部を格納するキャッシュメモリ７１、キャッシュメモリ７１を使用可能にするか否かを制御するキャッシュ制御回路７２、及び周辺装置からの割込み要因をその優先度やマスク状態から判断し、ＣＰＵ７０に割込み要求信号を発生する割込みコントローラ７３から構成される。マイクロコントローラ７には、ＣＰＵ７０が実行する処理ルーチンを格納するＲＯＭ（Read Only Memory）８が接続されている。また、キャッシュ制御回路７２は、キャッシュメモリ７１の使用状態が設定されるためのレジスタ７２ａを有する。
【０００４】
図１４は、従来のマイクロコントローラのＣＰＵの処理遷移図である。図１４に示すように、マイクロコントローラ７のＣＰＵ７０は、通常の動作を行うメインルーチンと、割込み要因１に対する割込みルーチンを処理するとする。メインルーチンは、キャッシュメモリ７１を利用して処理され、割込みルーチンは、キャッシュメモリ７１を利用しないで処理されるとする。
【０００５】
割込み要因１が割込みコントローラ７３に入ってきたとする。割込みコントローラ７３は、ＣＰＵ７０に割込み要求信号を発生する。ＣＰＵ７０は、割込み要求信号により、メインルーチンの処理を中断し、割込みルーチンを処理する。
【０００６】
このとき、ＣＰＵ７０に割込みルーチンを、キャッシュメモリ７１を利用しないで処理させるために、割込みルーチンが記述されたプログラムの先頭に、キャッシュオフ命令を記述する。ＣＰＵ７０は、キャッシュオフ命令を実行し、キャッシュを使用しないという情報をレジスタ７２ａに格納する。キャッシュ制御回路７２は、レジスタ７２ａに格納された情報に従って、ＣＰＵ７０のキャッシュメモリ７１の使用を禁止する。このため、ＣＰＵ７０がキャッシュオフ命令を実行してから、キャッシュメモリ７１の使用が不可となる。
【０００７】
割込みルーチンを終えるとき、ＣＰＵ７０にメインルーチンを、キャッシュメモリ７１を利用して処理させるために、割込みルーチンが記述されたプログラムの最後に、キャッシュオン命令と復帰命令を記述する。ＣＰＵ７０は、キャッシュオフ命令を実行し、キャッシュメモリ７１を使用するという情報をレジスタ７２ａに格納する。キャッシュ制御回路７２は、レジスタ７２ａに格納された情報に従って、キャッシュメモリ７１の使用禁止を解除する。このため、ＣＰＵ７０がキャッシュオン命令を実行してからキャッシュメモリ７１の使用が可能となる。
【０００８】
【発明が解決しようとする課題】
このように、従来においては、キャッシュメモリ７１を制御するための情報を、プログラムを実行してレジスタ７２ａに格納しなければならない。すなわち、図１４に示すように、キャッシュオフ命令と、復帰命令は、キャッシュメモリ７１に格納される可能性がある。このため、キャッシュメモリ７１の容量は小さくなり、キャッシュメモリ７１に格納されるべき、メインルーチンの一部が格納されない場合がある。
【０００９】
このため、キャッシュメモリに格納されて処理されるべき処理ルーチンの一部が、キャッシュメモリに格納されない場合があり、キャッシュメモリの使用効率が悪く、処理速度の低下につながるという問題点があった。
【００１０】
本発明はこのような点に鑑みてなされたものであり、キャッシュメモリを効率的に使用し、実行する処理の高速化を図ることができるマイクロコンピュータを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するために第１の形態のキャッシュメモリを有するマイクロコンピュータにおいて、第１のレジスタを内蔵し、実行する処理を切替える毎に、次に実行する処理におけるキャッシュメモリの使用規則を示すキャッシュ使用情報を、前記第１のレジスタに格納する処理切替え制御回路と、第２のレジスタを内蔵し、前記第１のレジスタに前記キャッシュ使用情報が格納されると前記キャッシュ使用情報を前記第２のレジスタに格納し、当該第２のレジスタに格納された前記キャッシュ使用情報で示された使用規則に従って、データの前記キャッシュメモリへの入出力を行うキャッシュ制御回路と、を有することを特徴とするマイクロコンピュータが提供される。
【００１２】
ここで、図１に示すように、処理切替え制御回路１０は、実行する処理を切替える毎に、次に実行する処理におけるキャッシュ使用情報を、内蔵する第１のレジスタ１０ａに格納する。キャッシュ制御回路１１は、第１のレジスタ１０ａにキャッシュ使用情報が格納されると、そのキャッシュ使用情報を、内蔵する第２のレジスタ１１ａに格納する。キャッシュ制御回路１１は、第２のレジスタ１１ａに格納されたキャッシュ使用情報で示された使用規則に従って、データのキャッシュメモリ１１ｂへの入出力を行う。これにより、キャッシュメモリ１１ｂの使用効率を高め、実行する処理の高速化を図る。
【００１３】
また、第２の形態のクロックに同期して処理を実行するマイクロコンピュータにおいて、第１のレジスタを内蔵し、実行する処理を切替える毎に、次に実行する処理に使用されるクロックを示すクロック使用情報を、前記第１のレジスタに格納する処理切替え制御回路と、第２のレジスタを内蔵し、前記第１のレジスタに前記クロック使用情報が格納されると前記クロック使用情報を前記第２のレジスタに格納し、複数のクロックから当該第２のレジスタに格納された前記クロック使用情報に従って、クロックを選択出力するクロック制御回路と、を有することを特徴とするマイクロコンピュータが提供される。
【００１４】
このようなマイクロコンピュータでは、処理切替え制御回路は、実行する処理を切替える毎に、次に実行する処理におけるクロック使用情報を、内蔵する第１のレジスタに格納する。クロック制御回路は、第１のレジスタにクロック使用情報が格納されると、そのクロック使用情報を、内蔵する第２のレジスタに格納する。クロック制御回路は、複数のクロックから第２のレジスタに格納されたクロック使用情報に従って、クロックを選択出力する。これにより、クロックの変更を簡易化し、実行する処理の高速化を図る。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の原理を説明する原理図である。
【００１６】
この図において、マイクロコンピュータ１は、処理切替え制御回路１０、キャッシュ制御回路１１、レジスタ群１２から構成され、そのマイクロコンピュータ１には、ＲＯＭ２が接続されている。
【００１７】
処理切替え制御回路１０は、第１のレジスタ１０ａを内蔵する。処理切替え制御回路１０は、実行する処理を切替える毎に、次に実行する処理におけるキャッシュメモリの使用規則を示すキャッシュ使用情報を、第１のレジスタ１０ａに格納する。
【００１８】
キャッシュ制御回路１１は、第２のレジスタ１１ａ、キャッシュメモリ１１ｂを内蔵する。キャッシュ制御回路１１は、第１のレジスタ１０ａにキャッシュ使用情報が格納されると、そのキャッシュ使用情報を第２のレジスタ１１ａに格納する。キャッシュ制御回路１１は、第２のレジスタ１１ａに格納されたキャッシュ使用情報で示された使用規則に従って、データのキャッシュメモリ１１ｂへの入出力を行う。
【００１９】
レジスタ群１２は、レジスタ１２ａ，１２ｂ，１２ｃを有する。レジスタ１２ａ〜１２ｃには、キャッシュメモリ１１ｂの使用規則を示すキャッシュ使用情報Ａ１，Ａ２，Ａ３が格納される。
【００２０】
ＲＯＭ２は、処理切替え制御回路１０が実行する処理Ｂ１，Ｂ２，Ｂ３が格納される。
ここで、例えば、キャッシュ使用情報Ａ１は、処理切替え制御回路１０が処理Ｂ１を実行する際、キャッシュメモリ１１ｂを使用する、という情報である。キャッシュ使用情報Ａ２は、処理切替え制御回路１０が処理Ｂ２を実行する際、キャッシュメモリ１１ｂを使用しない、という情報である。キャッシュ使用情報Ａ３は、処理切替え制御回路１０が処理Ｂ３を実行する際、キャッシュメモリ１１ｂを使用する、という情報である。
【００２１】
以下、図１の原理図の動作について説明する。
まず、処理切替え制御回路１０は、処理Ｂ１を実行しているとする。第１のレジスタ１０ａは、レジスタ１２ａに格納されたキャッシュ使用情報Ａ１を格納しているとする。キャッシュ制御回路１１の第２のレジスタ１１ａは、レジスタ１２ａに格納されたキャッシュ使用情報Ａ１を格納しているとする。従って、処理切替え制御回路１０は、キャッシュ制御回路１１のキャッシュメモリ１１ｂを使用して処理Ｂ１を実行していることになる。
【００２２】
処理切替え制御回路１０が、処理Ｂ１から処理Ｂ２に実行を切替えるとする。このとき、処理切替え制御回路１０は、レジスタ１２ｂに格納された次に実行する処理Ｂ２のキャッシュ使用情報Ａ２を第１のレジスタ１０ａに格納する。
【００２３】
キャッシュ制御回路１１は、第１のレジスタ１０ａにキャッシュ使用情報Ａ２が格納されると、第１のレジスタ１０ａに格納されたキャッシュ使用情報Ａ２を第２のレジスタ１１ａに格納する。
【００２４】
処理切替え制御回路１０は、処理Ｂ２を実行する。このとき、キャッシュ制御回路１１の第２のレジスタ１１ａには、キャッシュメモリ１１ｂを使用しないという情報のキャッシュ使用情報Ａ２が格納されている。キャッシュ制御回路１１は、第２のレジスタ１１ａに格納されたキャッシュ使用情報Ａ２に従って、キャッシュメモリ１１ｂのデータの入出力を禁止する。よって、処理切替え制御回路１０は、キャッシュ制御回路１１のキャッシュメモリ１１ｂを使用せずに処理Ｂ２を実行することになる。
【００２５】
さらに、処理切替え制御回路１０が、処理Ｂ２から処理Ｂ３へ実行を切替えるとする。このとき、処理切替え制御回路１０は、レジスタ１２ｃに格納された次に実行する処理Ｂ３のキャッシュ使用情報Ａ３を第１のレジスタ１０ａに格納する。
【００２６】
キャッシュ制御回路１１は、第１のレジスタ１０ａにキャッシュ使用情報Ａ３が格納されると、第１のレジスタ１０ａに格納されたキャッシュ使用情報Ａ３を第２のレジスタ１１ａに格納する。
【００２７】
処理切替え制御回路１０は、処理Ｂ３を実行する。このとき、キャッシュ制御回路１１の第２のレジスタ１１ａには、キャッシュメモリを使用するという情報のキャッシュ使用情報Ａ３が格納されている。キャッシュ制御回路１１は、第２のレジスタ１１ａに格納されたキャッシュ使用情報Ａ３に従って、キャッシュメモリ１１ｂのデータの入出力を可能とする。よって、処理切替え制御回路１０は、キャッシュ制御回路１１のキャッシュメモリ１１ｂを使用して処理Ｂ３を実行することになる。
【００２８】
このように、処理切替え制御回路１０は、実行する処理を切替える毎に、その実行する処理におけるキャッシュ使用情報を第１のレジスタ１０ａに格納し、キャッシュ制御回路１１は、第１のレジスタ１０ａに格納されたキャッシュ情報を第２のレジスタ１１ａに格納する。キャッシュ制御回路１１は、第２のレジスタ１１ａに格納されたキャッシュ使用情報に従って、データのキャッシュメモリ１１ｂへの入出力を行う。従って、実行する処理を記述したプログラムにキャッシュメモリ１１ｂを制御するための命令を記述する必要がなく、不要なプログラムがキャッシュメモリ１１ｂに格納されることがない。よって、実行されるべき処理がキャッシュメモリ１１ｂに格納され、キャッシュメモリを効率よく使用でき、処理の高速化を図ることができる。
【００２９】
また、処理切替え制御回路１０は、実行する処理を切替える毎に、次に実行する処理におけるキャッシュ使用情報を第１のレジスタに格納する。従って、実行する処理のプログラムの記述において、次に実行される処理のキャッシュ使用情報を気にすることなく記述でき、キャッシュメモリの使用管理が容易となる。
【００３０】
次に、本発明の第１の実施の形態について説明する。
図２は、本発明の第１の実施の形態に係るマイクロコントローラの構成図である。
【００３１】
この図において、マイクロコントローラ３は、割込みコントローラ３０、ＣＰＵ３１、キャッシュ制御回路３２、内部ＲＡＭ（Random Access Memory）３３から構成され、そのマイクロコントローラ３には、ＲＯＭ４が接続されている。また、割込みコントローラ３０は、割込み制御レジスタ群３０ａを有している。ＣＰＵ３１は、割込みレベルレジスタ３１ａ、割込み判定回路３１ｂ、スタックポインタ３１ｃを有している。キャッシュ制御回路３２は、キャッシュ制御レジスタ３２ａ、キャッシュメモリ３２ｂを有している。
【００３２】
割込みコントローラ３０の割込み制御レジスタ群３０ａは、割り込み要因１，２，・・・に対応する割込みルーチンの、割込みレベル、キャッシュ使用情報、エントリロック情報を格納する。割込みレベルとは、割込み要因１，２，・・・が処理される優先度である。キャッシュ使用情報とは、割込みルーチン実行時にキャッシュメモリ３２ｂを使用するか否かの情報である。エントリロック情報とは、割込みルーチン実行時にキャッシュメモリ３２ｂが使用されている場合で、キャッシュメモリ３２ｂに格納されているデータが、新たに格納されるデータによって書き換えられないように、キャッシュメモリ３２ｂの内容を固定するか否かの情報である。例えば、キャッシュメモリ３２ｂがエントリロックされたとする。キャッシュメモリ３２ｂに空き領域が存在する場合、その空き領域に新しいデータが格納される。すでにデータが格納されている領域には、新しいデータは格納されない。
【００３３】
割込みコントローラ３０は、割込み判定回路３１ｂと接続され、割込み要因１，２，・・・を受け付けると、受け付けた割込み要因に対応する割込みレベルをＣＰＵ３１の割込み判定回路３１ｂに送る。
【００３４】
ＣＰＵ３１は、ＲＯＭ４、キャッシュメモリ３２ｂに格納された割込みルーチン及びメインルーチンを実行する。
ＣＰＵ３１の割込みレベルレジスタ３１ａは、ＣＰＵ３１ａが実行する割込みルーチン及びメインルーチンの割込みレベル、キャッシュ使用情報、エントリロック情報を格納する。
【００３５】
ＣＰＵ３１の割込み判定回路３１ｂは、割込みコントローラ３０から送られてくる割込みレベルと、割込みレベルレジスタ３１ａに格納されている割込みレベルを比較する。割込み判定回路３１ｂは、割込みコントローラ３０から送られてきた割込みレベルが、割込みレベルレジスタ３１ａに格納されている割込みレベルより高いと、割込み要因を受け付ける。
【００３６】
ＣＰＵ３１は、受け付けた割込み要因の、割込みレベル、キャッシュ使用情報、エントリロック情報を、割込み制御レジスタ群３０ａから割込みレベルレジスタ３１ａに格納する。
【００３７】
ＣＰＵ３１のスタックポインタ３１ｃは、内部ＲＡＭ３３のアドレスが格納される。内部ＲＡＭ３３のデータサイズは８ビットである。スタックポインタ３１ｃは、割込み要因１，２，・・・が発生した場合、格納している内部ＲＡＭ３３のアドレスを減算する。ＣＰＵ３１は、割込みレベルレジスタ３１ａの内容を、スタックポインタ３１ｃが示す内部ＲＡＭ３３のアドレスに格納する。ＣＰＵ３１は、割込みルーチンの実行が終了すると、スタックポインタ３１ｃが示す内部ＲＡＭ３３のアドレスの内容を、割込みレベルレジスタ３１ａに格納する。その後、スタックポインタ３１ｃは、格納している内部ＲＡＭ３３のアドレスを加算する。なお、割込みレベルレジスタ３１ａのデータサイズが８ビットであるとすると、減算値、加算値は、‘１’となる。
【００３８】
キャッシュ制御回路３２のキャッシュ制御レジスタ３２ａは、割込みレベルレジスタ３１ａと接続され、キャッシュ使用情報、エントリロック情報が格納される。キャッシュ制御回路３２は、キャッシュ制御レジスタ３２ａに格納された情報に従って、キャッシュメモリ３２ｂに割込みルーチン、メインルーチンを格納するか否かを制御する。キャッシュ制御回路３２は、割込みレベルレジスタ３１ａに情報が格納されると、割込みレベルレジスタ３１ａに格納されたキャッシュ使用情報、エントリロック情報をキャッシュ制御レジスタに３２ａに格納する。
【００３９】
次に、各レジスタの構造について説明する。
図３は、割込み制御レジスタ群の構成図の一例である。割込み制御レジスタ群３０ａは、割込み要因１，２，・・・毎に対応して、情報を格納する８ビットのレジスタである。‘ＩＣＲ０１’は、割込み要因１に対応する情報を格納するレジスタであり、‘ＩＣＲ０２’は、割込み要因２に対応する情報を格納するレジスタである。割込み制御レジスタ群３０ａのビット０からビット４に示す‘ＩＣＲ’には、割込みレベルを格納する。ビット５は、空きである。ビット６の‘ＩＣＥＬＫ’には、エントリロック情報を格納する。ビット７の‘ＩＣＥＮＢ’には、キャッシュ使用情報を格納する。
【００４０】
割込みレベルは、５ビットの数値であらわして‘ＩＣＲ’に格納する。数値が小さいほど、割込みレベルが高い。具体的には、‘０００００’がもっとも高い割込みレベルで、‘１１１１１’がもっとも低い割込みレベルである。
【００４１】
キャッシュメモリ１１ｂをエントリロックするには、‘ＩＣＥＬＫ’に‘１’を格納する。キャッシュメモリ１１ｂをエントリロックしない場合は、‘ＩＣＥＬＫ’に‘０’を格納する。
【００４２】
キャッシュメモリ３２ｂを使用するには、‘ＩＣＥＮＢ’に‘０’を格納する。キャッシュメモリ３２ｂを使用しない場合は、‘ＩＣＥＮＢ’に‘１’を格納する。
【００４３】
割込みレベル、エントリロック情報、キャッシュ使用情報は、例えば、電源投入時などの初期化処理時に、割込み制御レジスタ群５０ａに格納しておく。
図４は、割込みレベルレジスタの構成図の一例である。割込みレベルレジスタ３１ａは、８ビットのレジスタである。ビット０からビット４に示す‘ＩＣＲ’、ビット６に示す‘ＩＣＥＬＫ’、ビット７に示す‘ＩＣＥＮＢ’は、図３で示した‘ＩＣＲ’、‘ＩＣＥＬＫ’、‘ＩＣＥＮＢ’と同様の、割込みレベル、エントリロック情報、キャッシュ使用情報が格納される。ビット５は、空きである。
【００４４】
図５は、キャッシュ制御レジスタの構成図の一例である。キャッシュ制御レジスタ３２ａは、８ビットのレジスタである。ビット０に示す‘ＥＮＡＢ’は、キャッシュメモリ３２ｂを使用するか否かの設定をする情報が格納される。ビット１，２は、空きである。ビット３の‘ＥＯＬＫ’は、キャッシュメモリ３２ｂのエントリロックを使用するか否かの設定をする情報が格納される。ビット４〜７は、空きである。
【００４５】
‘ＥＯＬＫ’に‘１’が格納されると、キャッシュ制御回路３２は、キャッシュメモリ３２ｂをエントリロックする。‘ＥＯＬＫ’に‘０’が格納されると、キャッシュ制御回路３２は、キャッシュメモリ３２ｂをエントリロックしない。
【００４６】
‘ＥＮＡＢ’に‘１’が格納されると、キャッシュ制御回路３２は、キャッシュメモリ３２ｂを使用可能状態とする。‘ＥＮＡＢ’に‘０’が格納されると、キャッシュ制御回路３２は、キャッシュメモリ３２ｂを使用不可状態にする。
【００４７】
ここで、メインルーチンは、通常の処理であり、もっとも低い割込みレベルとする。メインルーチンは、キャッシュメモリ３２ｂ及びエントリロックが使用されて、ＣＰＵ３１に実行されるとする。
【００４８】
割込み要因１の割込みレベルは、２番目に低いレベルであるとする。割込み要因１に対応する割込みルーチンは、キャッシュメモリ３２ｂ及びエントリロックが使用されずに、ＣＰＵ３１に実行されるとする。
【００４９】
割込み要因２の割込みレベルは、３番目に低いレベルであるとする。割込み要因２に対応する割込みルーチンは、キャッシュメモリ３２ｂ及びエントリロックが使用されずに、ＣＰＵ３１に実行されるとする。
【００５０】
以下、図２のマイクロコントローラ３の動作について説明する。
ＣＰＵ３１は、通常の処理であるメインルーチンを実行しているとする。
割込み要因１が割込みコントローラ３０に発生すると、割込みコントローラ３０は、割込み要因１に対応する割込みレベルを割込み判定回路３１ｂに送る。
【００５１】
割込み判定回路３１ｂは、割込みコントローラ３０から送られてきた割込みレベルと、割込みレベルレジスタ３１ａに格納されている割込みレベルを比較する。現在ＣＰＵ３１が実行しているメインルーチンの割込みレベルは最も低く、割込み要因１の割込みレベルは、２番目に低い。このため、ＣＰＵ３１は、割込み制御レジスタ群３０ａの割込み要因１に対応するレジスタの内容を、割込みレベルレジスタ３１ａに格納する。このとき、スタックポインタ３１ｃは、格納している内部ＲＡＭ３３のアドレスに‘１’を減算する。そして、ＣＰＵ３１は、割込みレベルレジスタ３１ａの内容を内部ＲＡＭ３３に格納する（スタックする）。
【００５２】
割込み制御レジスタ群３０ａのレジスタの内容が、割込みレベルレジスタ３１ａに格納されると、キャッシュ制御回路３２は、割込みレベルレジスタ３１ａに格納された、キャッシュ使用情報とエントリロック情報をキャッシュ制御レジスタ３２ａに格納する。その後、ＣＰＵ３１は、割込み要因１に対応する割込みルーチンを実行する。
【００５３】
従って、ＣＰＵ３１が割込み要因１に対応する割込みルーチンを実行するときには、この割込みルーチンを実行するときのキャッシュ使用情報、エントリロック情報が、キャッシュ制御レジスタ３２ａに設定されている。キャッシュ制御回路３２は、キャッシュ制御レジスタ３２ａの設定に従って、キャッシュメモリ３２ｂの制御をする。
【００５４】
ＣＰＵ３１は、割込み要因１に対応する割込みルーチンの実行を終了すると、内部ＲＡＭ３３に格納されていた割込みレベルレジスタ３１ａの内容を、割込みレベルレジスタ３１ａに格納する。すなわち、ＣＰＵ３１は、メインルーチンを実行していたときの割込みレベルレジスタ３１ａの内容を、割込みレベルレジスタ３１ａに格納しメインルーチンを実行する。スタックポインタ３１ｃは、格納している内部ＲＡＭ３３のアドレスに‘１’を加算する。
【００５５】
なお、割込み要因１の割込み処理をＣＰＵ３１が実行しているときに、割込み要因２が発生し場合においても、上記で説明したように、スタックポインタ３１ｃで示す内部ＲＡＭ３３のアドレスに割込みレベルレジスタ３１ａの内容が格納され、一時退避される。割込み要因２に対応する割込み処理が終了すると、一時退避されていた割込みレベルレジスタ３１ａの内容が、割込みレベルレジスタ３１ａに格納される。これにより、再び、割込み要因１に対応する割込みルーチンがＣＰＵ３１によって実行される。
【００５６】
次に、各レジスタのレジスタ値の遷移から、マイクロコントローラ３の動作について説明する。
図６は、ＣＰＵ３１が実行している処理ルーチンの遷移状態と各レジスタの遷移状態を示す図である。図に示す割込み制御レジスタ群値３０ａａは、割込み制御レジスタ群３０ａのレジスタ値を示す。割込みレベルレジスタ値３１ａａ，３１ａｃは、ＣＰＵ３１がメインルーチンを実行しているときの割込みレベルレジスタ３１ａの値を示す。割込みレベルレジスタ値３１ａｂは、ＣＰＵ３１が割込みルーチンを実行しているときの割込みレベルレジスタ３１ａの値を示す。キャッシュ制御レジスタ値３２ａａ、３２ａｃは、ＣＰＵ３１がメインルーチンを実行しているときのキャッシュ制御レジスタ３２ａの値を示す。キャッシュ制御レジスタ値３２ａｂは、ＣＰＵ３１が割込みルーチンを実行しているときのキャッシュ制御レジスタ３２ａの値を示す。
【００５７】
ＣＰＵ３１がメインルーチンを実行している場合、割込みレベルレジスタ値３１ａａに示すように、割込みレベルレジスタ３１ａの‘ＩＣＥＮＢ’（ビット７）には、‘０’が格納され、‘ＩＣＥＬＫ’（ビット６）には、‘１’が格納されている。
【００５８】
キャッシュ制御レジスタ３２ａの‘ＥＯＬＫ’（ビット３）には、割込みレベルレジスタ３１ａの‘ＩＣＥＬＫ’（ビット６）の値‘１’が格納される。キャッシュ制御レジスタ３２ａの‘ＥＮＡＢ’（ビット０）には、割込みレベルレジスタ３１ａの‘ＩＣＥＮＢ’（ビット７）の値を反転した‘１’が格納される。すなわち、ＣＰＵ３１は、キャッシュメモリ３２ｂ及びエントリロックを使用してメインルーチンを実行している。
【００５９】
割込み要因１が割込みコントローラ３０に発生すると、割込み判定回路３１ｂによって、割込みレベルレジスタ３１ａの割込みレベルと、割込み制御レジスタ群３０ａの割込み要因１に対応したレジスタ‘ＩＣＲ０１’の割込みレベルとが比較される。
【００６０】
割込みレベルレジスタ３１ａの割込みレベルは、割込みレベルレジスタ値３１ａａに示すように‘１１１１１’である。割込み制御レジスタ群３０ａのレジスタ‘ＩＣＲ０１’の割込みレベルは、割込み制御レジスタ群値３０ａａに示すように、‘１１１１０’である。
【００６１】
レジスタ‘ＩＣＲ０１’の割込みレベルが、割込みレベルレジスタ３１ａの割込みレベルより高いので、ＣＰＵ３１は、割込みレベルレジスタ３１ａの値（割込みレベルレジスタ値３１ａａ）を内部ＲＡＭ３３に格納する。続いて、ＣＰＵ３１は、レジスタ‘ＩＣＲ０１’のレジスタ値を、割込みレベルレジスタ３１ａに格納する。割込みレベルレジスタ３１ａの値は、図６に示す割込みレベルレジスタ値３１ａｂとなる。
【００６２】
キャッシュ制御回路３２は、割込みレベルレジスタ３１ａの‘ＩＣＥＬＫ’（ビット６）の値を、キャッシュ制御レジスタ３２ａの‘ＥＯＬＫ’（ビット３）に格納する。また、キャッシュ制御回路３２は、割込みレベルレジスタ３１ａの‘ＩＣＥＮＢ’（ビット７）の値を反転して、キャッシュ制御レジスタ３２ａの‘ＥＮＡＢ’（ビット０）に格納する。すなわち、キャッシュ制御レジスタ３２ａの値は、図６のキャッシュ制御レジスタ値３２ａｂのようになる。
【００６３】
従って、割込みルーチンは、キャッシュメモリ３２ｂ、エントリロックを使用せずに実行される。
割込みルーチンの処理が終了すると、ＣＰＵ３１は、内部ＲＡＭ３３に格納した割込みレベルレジスタ値３１ａａを割込みレベルレジスタ３１ａに格納する。すなわち、割込みレベルレジスタ３１ａの値は、割込みレベルレジスタ値３１ａｃとなる。
【００６４】
キャッシュ制御回路３２は、割込みレベルレジスタ３１ａの‘ＩＣＥＬＫ’（ビット６）の値を、キャッシュ制御レジスタ３２ａの‘ＥＯＬＫ’（ビット３）に格納する。また、キャッシュ制御回路３２は、割込みレベルレジスタ３１ａの‘ＩＣＥＮＢ’（ビット７）の値を反転して、キャッシュ制御レジスタ３２ａの‘ＥＮＡＢ’（ビット０）に格納する。すなわち、キャッシュ制御レジスタ３２ａの値は、図６のキャッシュ制御レジスタ値３２ａｃのようになる。
【００６５】
従って、メインルーチンは、再び、キャッシュメモリ３２ｂ、エントリロックを使用して実行される。このように各レジスタのレジスタ値が遷移して、メインルーチン、割込みルーチンが実行される。
【００６６】
次に、キャッシュ制御回路３２のキャッシュ制御レジスタ３２ａの書き換えにおける動作について説明する。
図７は、キャッシュ制御回路のキャッシュ制御レジスタの書き換えにおける動作を示すフローチャートである。
【００６７】
［Ｓ１０］キャッシュ制御回路３２は、ＣＰＵ３１からキャッシュ制御レジスタ３２ａの書き換え要求があるか否かを確認する。キャッシュ制御回路３２は、キャッシュ制御レジスタ３２ａの書き換え要求があればステップＳ１１に進む。要求がなければ、キャッシュ制御回路３２は待機する。
【００６８】
［Ｓ１１］キャッシュ制御回路３２は、キャッシュメモリ３２ｂがデータの入出力を行っているか否かを確認する。キャッシュ制御回路３２は、キャッシュメモリ３２ｂが、データの入出力を行っていれば待機し、行っていなければステップＳ１２へ進む。
【００６９】
［Ｓ１２］キャッシュ制御回路３２は、割込み要因によるキャッシュ制御レジスタ３２ａの書き換え要求であるか、ＣＰＵ３１が実行している処理ルーチンのプログラムに記述されている書き換え要求であるかの確認をする。キャッシュ制御回路３２は、プログラムに記述された書き換え要求であればステップＳ１３へ、割込み要因による書き換え要求であればステップＳ１４へ進む。
【００７０】
［Ｓ１３］キャッシュ制御回路３２は、ＣＰＵ３１とキャッシュメモリ３２ｂが接続されたデータバスからの書き換え値を、キャッシュ制御レジスタ３２ａに格納する。
【００７１】
［Ｓ１４］キャッシュ制御回路３２は、割込みレベルレジスタ３１ａの値をキャッシュ制御レジスタ３２ａに格納する。
このように、キャッシュ制御レジスタ３２ａのレジスタ値の格納は、上記で説明した方法とともに、ＣＰＵ３１に特定のプログラム命令を実行させて行うようにしてもよい。
【００７２】
次に、キャッシュ制御回路３２のキャッシュメモリ３２ｂにおける動作制御について説明する。
図８は、キャッシュ制御回路のキャッシュメモリにおける動作制御を示すフローチャートである。
【００７３】
［Ｓ２０］キャッシュ制御回路３２は、キャッシュ制御レジスタ３２ａの‘ＥＮＡＢ’の値を読み込む。‘ＥＮＡＢ’の値が‘１’であれば、キャッシュ制御回路３２は、キャッシュメモリ３２ｂを使用可能状態にし、ステップＳ２１へ進む。‘ＥＮＡＢ’の値が‘０’であれば、キャッシュ制御回路３２は、キャッシュメモリ３２ｂを使用不可状態にし、キャッシュ制御回路２０は、待機する。
【００７４】
［Ｓ２１］キャッシュ制御回路３２は、ＣＰＵ３１が実行する命令データ（メインルーチン、割込みルーチンの全部、または、一部）を要求しているか否かを確認する。キャッシュ制御回路３２は、ＣＰＵ３１がキャッシュメモリ３２ｂに命令データを要求していると、ステップＳ２２に進む。要求していなければ待機する。
【００７５】
［Ｓ２２］キャッシュ制御回路３２は、命令データをキャッシュする。キャッシュヒットすれば、ステップＳ２３へ進む。キャッシュミスすれば、ステップＳ２４へ進む。
【００７６】
［Ｓ２３］キャッシュ制御回路３２は、キャッシュヒット処理を行う。すなわち、キャッシュ制御回路３２は、ＣＰＵ３１がキャッシュメモリ３２ｂの命令データを実行できるようにする。
【００７７】
［Ｓ２４］キャッシュ制御回路３２は、キャッシュ制御レジスタ３２ａの‘ＥＯＬＫ’の値を読み込む。‘ＥＯＬＫ’の値が‘１’であれば、キャッシュ制御回路３２は、エントリロックを行うためステップＳ２５へ進む。‘ＥＯＬＫ’の値が‘０’であれば、キャッシュ制御回路３２は、ステップＳ２６へ進む。
【００７８】
［Ｓ２５］キャッシュ制御回路３２は、エントリロックを行う。キャッシュメモリ３２ｂに空き領域が存在する場合、その空き領域にＣＰＵ３１がＲＯＭ４にアクセスした新たな命令データを格納する。すでに、データが格納されている領域には、新たな命令データを格納しない。
【００７９】
［Ｓ２６］キャッシュ制御回路３２は、キャッシュミス処理を行う。キャッシュ制御回路３２は、ＣＰＵ３１がＲＯＭ４にアクセスした新たな命令データをキャッシュメモリ３２ｂに格納する。
【００８０】
このように、実行する処理ルーチンが切替えられると、次に実行される処理ルーチンのキャッシュ使用情報、エントリロック情報が、キャッシュ制御回路３２によって、キャッシュ制御レジスタ３２ａに格納される。すなわち、処理ルーチンのプログラムにキャッシュ使用情報を示す命令を記述する必要がなく、キャッシュメモリ３２ｂに、不要なプログラム命令が格納されることがない。よって、実行されるべき処理がキャッシュメモリ３２ｂに格納され、キャッシュメモリを効率よく使用でき、処理の高速化を図ることができる。
【００８１】
また、実行している処理ルーチンが途中で切替えられても、割込みレベルレジスタ３１ａの情報は、スタックポインタ３１ｃ、内部ＲＡＭ３３によって一時退避される。新たな処理ルーチンの実行が終了したとき、一時退避した情報は、再び、スタックポインタ３１ｃ、内部ＲＡＭ３３によって割込みレベルレジスタ３１ａに格納される。従って、プログラム作成時における処理ルーチンのプログラムの記述において、次に実行される処理ルーチンのキャッシュ使用情報を気にすることなく記述でき、キャッシュメモリの使用管理が容易となる。
【００８２】
次に、本発明の第２の実施の形態について説明する。
図９は、本発明の第２の実施の形態に係るマイクロコントローラの構成図である。
【００８３】
この図において、マイクロコントローラ５は、割込みコントローラ５０、ＣＰＵ５１、クロック制御回路５２、内部ＲＡＭ５３から構成され、そのマイクロコントローラ５には、ＲＯＭ６が接続されている。また、割込みコントローラ５０は、割込み制御レジスタ群５０ａを有している。ＣＰＵ５１は、割込みレベルレジスタ５１ａ、割込み判定回路５１ｂ、スタックポインタ５１ｃを有している。クロック制御回路５２は、クロック制御レジスタ５２ａ、同期回路５２ｂ、セレクタ５２ｃを有している。
【００８４】
割込みコントローラ５０の割込み制御レジスタ群５０ａは、割り込み要因１，２，・・・に対応する割込みルーチンの、割込みレベル、クロック使用情報、を格納する。クロック使用情報とは、割込みルーチンを高速クロックで実行するか、低速クロックで実行するかという情報である。
【００８５】
割込みコントローラ５０は、割込み判定回路５１ｂと接続され、割込み要因１，２，・・・を受け付けると、受け付けた割込み要因の割込みレベルをＣＰＵ５１の割込み判定回路５１ｂに送る。
【００８６】
ＣＰＵ５１は、ＲＯＭ６に格納された割込みルーチン及びメインルーチンを実行する。ＣＰＵ５１の割込みレベルレジスタ５１ａは、ＣＰＵ５１が実行する割込みルーチン、メインルーチンの割込みレベル、クロック使用情報を格納する。
【００８７】
ＣＰＵ５１の割込み判定回路５１ｂは、割込みコントローラ５０から送られてくる割込み要因に対応する割込みレベルと、割込みレベルレジスタ５１ａに格納されている割込みレベルを比較する。割込み判定回路５１ｂは、割込みコントローラ５０から送られてきた割込みレベルが割込みレベルレジスタ５１ａに格納されている割込みレベルより高いと、割込み要因を受け付ける。ＣＰＵ５１は、受け付けた割込みの要因の、割込みレベル、クロック使用情報を割込み制御レジスタ群５０ａから割込みレベルレジスタ５１ａに格納する。
【００８８】
スタックポインタ５１ｃ、内部ＲＡＭ５３の動作は、第１の実施の形態で説明したスタックポインタ３１ｃ、内部ＲＡＭ３３と同様であるため、説明を省略する。
【００８９】
クロック制御回路５２のクロック制御レジスタ５２ａは、割込みレベルレジスタ５１ａと接続され、クロック使用情報を格納する。
同期回路５２ｂは、高速クロックと低速クロックに同期したクロックを出力する。例えば、高速クロックと低速クロックの立ち上がり、又は立下りに同期して、クロックを出力する。
【００９０】
セレクタ５２ｃは、クロック制御レジスタ５２ａのクロック制御情報に従って、高速クロック又は低速クロックを出力する。
ここで、通常の処理であるメインルーチンは、もっとも低い割込みレベルとする。メインルーチンは、低速クロックで実行されるとする。
【００９１】
割込み要因１の割込みレベルは、２番目に低いレベルであるとする。割込み要因１を処理するための割込みルーチンは、高速クロックで実行されるとする。
割込み要因２の割込みレベルは、３番目に低いレベルであるとする。割込み要因２を処理するための割込みルーチンは、高速クロックで実行されるとする。
【００９２】
以下、図９のマイクロコントローラ５の動作について説明する。
ＣＰＵ５１は、通常の処理であるメインルーチンを実行しているとする。割込み要因１が割込みコントローラ５０に発生すると、割込みコントローラ５０は、割込み要因１に対応する割込みレベルを割込み判定回路５１ｂに送る。
【００９３】
割込み判定回路５１ｂは、割込みコントローラ５０から送られてきた割込みレベルと、割込みレベルレジスタ５１ａに格納されている割込みレベルを比較する。現在実行しているメインルーチンの割込みレベルは最も低く、割込み要因１の割込みレベルは、２番目に低い。従って、ＣＰＵ５１は、割込み制御レジスタ群５０ａの割込み要因１に対応するレジスタの内容を、割込みレベルレジスタ５１ａに格納する。このとき、スタックポインタ５１ｃは、格納している内部ＲＡＭ５３のアドレスに‘１’を減算する。そして、ＣＰＵ５１は、割込みレベルレジスタ５１ａの内容を内部ＲＡＭ５３に格納する（スタックする）。
【００９４】
ＣＰＵ５１によって、割込み制御レジスタ群５０ａの割込み要因１に対応するレジスタの内容が、割込みレベルレジスタ５１ａに格納されると、クロック制御回路５２は、割込みレベルレジスタ５１ａに格納されたクロック使用情報を、同期回路５２ｂから出力される同期クロックに同期してクロック制御レジスタ５２ａに格納する。
【００９５】
図１０は、低速クロック、高速クロックの切替えを説明するためのタイミングチャートである。図１０に示すように、高速クロックと低速クロックがともに立ち下がり状態のとき、同期クロックが出力される。同期クロックが立ち下がったとき、クロック使用情報がクロック制御レジスタ５２ａに格納される。すなわち、ＣＰＵ５１がメインルーチンから割込みルーチンへ実行を切替えたとき、割込みレベルレジスタ５１ａに格納されているクロック使用情報は、クロック制御レジスタ５２ａに送られるが、同期クロックの立下りまで格納されない。
【００９６】
クロック制御レジスタ５２ａに格納されたクロック使用情報は、セレクタ５２ｃに送られる。図１０の例では、セレクタ５２ｃは、クロック使用情報に従って、高速クロックを出力する。なお、クロック使用情報がセレクタに入力されるとき、同期クロックの立下りから遅れているが（矢印Ｃ）、これは、回路による遅延である。
【００９７】
図１１は、同期制御をしない場合の低速クロック、高速クロックの切替えを説明するためのタイミングチャートである。同期制御しない場合、図１１に示すように、ＣＰＵ５１がメインルーチンから割込みルーチンへ実行を切替えたとき、クロック制御レジスタ５２ａに格納されたクロック使用情報は、直ちにセレクタ５２ｃに入力される。このため、セレクタ５２ｃから出力されるクロック出力は、図１１に示すように乱れた波形となる。なお、クロック使用情報がセレクタ５２ｃに入力されるとき、ＣＰＵ５１がメインルーチンから割込みルーチンへ実行を切替えたときから遅れているが（矢印Ｄ）、これは、回路による遅延である。
【００９８】
このように、高速クロックと低速クロックに同期して、高速クロック、低速クロックを切替えることによって、クロックの切替え時に、波形が乱れることがない。
【００９９】
ＣＰＵ５１は、割込み要因１に対応する割込みルーチンの実行を終了すると、内部ＲＡＭ５３に格納されていた割込みレベルレジスタ５１ａの内容を、割込みレベルレジスタ５１ａに格納する。すなわち、ＣＰＵ５１は、メインルーチンを実行していたときの割込みレベルレジスタ５１ａの内容を、割込みレベルレジスタ５１ａに格納しメインルーチンを実行する。スタックポインタ５１ｃは、格納している内部ＲＡＭ５３のアドレスに‘１’を加算する。
【０１００】
なお、割込み要因１に対応する割込み処理をＣＰＵ５１が実行しているときに、割込み要因２が発生し場合においても、上記で説明したように、スタックポインタ５１ｃで示す内部ＲＡＭ５３のアドレスに割込みレベルレジスタ５１ａの内容が格納され、一時退避される。割込み要因２に対応する割込み処理が終了すると、一時退避されていた割込みレベルレジスタ５１ａの内容が、割込みレベルレジスタ５１ａに格納される。これにより、再び、割込み要因１に対応する割込みルーチンがＣＰＵ５１によって実行される。
【０１０１】
このように、実行する処理ルーチンが切替えられると、次に実行される処理ルーチンのクロック使用情報が、クロック制御回路５２によって、クロック制御レジスタ５２ａに格納される。従って、処理ルーチンのプログラムにクロック使用情報を示す命令を記述する必要がなく、容易にクロックを切替えることができ、処理の実行の高速化を図ることができる。
【０１０２】
また、実行している処理ルーチンが途中で切替えられても、割込みレベルレジスタ５１ａの情報は、スタックポインタ５１ｃ、内部ＲＡＭ５３によって一時退避される。新たな処理ルーチンの実行が終了したとき、一時退避した情報は、再び、スタックポインタ５１ｃ、内部ＲＡＭ５３によって割込みレベルレジスタ５１ａに格納される。従って、実行する処理ルーチンのプログラムの記述において、次に実行される処理ルーチンのクロック使用情報を気にすることなく記述でき、クロックの切替え管理が容易となる。
【０１０３】
なお、一般のマイクロコントローラは、処理状態を設定、又は調べるためのプログラムステータスレジスタを搭載し、割込み処理時に、このプログラムステータスレジスタの内容をスタックする。そこで、プログラムステータスレジスタの空き領域の一部を割込みレベルレジスタとして使用する。図１２は、プログラムステータスレジスタの一例を示す図である。図に示すプログラムステータスレジスタ３１ｃは３２ビットのレジスタである。図１２の例では、プログラムステータスレジスタ３１ｃのビット１６から２３ビットを割込みレベルレジスタ３１ｄとして使用している。これにより、スタックへの退避、復帰に関しては、従来の回路のままで実現することができる。なお、プログラムステータスレジスタ３１ｃは、３２ビットのレジスタで、内部ＲＡＭ３３は、８ビットのデータサイズであるので、スタックの退避、復帰における内部ＲＡＭ３３のアドレスの減算値、加算値は‘４’となる。
【０１０４】
（付記１）  キャッシュメモリを有するマイクロコンピュータにおいて、
第１のレジスタを内蔵し、実行する処理を切替える毎に、次に実行する処理におけるキャッシュメモリの使用規則を示すキャッシュ使用情報を、前記第１のレジスタに格納する処理切替え制御回路と、
第２のレジスタを内蔵し、前記第１のレジスタに前記キャッシュ使用情報が格納されると前記キャッシュ使用情報を前記第２のレジスタに格納し、当該第２のレジスタに格納された前記キャッシュ使用情報で示された使用規則に従って、データの前記キャッシュメモリへの入出力を行うキャッシュ制御回路と、
を有することを特徴とするマイクロコンピュータ。
【０１０５】
（付記２）  前記処理切替え制御回路が実行する処理毎の前記キャッシュ使用情報を格納するキャッシュ使用情報格納レジスタを有し、
前記処理切替え制御回路は、次に実行する処理のキャッシュ使用情報を前記キャッシュ使用情報格納レジスタから取得して前記第１のレジスタに格納することを特徴とする付記１記載のマイクロコンピュータ。
【０１０６】
（付記３）  前記キャッシュ使用情報は、前記キャッシュメモリを使用して処理を実行するか否かの情報であることを特徴とする付記１記載のマイクロコンピュータ。
【０１０７】
（付記４）  前記キャッシュ使用情報は、前記処理切替え制御回路が前記キャッシュメモリを使用して処理を実行している場合で、前記キャッシュメモリに新たなデータを格納可能とするか否かのエントリロック情報であることを特徴とする付記１記載のマイクロコンピュータ。
【０１０８】
（付記５）  前記処理切替え制御回路は、現在実行している処理の処理されるべき順序を示す優先度と、次に実行する処理の優先度とを比較し、次に実行する処理の優先度が高い場合に、前記キャッシュ使用情報を前記第１のレジスタに格納することを特徴とする付記１記載のマイクロコンピュータ。
【０１０９】
（付記６）  前記処理切替え制御回路が実行する処理を切替える毎に、前記第１のレジスタの値が入出力されるメモリと、
前記メモリの前記値が入出力されるアドレスを格納し、前記値の出入が行われたとき前記アドレスを増減するスタックポインタと、
を有することを特徴とする付記１記載のマイクロコンピュータ。
【０１１０】
（付記７）  前記第１のレジスタはプログラムステータスレジスタの一部であることを特徴とする付記１記載のマイクロコンピュータ。
（付記８）  キャッシュメモリを有するマイクロコンピュータのキャッシュメモリ制御方法において、
実行する処理を切替える毎に、次に実行する処理におけるキャッシュメモリの使用規則を示すキャッシュ使用情報を第１のレジスタに格納し、
前記第１のレジスタに前記キャッシュ使用情報が格納されると前記キャッシュ使用情報を第２のレジスタに格納し、
当該第２のレジスタに格納された前記キャッシュ使用情報で示された使用規則に従って、データの前記キャッシュメモリへの入出力を行う、
ことを特徴とするキャッシュメモリ制御方法。
【０１１１】
（付記９）  クロックに同期して処理を実行するマイクロコンピュータにおいて、
第１のレジスタを内蔵し、実行する処理を切替える毎に、次に実行する処理に使用されるクロックを示すクロック使用情報を、前記第１のレジスタに格納する処理切替え制御回路と、
第２のレジスタを内蔵し、前記第１のレジスタに前記クロック使用情報が格納されると前記クロック使用情報を前記第２のレジスタに格納し、複数のクロックから当該第２のレジスタに格納された前記クロック使用情報に従って、クロックを選択出力するクロック制御回路と、
を有することを特徴とするマイクロコンピュータ。
【０１１２】
（付記１０）  前記クロック制御回路は、前記第２のレジスタに前記クロック使用情報が格納された後、前記複数のクロックの全てが同期したとき、前記クロックを選択出力することを特徴とする付記８記載のマイクロコンピュータ。
【０１１３】
（付記１１）  クロックに同期して処理を実行するマイクロコンピュータのクロック制御方法において、
実行する処理を切替える毎に、次に実行する処理に使用されるクロックを示すクロック使用情報を第１のレジスタに格納し、
前記第１のレジスタに前記クロック使用情報が格納されると前記クロック使用情報を第２のレジスタに格納し、
複数のクロックを出力するクロック出力回路から当該第２のレジスタに格納された前記クロック使用情報に従ったクロックを出力する、
ことを特徴とするクロック制御方法。
【０１１４】
【発明の効果】
以上説明したように本発明の第１の形態では、処理切替え制御回路は、実行する処理を切替える毎に、次に実行するキャッシュ使用情報を、内蔵する第１のレジスタに格納する。キャッシュ制御回路は、第１のレジスタにキャッシュ使用情報が格納されると、そのキャッシュ使用情報を内蔵する第２のレジスタに格納し、格納したキャッシュ使用情報に従って、データのキャッシュメモリへの入出力を行う。これにより、キャッシュメモリの使用効率が上がり、実行する処理の高速化を図ることができる。
【０１１５】
また、本発明の第２の形態では、処理切替え制御回路は、実行する処理を切替える毎に、次に実行するクロック使用情報を、内蔵する第１のレジスタに格納する。クロック制御回路は、第１のレジスタにクロック使用情報が格納されると、そのクロック使用情報を内蔵する第２のレジスタに格納し、複数のクロックから格納したクロック使用情報に従って、クロックを選択出力する。これにより、クロックの変更が簡易化され、実行する処理の高速化を図ることができる。
【図面の簡単な説明】
【図１】本発明の原理を説明する原理図である。
【図２】本発明の第１の実施の形態に係るマイクロコントローラの構成図である。
【図３】割込み制御レジスタ群の構成図の一例である。
【図４】割込みレベルレジスタの構成図の一例である。
【図５】キャッシュ制御レジスタの構成図の一例である。
【図６】ＣＰＵ３１が実行している処理ルーチンの遷移状態と各レジスタの遷移状態を示す図である。
【図７】キャッシュ制御回路のキャッシュ制御レジスタの書き換えにおける動作を示すフローチャートである。
【図８】キャッシュ制御回路のキャッシュメモリにおける動作制御を示すフローチャートである。
【図９】本発明の第２の実施の形態に係るマイクロコントローラの構成図である。
【図１０】低速クロック、高速クロックの切替えを説明するためのタイミングチャートである。
【図１１】同期制御をしない場合の低速クロック、高速クロックの切替えを説明するためのタイミングチャートである。
【図１２】プログラムステータスレジスタの一例を示す図である。
【図１３】従来のマイクロコントローラの内部構成を示すブロック図である。
【図１４】従来のマイクロコントローラのＣＰＵの処理遷移図である。
【符号の説明】
１  マイクロコンピュータ
２，４，６  ＲＯＭ
３，５  マイクロコントローラ
１０  処理切替え制御回路
１０ａ  第１のレジスタ
１１  キャッシュ制御回路
１１ａ  第２のレジスタ
１１ｂ，３２ｂ  キャッシュメモリ
１２  レジスタ群
３０，５０  割込みコントローラ
３０ａ，５０ａ  割込み制御レジスタ群
３１，５１  ＣＰＵ
３１ａ，５１ａ  割込みレベルレジスタ
３１ｂ，５１ｂ  割込み判定回路
３１ｃ，５１ｃ  スタックポインタ
３２  キャッシュ制御回路
３２ａ  キャッシュ制御レジスタ
３３，５３  内部ＲＡＭ
５２  クロック制御回路
５２ａ  クロック制御レジスタ
５２ｂ  同期回路
５２ｃ  セレクタ
【図１】
0004056768.tif 000002
【図２】
0004056768.tif 000003
【図３】
0004056768.tif 000004
【図４】
0004056768.tif 000005
【図５】
0004056768.tif 000006
【図６】
0004056768.tif 000007
【図７】
0004056768.tif 000008
【図８】
0004056768.tif 000009
【図９】
0004056768.tif 000010
【図１０】
0004056768.tif 000011
【図１１】
0004056768.tif 000012
【図１２】
0004056768.tif 000013
【図１３】
0004056768.tif 000014
【図１４】
0004056768.tif 000015