(57)【特許請求の範囲】
【請求項１】
所与の回路に対して供給されるクロック信号を制御するクロック制御装置であって、
前記所与の回路がアクセスするアドレスを受け付ける手段と、
前記アドレスによって特定されるアドレス領域ごとに、前記所与の回路がアクセスする際のストール期間に応じたウェイト数を記憶する手段と、
前記アドレスに対応して前記ウェイト数を記憶する手段に記憶されたウェイト数に対応したクロック数分だけ前記クロック信号の供給を停止するクロック供給停止信号を前記所与の回路に対して出力する手段と、
を含むことを特徴とするクロック制御装置。
【請求項２】
キャッシュ装置とこれにアクセスする所与の回路とに対して供給されるクロック信号を制御するクロック制御装置であって、
前記所与の回路がアクセスするアドレスと、前記アドレスに基づいて判定されたキャッシュミス信号とを受け付ける手段と、
前記アドレスによって特定されるアドレス領域ごとに、前記所与の回路がアクセスする際のストール期間に応じたウェイト数を記憶する手段と、
前記キャッシュミス信号を受け付けたとき、前記アドレスに対応して前記ウェイト数を記憶する手段に記憶されたウェイト数に対応したクロック数分だけ少なくとも前記所与の回路及び前記キャッシュ装置の一方に供給される前記クロック信号を停止するクロック供給停止信号を出力する手段と、
を含むことを特徴とするクロック制御装置。
【請求項３】
請求項２において、
前記ウェイト数を記憶する手段は、前記アドレス領域ごとに、キャッシュミス時にメモリにアクセスするためのウェイト数と、キャッシュヒット時にキャッシュ装置にアクセスするためのウェイト数とを記憶し、
前記キャッシュミス信号を受け付けたとき、前記キャッシュ装置にアクセスするために前記アドレスに対応して記憶されたウェイト数に応じたクロック数分だけ前記クロック信号の供給を停止するクロック供給停止信号を出力し、
前記キャッシュミス信号を受け付けたとき、前記メモリにアクセスするために前記アドレスに対応して記憶されたウェイト数に応じたクロック数分だけ前記クロック信号の供給を停止するクロック供給停止信号を出力することを特徴とするクロック制御装置。
【請求項４】
請求項３において、
前記記憶されるウェイト数を可変とするウェイト数可変手段を含むことを特徴とするクロック制御装置。
【請求項５】
請求項１乃至４のいずれかに記載のクロック制御装置を含むことを特徴とする半導体集積回路装置。
【請求項６】
請求項１乃至４のいずれかに記載のクロック制御装置と、前記所与の回路と、ＣＰＵと、前記所与の回路又は前記ＣＰＵによってアクセスされる前記キャッシュ装置とを少なくとも含むことを特徴とするマイクロコンピュータ。
【請求項７】
請求項１乃至４のいずれかに記載のクロック制御装置と、前記所与の回路としてのＣＰＵと、前記ＣＰＵによってアクセスされる前記キャッシュ装置とを少なくとも含むことを特徴とするマイクロコンピュータ。
【請求項８】
請求項６において、
前記所与の回路は前記アドレスを生成するＤＭＡであることを特徴とするマイクロコンピュータ。
【請求項９】
請求項６乃至８のいずれかにおいて、
所与の周辺回路ごとに前記ウェイト数を記憶する手段を有し、前記周辺回路に対して前記記憶されたウェイト数に応じたクロック数分だけ各周辺回路に供給されるクロック信号の供給を停止するクロック供給停止信号を出力することを特徴とするマイクロコンピュータ。
【請求項１０】
請求項６乃至９のいずれかに記載のマイクロコンピュータと、
前記マイクロコンピュータの処理対象となるデータの入力手段と、
前記マイクロコンピュータにより処理されたデータを出力するための出力手段と、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、クロック制御装置、クロック制御装置を含む半導体集積回路装置、マイクロコンピュータ及び電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
従来より、例えばＰＤＡや移動体通信端末といった電子機器（特に、携帯型の電子機器）を制御するマイクロコンピュータは、回路技術やプロセス技術のみならず、アーキテクチャの改良や集積化技術により、高速化及び低消費電力化が図られる。
【０００３】
このようなマイクロコンピュータは、用途に適した性能及びコードサイズを実現するＣＰＵコアと、必要な機能があらかじめマクロ化された周辺回路（直接メモリアクセス回路（ＤＭＡ）やメモリ制御回路などのマクロ化ブロック）とにより集積化されることが多い。従って、これまでの多くのマイクロコンピュータは、開発工数を短縮し、設計品質を維持できる反面、ＣＰＵコアやマクロ化ブロックをブロックボックスとせざるを得なかった。このため、マイクロコンピュータの各種性能を改良する場合、これらコア及びマクロ化ブロックの内部を変更することは困難であった。
【０００４】
特に、集積化されたマイクロコンピュータの消費電力について改良を行う場合、ＣＰＵコアやマクロ化ブロックのアーキテクチャや回路構成に関わることが多いため、ＣＰＵコアやマクロ化ブロック以外の部分で低消費電力化を図る必要があった。
【０００５】
例えば、マイクロコンピュータ内で、動的或いは静的に各部に供給されるクロック信号を停止させることによって、最も簡素かつ効率的に低消費電力化を図ることが行われる。
【０００６】
又は、例えば外部からの信号により所与のユニットに供給されるクロック信号を停止させたり、ＣＰＵコアで実行されたＨＡＬＴ命令により一時的にＣＰＵの動作を中止させたときに動作不要なキャッシュ装置に供給されるクロック信号を停止させたりすることが行われていた。
【０００７】
ところで、多くのマイクロコンピュータでは、ＣＰＵコア以外に、（キャッシュメモリとキャッシュ制御装置からなる）キャッシュ装置や、メモリ制御回路が集積化される。
【０００８】
キャッシュ装置は、ＣＰＵコアが局所的、局時的にアクセスするデータを一時的にバッファリングすることで、外部に接続されるメモリ回路のアクセス時間を省略して高速化を図る。
【０００９】
メモリ制御回路は、直結されるメモリ装置（ＲＯＭ、ＳＲＡＭ、ＤＲＡＭなど）に応じて、アドレスデコードや、ＤＲＡＭのＲＡＳ／ＣＡＳ制御やリフレッシュ制御といった複雑なメモリ制御を行うメモリ・インタフェース機能を有する。さらにメモリ制御回路は、プログラマブル・ウェイト・コントローラ（或いは、ウェイト制御装置）を備え、アドレス領域に応じてメモリ装置に対して行うデータアクセスに必要なバスサイクルのウェイト制御を行う。こうすることで、マイクロコンピュータはアクセス対象のデータを格納する汎用的なメモリ装置を直結することができ、部品点数の小型化を図り、結果的に低コスト化を図ることができる。
【００１０】
このようなマイクロコンピュータに組み込まれたキャッシュ装置において、キャッシュミスが発生したとき、該当するアドレスに対応するデータを格納するメモリ装置に対して、メモリ制御回路によって発行された外部バスサイクルによりデータが取得される。
【００１１】
しかしながら、この間、ＣＰＵコアはストール状態となるにも関わらず、外部バスサイクルによりデータが取得され次第動作を再開する必要があるため、ＣＰＵコアに供給されるクロック信号は停止されることはなかった。従って、ＣＰＵコアがストール状態であっても無駄な電力が消費されていた。
【００１２】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、性能低下を招くことなく、データアクセス時に発生するストール状態にある各部に供給されるクロック信号の供給を停止して、効果的かつ簡素に低消費電力化を図るクロック制御装置、クロック制御装置を含む半導体集積回路装置、マイクロコンピュータ及び電子機器を提供することにある。
【００１３】
【課題を解決するための手段】
上記課題を解決するために、本発明は、所与の回路に対して供給されるクロック信号を制御するクロック制御装置であって、前記所与の回路がアクセスするアドレスを受け付ける手段と、前記アドレスによって特定されるアドレス領域に応じたクロック数分だけ前記クロック信号の供給を停止するクロック供給停止信号を前記所与の回路に対して出力する手段とを含むことを特徴とする。
【００１４】
本発明によれば、クロック制御装置において、所与の回路に対するクロック信号を停止するクロック供給停止信号を、所与の回路がアクセスするアドレスによって特定されるアドレス領域に応じたクロック数分だけ停止させるように生成するようにした。これにより、アドレス領域によってアクセス時間が異なるデータアクセスによりストール状態が発生した場合であっても、所与のクロック数分だけクロック供給を停止させることができるので、従来のようにデータ処理能力を低下させることなく、効果的かつ簡素に低消費電力化を図ることができる。
【００１５】
また本発明は、キャッシュ装置とこれにアクセスする所与の回路とに対して供給されるクロック信号を制御するクロック制御装置であって、前記所与の回路がアクセスするアドレスと、前記アドレスに基づいて判定されたキャッシュミス信号とを受け付ける手段と、前記キャッシュミス信号を受け付けたとき前記アドレスによって特定されるアドレス領域に応じたクロック数分だけ少なくとも前記所与の回路及び前記キャッシュ装置の一方に供給される前記クロック信号を停止するクロック供給停止信号を出力する手段とを含むことを特徴とする。
【００１６】
本発明によれば、キャッシュ装置に対するデータアクセスによりキャッシュミスが発生したときに、クロック制御装置において、所与の回路に対するクロック信号を停止するクロック供給停止信号を、所与の回路がアクセスするアドレスによって特定されるアドレス領域に応じたクロック数分だけ、上述した所与の回路又はキャッシュ装置のいずれか一方を停止させるように生成するようにした。これにより、キャッシュミスが発生したときのストール状態であっても、いつデータが返ってくるか不明のためクロック供給を停止することができなかったが、所与のクロック数分だけクロック供給を停止させることができるので、従来のようにデータ処理能力を低下させることなく、ストール状態において効果的かつ簡素に低消費電力化を図ることができる。
【００１７】
また本発明に係るクロック制御装置は、アドレス領域に対応して所与のウェイト数を記憶する手段を含み、前記アドレスによって特定されるアドレス領域に対応して記憶されたウェイト数に応じたクロック数分だけ前記クロック信号の供給を停止するクロック供給停止信号を出力することを特徴とする。
【００１８】
このようにすることで、クロック供給を停止させるクロック数の制御を精度よく行うことができるので、より効果的な低消費電力化と、低コスト化を実現することができる。
【００１９】
また本発明は、アクセスされるアドレス領域に対応してメモリ装置に格納されるデータをアクセスするためのウェイト数を記憶するウェイト制御装置を含み、キャッシュ装置とこれにアクセスする所与の回路とに対して供給されるクロック信号を制御するクロック制御装置であって、前記所与の回路がアクセスするアドレスと、前記アドレスに基づいて判定されたキャッシュミス信号とを受け付ける手段と、前記キャッシュミス信号を受け付けたとき前記アドレスによって特定されるアドレス領域に対応したウェイト数に基づいて前記アドレスに対応するデータを格納するメモリ装置に対してアクセスすると共に、前記アドレス領域に対応して記憶されたウェイト数に応じたクロック数分だけ少なくとも前記所与の回路及び前記キャッシュ装置の一方に供給される前記クロック信号を停止するクロック供給停止信号を出力する手段とを含むことを特徴とする。
【００２０】
本発明によれば、データアクセスの際に多く用いられるウェイト制御装置で設定されるウェイト数から、キャッシュミスが発生したときに停止させるべきクロック数を決めるようにしたので、従来に比べても、ほとんど付加回路を設けることなく、有効な低消費電力化を図ることができる。
【００２１】
また本発明に係るクロック制御装置は、前記記憶されるウェイト数を可変とするウェイト数可変手段を含むことを特徴とする。このようにすることで、ＯＳといったソフトウェア制御によってデータアクセスに伴うアクセス時間が変化する場合であっても、簡素な構成で、精度良く消費電力制御を行うことができる。
【００２２】
また本発明に係る半導体集積回路装置は、上記いずれかに記載のクロック制御装置を含むことを特徴とする。
【００２３】
また本発明に係るマイクロコンピュータは、上記いずれかに記載のクロック制御装置と、前記所与の回路と、ＣＰＵと、前記所与の回路又は前記ＣＰＵによってアクセスされる前記キャッシュ装置とを少なくとも含むことを特徴とする。
【００２４】
また本発明に係るマイクロコンピュータは、上記いずれかに記載のクロック制御装置と、前記所与の回路としてのＣＰＵと、前記ＣＰＵによってアクセスされる前記キャッシュ装置とを少なくとも含むことを特徴とする。
【００２５】
また本発明に係るマイクロコンピュータは、前記所与の回路は前記アドレスを生成するＤＭＡであることを特徴とする。
【００２６】
ここで、所与の回路として、アドレスデータを出力してデータアクセスを行い、その際にアクセス時間を要することでストール状態になる可能性があるＣＰＵ、或いはその期間にデータアクセスできないＤＭＡといったバスマスタを考えるようにした。これにより、データアクセス時に発生するストール状態における効果的かつ簡素な方法で低消費電力化を図るマイクロコンピュータを安価に提供することができる。
【００２７】
また本発明に係るマイクロコンピュータは、所与の周辺回路ごとに前記ウェイト数を記憶する手段を有し、前記周辺回路に対して前記記憶されたウェイト数に応じたクロック数分だけ各周辺回路に供給されるクロック信号の供給を停止するクロック供給停止信号を出力することを特徴とする。
【００２８】
このようにマイクロコンピュータを構成する周辺回路ごとに停止させるべきクロック数を設定するようにしたので、マイクロコンピュータを構成する各部の動作タイミングによって決まる最適な消費電力制御が、非常に簡素な構成で実現することができる。
【００２９】
また本発明に係る電子機器は、上記いずれかに記載のマイクロコンピュータと、前記マイクロコンピュータの処理対象となるデータの入力手段と、前記マイクロコンピュータにより処理されたデータを出力するための出力手段とを含むことを特徴とする。こうすることで、低消費電力、かつ低コストな電子機器を提供することができる。
【００３０】
【発明の実施の形態】
以下、本発明の好適な実施の形態について図面を用いて詳細に説明する。
【００３１】
１．本実施形態のマイクロコンピュータの構成の概要
図１に、本実施形態のクロック制御装置を適用したマイクロコンピュータの構成の概要を示す。
【００３２】
本実施形態におけるマイクロコンピュータ１０は、ＣＰＵコア１１と、キャッシュ装置１２と、クロックジェネレータ（ＣＧ）１３と、プログラマブル・ウェイト・コントローラ（広義には、クロック制御装置）１４と、各周辺回路とを含んで集積化されている。
【００３３】
本実施形態では、周辺回路として直接メモリアクセスコントローラ（ＤＭＡＣ）１５と、デバッグユニット１６とを含む。
【００３４】
ＣＧ１３は、例えば外部に接続された水晶発振子を用いて所与の周波数の原クロック信号ＳＣＬＫを生成する。ＣＧ１３は、原クロック信号線１７を介して、この原クロック信号ＳＣＬＫを第１及び第２のクロックドライバ１８、１９に供給する。
【００３５】
第１のクロックドライバ１８は、受信した原クロック信号ＳＣＬＫの増幅（或いは、波形整形）を行って、これを基準クロック信号ＣＬＫ1、ＣＬＫ2としてそれぞれ基準クロック信号線２０、２１を介して、ＣＰＵコア１１及びキャッシュ装置１２に供給する。
【００３６】
第２のクロックドライバ１９は、受信した原クロック信号ＳＣＬＫの増幅（或いは、波形整形）を行って、これを基準クロック信号ＣＬＫ3としてそれぞれを他の周辺回路（プログラマブル・ウェイト・コントローラ１４、ＤＭＡＣ１５、デバッグユニット１６その他の周辺回路各部）に供給する。
【００３７】
ＣＰＵコア１１、キャッシュ装置１２は、それぞれ基準クロック信号ＣＬＫ1、ＣＬＫ2、或いはそれぞれ基準クロック信号ＣＬＫ1、ＣＬＫ2を基準に生成した内部クロックに同期して動作する。
【００３８】
ＤＭＡＣ１５、デバッグユニット１６は、それぞれ基準クロック信号ＣＬＫ3のいずれか１つ、或いはそれぞれ基準クロック信号ＣＬＫ3のいずれか１つを基準に生成した内部クロックに同期して動作する。
【００３９】
ＣＰＵコア１１は、キャッシュ装置１２或いは外部に接続されたメモリ装置に格納されたデータに対して各種処理を行う。より具体的には、ＣＰＵコア１１は、キャッシュ装置１２若しくは外部に接続されたメモリ装置に格納されたフェッチデータをデコードし、このデコード結果に対応する命令を実行する（命令フェッチと命令デコード）。また、ＣＰＵコア１１は、或いはデコードされた命令に従ってフェッチデータを用いてそのままデータ処理（実行）を行う（データフェッチと命令実行）。
【００４０】
ＤＭＡＣ１５は、バスマスタとなって、ＣＰＵコア１１に代わってメモリ装置などに格納されたデータの転送制御を行う。このため、ＤＭＡＣ１５がバス使用権を譲り受けて所与のデータ転送を開始するのに先立って、内部で所与の処理を行っているＣＰＵコア１１に対して、ＤＭＡ要求信号３５を出力する。ＣＰＵコア１１は、当該処理が終了してバス使用権を譲渡するとき、ＤＭＡアクノリッジ信号３６をＤＭＡＣ１５に対して出力する。このＤＭＡアクノリッジ信号３６は、キャッシュ装置１２に対しても出力される。
【００４１】
ＤＭＡアクノリッジ信号３６を受け付けたＤＭＡＣ１５は、バス使用権を譲り受け、設定されたアドレス領域間のデータ転送を行う。これにより、ＣＰＵコア１１によるデータ転送処理に伴う負荷を省略することができる。
【００４２】
デバッグユニット１６は、アドレスデータを監視してデバッグ用メモリ空間にアクセスデータをトレースし、ソフトウェア及びハードウェアのデバッグに使用される。このため、デバッグユニット１６は、アドレス監視部と、割込発生部と、データトレース部と、通信部とを含む。アドレス監視部にアドレスデータが監視され、特定のアドレスへのアクセスが検出されたとき、割込発生部によりＣＰＵコア１１に割り込みをかけて、ＣＰＵコア１１の動作を一時停止させる。これにより、デバッガが起動され、アドレス監視部で一致検出されたアドレスデータ及びアクセスデータからなるトレースデータがデバッグ用メモリに蓄積される。デバッガへの入出力やトレースデータは、通信部を介して外部との間で行われる。このようなデバッガがバスマスタとなって、アドレスデータを発生してそのメモリやＩ／Ｏ空間上のデータをアクセスできるようにすることによって、ＣＰＵ上でデバッガを動作させることなく、外部から操作できるようになる。
【００４３】
キャッシュ装置１２は、ＣＰＵコア１１がアクセスするデータを、アドレスに対応付けてキャッシングする。即ち、キャッシュ装置１２は、外部に接続されたメモリ装置に格納されたデータの一部又は全部をバッファリングする。そして、キャッシュ装置１２がＣＰＵコア１１によって出力された内部アドレスデータに対応するデータをバッファリングしているとき（キャッシュヒットが発生したとき）、ＣＰＵコア１１はこのキャッシュ装置１２の蓄積データに対してアクセスする。これにより、データアクセス時間の大幅に短縮させる。
【００４４】
一方、キャッシュ装置１２がＣＰＵコア１１によって出力された内部アドレスデータに対応するデータをバッファリングしていないとき（キャッシュミスが発生したとき）、ＣＰＵコア１１はプログラマブル・ウェイト・コントローラ１４を介して、外部に接続されたメモリ装置に格納されたデータに対してアクセスする。その際、キャッシュ装置１２は、所与の入れ替えアルゴリズムに従って、そのアクセスデータを所与の格納場所にバッファリングして、次のアクセスに備える（キャッシュ・フィル）。
【００４５】
また、キャッシュ装置１２は、ＣＰＵコア１１からＤＭＡアクノリッジ信号３６を受け付けたとき、キャッシュ内容をフラッシュする。即ち、ＤＭＡアクノリッジ信号３６が出力されてから開始されるＤＭＡ転送が行われているとき、キャッシュ装置１２は、キャッシングされている内容を無効化する。
【００４６】
さらに、キャッシュ装置１２は、アクセスされたデータをバッファリングしているか否かについて、キャッシュヒット判定信号として通知するようになっている。
【００４７】
プログラマブル・ウェイト・コントローラ（広義には、クロック制御装置）１４は、所与のアドレス領域ごとに、データをアクセスするために発行されるバスサイクルに必要なウェイト制御を行う。ここで、プログラマブル・ウェイト・コントローラ１４は、バス制御装置或いはメモリ制御装置としての機能を有し、外部アドレスバス１４に接続される第１〜第３のメモリ装置２５〜２７にアクセスするための外部バスサイクルを発行するものとする。
【００４８】
マイクロコンピュータ１０は、内部アドレスバス２３が設けられており、これにＣＰＵコア１１、キャッシュ装置１２、プログラマブル・ウェイト・コントローラ１４、ＤＭＡＣ１５、デバッグユニット１６が接続される。ＣＰＵコア１１、ＤＭＡＣ１５或いはデバッグユニット１６は、この内部アドレスバス２３を共通バスとして、アクセス対象となるデータの格納場所を特定するための３２ビットの内部アドレスデータを出力する。
【００４９】
マイクロコンピュータ１０の外部には、外部アドレスバス２４が設けられており、これにマイクロコンピュータ１０のプログラマブル・ウェイト・コントローラ１４、メモリ装置としての第１〜第３のメモリ装置２５〜２７が接続されている。
【００５０】
第１〜第３のメモリ装置２５〜２７には、それぞれアドレス領域ごとに、アクセス対象となるデータが格納される。さらに、これら第１〜第３のメモリ装置２５〜２７は、それぞれ異なるアクセス時間を有する。このため、マイクロコンピュータ１０は、プログラマブル・ウェイト・コントローラ１４によって行われるアクセス対象となるデータが格納されるメモリ装置に対応したウェイト制御により、これら各メモリ装置にアクセスする。
【００５１】
次に、このような構成のマイクロコンピュータ１０の動作について、説明する。
【００５２】
本実施形態におけるマイクロコンピュータ１０が特徴とするところは、プログラマブル・ウェイト・コントローラ１４において、キャッシュ装置１２から出力されたキャッシュヒット判定信号に基づいて、キャッシュミスが発生したときに基準クロックＣＬＫ1、ＣＬＫ2のいずれか一方を停止させて、ＣＰＵコア１１及びキャッシュ装置１２のいずれ一方の動作を停止して、消費電力の低減を図る点である。
【００５３】
ここで、キャッシュヒット判定信号は、キャッシュ装置１２によって生成される。キャッシュ装置１２は、キャッシュヒット判定信号線２８を介し、キャッシュヒット判定信号をプログラマブル・ウェイト・コントローラ１４に供給される。
【００５４】
プログラマブル・ウェイト・コントローラ１４は、キャッシュヒット判定信号線２８を介して受信したキャッシュヒット判定信号により、キャッシュ装置１２においてキャッシュミスの発生を判別すると、基準クロックＣＬＫ1、ＣＬＫ2の少なくとも一方を停止させるためのクロック供給停止信号を第１のクロックドライバ１８に出力する。
【００５５】
クロック供給停止信号は、クロック供給停止信号線２９を介して、第１のクロックドライバ１８に供給される。
【００５６】
さらに本実施形態のプログラマブル・ウェイト・コントローラ１４によって生成されるクロック供給停止信号は、キャッシュミスが発生したとき、外部に接続されたメモリ装置にアクセスする際のストール期間に応じた期間だけ、上述した基準クロックの動作を停止するようになっている。そして、この期間については、ウェイト制御装置として機能するプログラマブル・ウェイト・コントローラ１４で設定されているウェイト制御テーブルに従って生成する。
【００５７】
図２に、本実施形態におけるプログラマブル・ウェイト・コントローラ１４によるウェイト制御を行うためのウェイト制御テーブルの一例を示す。
【００５８】
このウェイト制御テーブル４０は、マイクロコンピュータ１０の内部アドレスバス２３に接続されバスマスタとなり得る各部によってアクセスされるアドレス領域４１ごとに、アクセスデータを格納するメモリ装置にアクセスするために必要なウェイト数４２が記憶されている。
【００５９】
プログラマブル・ウェイト・コントローラ１４は、キャッシュミスが発生したとき、例えば外部に接続されたメモリ装置に対して「Ａ０００００００Ｈ」番地から「Ａ０００ＦＦＦＦＨ」番地までのアドレス領域のいずれかのアドレスにアクセスする際、判別したアドレス領域に対応したウェイト数「３」だけウェイト・サイクルが挿入された所与の外部バスサイクルを発行する。
【００６０】
このとき、プログラマブル・ウェイト・コントローラ１４は、ウェイト数「３」に応じたクロック数分だけ基準クロックＣＬＫ1、ＣＬＫ2の少なくとも一方を停止させるためのクロック供給停止信号を生成する。これにより、ＣＰＵコア１１、キャッシュ装置１２の少なくとも一方の動作が停止し、その停止した期間分だけ消費電力を削減することができる。
【００６１】
このようにキャッシュミスが発生した場合、従来ではいつデータが返ってくるか不明なためにストール状態にあったＣＰＵコアなどのクロック信号を停止することができなかった。これに対して、本実施形態では外部に接続されたメモリ装置をアクセスするためのプログラマブル・ウェイト・コントローラ１４に設定されたウェイト数に対応したクロック数だけクロックを停止させるようにした。これにより、従来のような性能低下を伴うことなく、ストール状態にある各部の消費電力を、効果的かつ簡素に低減させることが可能となる。
【００６２】
以下、上述した本実施形態のマイクロコンピュータ１０の要部について説明する。
【００６３】
２．本実施形態のクロック制御装置
図３に、本実施形態のクロック制御装置を適用したプログラマブル・ウェイト・コントローラの構成要部を示す。
【００６４】
ここで、図１に示すマイクロコンピュータ１０と同一部分には同一符号を付し、説明を省略する。
【００６５】
プログラマブル・ウェイト・コントローラ１４は、第１〜第８のウェイト制御レジスタ群５０1〜５０8と、ＭＵＸ部５１と、ＭＵＸ制御部５２と、ウェイト数制御カウンタ５３と、ゼロ検出器５４とを含む。
【００６６】
ここでは、ウェイト制御レジスタ群を８組としているが、組数に限定されるものではない。
【００６７】
第１〜第８のウェイト制御レジスタ群５０1〜５０8は、内部アドレスバス２３を介して供給されたアドレスデータに基づいて、アクセスされるアドレス領域を判別するためのレジスタ群と、判別したアドレス領域に対応したウェイト数が設定されるレジスタとを含む。
【００６８】
ＭＵＸ部５１は、各ウェイト制御レジスタ群５０1〜５０8それぞれに設定され読み出されたウェイト数５５1〜５５8と、デフォルト値「０」の中から択一的に選択するためのセレクタである。
【００６９】
ＭＵＸ制御部５２は、各ウェイト制御レジスタ群５０1〜５０8それぞれからのアドレス領域判別結果５６1〜５６8に基づいて、ＭＵＸ部５１のセレクタ制御を行うセレクタ制御信号５７を生成する。
【００７０】
ウェイト数制御カウンタ５３は、ＭＵＸ部５１によって択一的に選択されたウェイト数を毎クロック、デクリメントする。
【００７１】
ゼロ検出器５４は、キャッシュヒット判定信号２８によってキャッシュ装置１２でキャッシュミスが発生したことが検出されたとき、ウェイト数制御カウンタ５３でデクリメントされるカウントが「０」であるか否かを検出する。
【００７２】
また、ゼロ検出器５４は、カウント値が「０」であるか否かを示すゼロ検出信号に基づいて、クロック供給停止信号を生成する。
【００７３】
第１〜第８のウェイト数制御レジスタ群５０1〜５０8は、それぞれアドレス領域ごとに、外部に接続された複数のメモリ装置にアクセスするために発行されるバスサイクルに必要なウェイト数が設定される。
【００７４】
第１のウェイト数制御レジスタ群５０1は、ウェイト数設定レジスタ６０1と、比較アドレス設定レジスタ６１1と、比較アドレスマスク設定レジスタ６２1と、アドレスコンパレータ６３1とを含む。
【００７５】
第２〜第８のウェイト数制御レジスタ群５０2〜５０8は、第１のウェイト数制御レジスタ群５０1と同様の構成をなしている。
【００７６】
ウェイト数設定レジスタ６０1〜６０8には、各ウェイト制御レジスタ群ごとに設定されたアドレス領域に対応したウェイト数が設定される。
【００７７】
比較アドレス設定レジスタ６１1〜６１8には、アドレス領域の先頭アドレスに対応したアドレスデータが設定される。
【００７８】
比較アドレスマスク設定レジスタ６２1〜６２8には、比較アドレス設定レジスタ６１1〜６１8によって設定された先頭アドレスからのアドレス領域の領域サイズに対応したマスク値が設定される。
【００７９】
アドレスコンパレータ６３1〜６３8は、内部アドレスバス２３を介して入力されたアドレスデータと、比較アドレス設定レジスタ６１1〜６１8に設定されたアドレスデータとを比較する。その際に、アドレスコンパレータ６３1〜６３8は、比較アドレスマスク設定レジスタ６２1〜６２8に設定されたマスク値でマスクすることによって、内部アドレスバス２３上のアドレスデータによって特定されるアドレス領域が各ウェイト制御レジスタ群に設定されたアドレス領域であるか否かを判別する。その判別結果は、アドレス領域判別結果５６1〜５６8として出力される。
【００８０】
例えば、第１のウェイト制御レジスタ群５０1に、図２に示すような「Ａ００００００００Ｈ」番地から「Ａ０００ＦＦＦＦＨ」番地までの６４ＫＢ（キロバイト）のアドレス領域に３ウェイトを設定する場合は、次のように設定する。
【００８１】
ウェイト数設定レジスタ６０1には、ウェイト数「３」が設定される。
【００８２】
比較アドレス設定レジスタ６１1には、３２ビットの１６進データ「Ａ０００ｘｘｘｘＨ」（ここで、「ｘ」は任意の４ビットデータ）が設定される。
【００８３】
比較アドレスマスク設定レジスタ６２1には、３２ビットの１６進データ「００００ＦＦＦＦＨ」が設定される。
【００８４】
このような構成のプログラマブル・ウェイト・コントローラ１４は、内部アドレスバス２３を介して３２ビットのアドレスデータが供給されると、各ウェイト制御レジスタ群５０1〜５０8のアドレスコンパレータ６３1〜６３8に入力される。
【００８５】
アドレスコンパレータ６３1〜６３8は、上述したように、それぞれ比較アドレス設定レジスタ６１1〜６１8に設定されたアドレスデータと、内部アドレスバス２３上のアドレスデータとを１ビットずつ比較する。この際、アドレスコンパレータ６３1〜６３8は、比較アドレスマスク設定レジスタ６２1〜６２8の「１」が立っているビットについて比較結果をマスクして、一致したビットとして扱う。
【００８６】
このようにしてアドレスコンパレータ６３1〜６３8それぞれは、供給されたアドレスデータの全ビットが一致したとき、自ウェイト制御レジスタ群に設定されたアドレス領域であると判別する。一方、１ビットでも不一致のとき、自ウェイト制御レジスタ群に設定されたアドレス領域ではないと判別する。この判別結果は、アドレス領域判別信号５６1〜５６8としてＭＵＸ制御部５２に対し出力される。
【００８７】
ＭＵＸ制御部５２は、アドレス領域判別信号５６1〜５６8から、各ウェイト制御レジスタ群に設定されたアドレス領域であると判別されたウェイト制御レジスタ群を択一的に選択する。
【００８８】
ここで、各ウェイト制御レジスタ群の各アドレスの設定値は、ソフトウェア（ＯＳなど）によって、各ウェイト制御レジスタ群によるアドレス領域が重複しないように制御されている。
【００８９】
ＭＵＸ制御部５２によって択一的に選択されたウェイト制御レジスタ群を示すセレクタ制御信号５７は、ＭＵＸ部５１に供給される。
【００９０】
ＭＵＸ部５１は、セレクタ制御信号５７によって択一的に選択されたウェイト制御レジスタ群が出力するウェイト数設定レジスタのウェイト数を選択する。
【００９１】
なお、ＭＵＸ部５１は、第１〜第８のウェイト制御レジスタ群それぞれに設定されたアドレス領域ではない場合には、セレクタ制御信号５７によりデフォルト値「０」を選択する。
【００９２】
こうしてＭＵＸ部５１によって選択されたウェイト数設定レジスタのウェイト数は、ウェイト数制御カウンタ５３に入力される。
【００９３】
ウェイト数制御カウンタ５３に入力されたウェイト数は、まずゼロ検出器５４により「０」であるか否かが検出される。
【００９４】
ゼロ検出器５４により「０」であると検出されたときには、ウェイト数制御カウンタ５３は動作しない。例えばクロック供給停止信号の論理レベルが「Ｈ」のときクロックの供給の停止を指示するものとすると、ゼロ検出器５４により「０」であると検出され、かつその論理レベルが「Ｈ」のとき、図示しないクロックに同期してこれをリセットする。
【００９５】
ゼロ検出器５４により「０」ではないと検出されたときには、例えばクロック供給停止信号が論理レベル「Ｌ」のとき図示しないクロックに同期してこれをセットする。さらに、ウェイト数制御カウンタ５４は図示しないクロックに同期してデクリメント動作を行う。
【００９６】
デクリメント結果は、再びゼロ検出器５４により「０」であるか否かが検出される。
【００９７】
このようにして、毎クロックごとにウェイト数制御カウンタ５３のカウンタ値を、ゼロ検出器５４で「０」であるか否かを検出することで、ウェイト数制御カウンタ５３でデクリメントされるカウンタ値「０」が検出されるまでの間に対応した期間だけ論理レベル「Ｈ」となるクロック供給停止信号を生成する。
【００９８】
なお、ウェイト数制御カウンタ５３によって制御されるカウンタ値は、図示しない外部バスサイクル発生部によるウェイト制御に参照され、外部に接続されたメモリ装置に格納されるデータのアクセスが行われる。
【００９９】
図４に、本実施形態のプログラマブル・ウェイト・コントローラ１４の動作タイミングの一例を示す。
【０１００】
以下では、２フェーズ、ノンオーバラップクロックシステムにおける動作タイミングで、ウェイト数が「０」の場合を示す。
【０１０１】
ここで、２フェーズ、ノンオーバラップクロックシステムとは、クロック系統を、ＰＨ１、ＰＨ２と呼ばれる互いに非重複の２相クロックにより構成するようにしたシステムをいう。これにより、順序回路を同期化するフリップフロップをトランスペアレント（透過データ型）ラッチとすることができ、フリップフロップの回路構成の小型化が可能となる。
【０１０２】
また、本実施形態のマイクロコンピュータ１０の外部バスサイクルは、２クロックを１バスサイクルであるものとする。さらに、各バスサイクルの終端部でウェイト・サイクルを挿入するか否かを判別して、バスサイクルを延長するようになっているものとする。
【０１０３】
即ち、図４に示すようにウェイト数「０」の場合、バスサイクルは、互いに重複しないＰＨ１、ＰＨ２によって規定されるクロックサイクルＴ0、Ｔ1から構成される。
【０１０４】
本実施形態のマイクロコンピュータでは、クロックサイクルＴ0のＰＨ１に同期してアドレスデータが出力され、バスサイクルが開始される。
【０１０５】
これと同時に、プログラマブル・ウェイト・コントローラ１４の第１〜第８のウェイト制御レジスタ群５０1〜５０8のアドレスコンパレータ６３1〜６３8に、内部アドレスバス２３上のアドレスデータであるメモリアドレス７０が入力される。
【０１０６】
アドレスコンパレータ６３1〜６３8では、上述したようにアドレス領域の判別が行われる。その結果は、アドレス領域判別結果７１としてクロックサイクルＴ0のＰＨ２に同期して出力される。
【０１０７】
ＭＵＸ制御部５２及びＭＵＸ部５１は、このアドレス領域判別結果を用いて、該当するウェイト制御レジスタ群のウェイト数を選択する。
【０１０８】
上述したように、ソフトウェアによって各ウェイト制御レジスタ群が同一のアドレスでアドレス領域を判別した旨のアドレス領域判別結果を出力しないように制御していたが、プライオリティ回路により複数のアドレス領域判別結果が自レジスタ群に設定されたアドレス領域として判別した場合であっても優先順位の最も高いレジスタ群のみを選択するようにすることが望ましい。
【０１０９】
このようにして選択されたウェイト数は、ウェイト数制御カウンタ５３に入力される。
【０１１０】
ウェイト数制御カウンタ５３は、クロックサイクルＴ1のＰＨ１で、カウンタ値ＣＮＴとして「０」を設定する（カウンタ値７２）。
【０１１１】
ウェイト数制御カウンタ５３に設定されるカウンタ値は、ゼロ検出器５４で「０」であるか否かが検出される。
【０１１２】
ゼロ検出器５４は、クロックサイクルＴ1のＰＨ２に同期して、その検出結果７３を示すゼロ検出信号を出力する。ここでは、「０」が検出されたため、図示しない外部バスサイクル発生部によって制御される外部バスサイクルを終了させ、それ以降のカウント動作を停止させる。
【０１１３】
従って、クロックサイクルＴ2以降は、次のバスサイクルが新たに開始される。
【０１１４】
図５に、本実施形態のプログラマブル・ウェイト・コントローラ１４の動作タイミングの他の例を示す。
【０１１５】
以下では、図４と同様の２フェーズ、ノンオーバラップクロックシステムにおける動作タイミングで、ウェイト数が「Ｎ（Ｎは自然数）」の場合を示す。
【０１１６】
即ち、図５に示すようにウェイト数「Ｎ」の場合、バスサイクルは、互いに重複しないＰＨ１、ＰＨ２によって規定されるクロックサイクルＴ0、ＴN+1から構成される。
【０１１７】
クロックサイクルＴ0のＰＨ１に同期してアドレスデータが出力されて、バスサイクルが開始されると同時に、内部アドレスバス２３上のアドレスデータであるメモリアドレス８０がプログラマブル・ウェイト・コントローラ１４の第１〜第８のウェイト制御レジスタ群５０1〜５０8のアドレスコンパレータ６３1〜６３8に入力される。
【０１１８】
アドレスコンパレータ６３1〜６３8では、上述したようにアドレス領域の判別が行われ、アドレス領域判別結果８２としてクロックサイクルＴ0のＰＨ２に同期して出力される。
【０１１９】
ＭＵＸ制御部５２及びＭＵＸ部５１は、このアドレス領域判別結果を用いて、該当するウェイト制御レジスタ群のウェイト数を選択し、選択されたウェイト数は、ウェイト数制御カウンタ５３に入力される。
【０１２０】
ウェイト数制御カウンタ５３は、クロックサイクルＴ1のＰＨ１で、カウンタ値ＣＮＴとして「Ｎ」を設定する（カウンタ値８４）。
【０１２１】
ウェイト数制御カウンタ５３に設定されるカウンタ値は、ゼロ検出器５４で「０」であるか否かが検出される。
【０１２２】
ゼロ検出器５４は、クロックサイクルＴ1のＰＨ２に同期して、その検出結果８６を示すゼロ検出信号を出力する。
【０１２３】
ここでは、ウェイト数制御カウンタ５３に設定されるカウンタ値は「Ｎ」であるため、クロックサイクルＴ1のＰＨ２に同期して、それまで論理レベル「Ｌ」のクロック供給停止信号がセット８８される。
【０１２４】
ウェイト数制御カウンタ５３は、クロックサイクルごとにＰＨ１に同期してカウンタ値をデクリメントする。
【０１２５】
従って、クロックサイクルＴ2のＰＨ１に同期してカウンタ値は「Ｎ−１」に設定される（カウンタ値９０）。
【０１２６】
カウンタ値が更新されるたびに、ゼロ検出器５４で「０」であるか否かが検出される。
【０１２７】
クロックサイクルＴ2においても、ウェイト数制御カウンタ５３に設定されるカウンタ値は「Ｎ−１」であるため、クロック供給停止信号は論理レベル「Ｈ」のままである。
【０１２８】
以下同様にして、ＣＮＴが「０」になるまで繰り返される。
【０１２９】
その結果、クロックサイクルＴN+1のＰＨ１で、ウェイト数制御カウンタ５３は、カウンタ値ＣＮＴとして「０」を設定する（カウンタ値９２）。
【０１３０】
ウェイト数制御カウンタ５３に設定されるカウンタ値は、ゼロ検出器５４で「０」であるか否かが検出される。
【０１３１】
ゼロ検出器５４は、クロックサイクルＴ1のＰＨ２に同期して、その検出結果８６を示すゼロ検出信号を出力する。
【０１３２】
ウェイト数制御カウンタ５３は、クロックサイクルごとにＰＨ１に同期してカウンタ値をデクリメントし、カウンタ値が更新されるたびに、ゼロ検出器５４で「０」であるか否かが検出される。
【０１３３】
ここでは、「０」が検出されたため、図示しない外部バスサイクル発生部によって制御される外部バスサイクルを終了させ、それ以上のカウント動作を停止させる。
【０１３４】
また、クロックサイクルＴN+2のＰＨ２に同期して、クロック供給停止信号は、論理レベル「Ｈ」のクロック供給停止信号がリセットされる（リセット９４）。
【０１３５】
即ち、ここではクロック供給停止信号として、次のように生成する。
【０１３６】
クロック供給停止信号の論理レベルが「Ｈ」のとき、クロックの供給の停止を指示するものとすると、ウェイト数制御カウンタ５３でデクリメントされるカウンタ値が「０」の場合、クロック供給停止信号は、論理レベル「Ｌ」のときは変化しないが、論理レベル「Ｈ」のときリセットされる。ウェイト数制御カウンタ５３でデクリメントされるカウンタ値が「０」ではない場合、論理レベル「Ｌ」のときは論理レベル「Ｈ」にセットするが、論理レベル「Ｈ」のときは変化しない。
【０１３７】
このようにすることによって、ゼロ検出器５４は、キャッシュミスが発生したときに、例えばウェイト数制御カウンタ５３でデクリメントされるカウンタ値「０」が検出されるまで、論理レベル「Ｈ」のクロック供給停止信号を生成することができる。このようなクロック供給停止信号は、ゼロ検出結果と同一タイミングで生成することができる。
【０１３８】
ところで、クロック供給停止信号は、アドレス領域が判別される場合には必ずウェイとサイクルが必要となるという前提で、アドレス領域が判別されたときに論理レベル「Ｈ」にセットし、ゼロ検出器５４のゼロ検出により論理レベル「Ｌ」にリセットすることで、ゼロ検出タイミングより早いタイミングでクロック供給停止信号を生成することができる。
【０１３９】
この場合、クロック供給停止信号は、クロックサイクルＴ1のＰＨ１に同期して論理レベル「Ｈ」となり、クロックサイクルＴN+2のＰＨ１に同期して論理レベル「Ｌ」となる。
【０１４０】
さらに、リセットタイミングとして、カウンタ値が「０」ではなく「１」又は「２」といった値になったときにクロック供給停止信号を論理レベル「Ｌ」にすることによって、クロック供給再開を少しは早めることも可能となる。
【０１４１】
このような種々のクロック供給停止信号の生成タイミングについては、マイクロコンピュータの各部の動作タイミングに依存するものであって、この生成タイミングに限定されるものではない。
【０１４２】
要は、プログラマブル・ウェイト・コントローラ１４として、ウェイト制御テーブルに設定されたウェイト数を参照し、これに対応したクロック数だけ論理レベル「Ｈ」となるクロック供給停止信号を生成することができればよい。
【０１４３】
３．本実施形態のマイクロコンピュータ
次に、本実施形態のマイクロコンピュータにおけるクロック供給停止動作について、具体的に説明する。
【０１４４】
そのため、まず本実施形態のプログラマブル・ウェイト・コントローラ（広義には、クロック制御装置）１４に対して、キャッシュヒット判定信号を供給するキャッシュ装置の構成及び動作タイミングについて説明した後、本実施形態のクロック供給停止動作について説明する。
【０１４５】
（１）キャッシュ装置の構成例
図６に、本実施形態のキャッシュ装置１２の構成の一例を示す。
【０１４６】
ここでは、キャッシュ装置１２が、命令／データとが混在した２ウェイセットアソシアティブ方式であり、ラインサイズ８バイトで、４Ｋバイト（＝８バイト×２５６エントリ×２ウェイ）の容量であるものとする。
【０１４７】
キャッシュ装置１２は、ウェイごとに、コンパレータ１００0、１００1と、タグＲＡＭ読出・書込制御回路１０２0、１０２1と、タグアレイ１０４0、１０４1と、データＲＡＭ読出・書込制御回路１０６0、１０６1と、データアレイ１０８0、１０８1とを含み、さらにＭＵＸ１１０を含む。
【０１４８】
コンパレータ１００0、１００1は、アドレスデータの上位ビットと、タグＲＡＭ読出・書込制御回路１０２0、１０２1によって読み出されたタグアドレスデータとを比較し、その比較結果をタグ比較結果１１２0、１１２1としてＭＵＸ１１０に対して出力する。
【０１４９】
その際、コンパレータ１００0、１００1は、タグアレイの各エントリごとに有効であるか否かを示すＶａｌｉｄビットが「１」のときにのみ比較結果が一致したものと判定するようになっている。
【０１５０】
タグＲＡＭ読出・書込制御回路１０２0、１０２1は、それぞれアドレスデータの中位ビットによって特定されるタグアレイ１０４0、１０４1の各エントリに対して、アドレスデータの上位ビットの読み出し及び書き込み制御を行うと共に、有効なエントリを示すＶａｌｉｄビットの制御を行う。
【０１５１】
タグアレイ１０４0、１０４1は、アドレスデータの上位ビットを、中位ビットによって特定されるエントリ数分だけ記憶する。
【０１５２】
データＲＡＭ読出・書込制御回路１０６0、１０６1は、それぞれアドレスデータの中位ビットによって特定されるデータアレイ１０８0、１０８1の各エントリに対して、キャッシュデータの１ラインの読み出し及び書き込み制御を行う。
【０１５３】
データアレイ１０８0、１０８1は、アドレスデータに対応した１ラインサイズのデータを、アドレスデータの中位ビットによって特定されるエントリ数分だけ記憶する。
【０１５４】
ＭＵＸ１１０は、タグ比較結果１１２0、１１２1から、一致したウェイの１ラインデータを選択し、そのうちアドレスデータ下位ビットで特定されるデータが図示しないデータバスに出力される。
【０１５５】
ここで、内部アドレスバス２３を介して３２ビットのアドレスデータ１２０がキャッシュ装置１２に供給されたものとする。
【０１５６】
３２ビットのアドレスデータ１２０の上位２１ビット１２２は、コンパレータ１００0、１００1に入力される。即ち、コンパレータ１００0、１００1は、この上位２１ビット１２２と、タグアレイ１０４0、１０４1から読み出されたタグアドレスとを比較する。
【０１５７】
３２ビットのアドレスデータ１２０の中位８ビット１２４は、タグアレイ１０４0、１０４1、データアレイ１０８0、１０８1に入力される。即ち、この中位８ビット１２４によって、タグアレイ１０４0、１０４1、データアレイ１０８0、１０８1の２５６エントリのいずれかのエントリが特定される。
【０１５８】
３２ビットのアドレスデータ１２０の下位３ビット１２６は、データＲＡＭ読出・書込制御回路１０６0、１０６1によってデータアレイ１０８0、１０８1から読み出された８バイトのデータのライン内の指定を行う。
【０１５９】
コンパレータ１００0、１００1が、タグアレイ１０４0、１０４1から中位８ビット１２４によって特定されるエントリからタグアドレスとともに読み出されたＶａｌｉｄビットから、タグアドレスの一致、かつＶａｌｉｄビットが「１」であることを一致成立の条件に比較を行い、タグ比較結果１１２０、１１２１として出力する。
【０１６０】
ＭＵＸ１１０は、データＲＡＭ読出・書込制御回路１０６0、１０６1によってデータアレイ１０８０、１０８１から読み出されたアドレスデータ１２０の中位８ビット１２４によって特定されるエントリの１ラインサイズの８バイトデータを、タグ比較結果１１２0、１１２1に基づいて、択一的に選択する。
【０１６１】
さらに、ＭＵＸ１１０は、選択した１ラインデータをアドレスデータ１２０の下位３ビット１２６によって特定される位置の３２ビットデータを図示しないデータバスに出力する。
【０１６２】
ここでは、データバスを３２ビットとすると、下位３ビット１２６の最上位１ビットのみが用いられる。すなわち、下位３ビット１２６の最上位ビットが「０」のとき１ラインサイズの下位４バイトを選択し、下位３ビット１２６の最上位ビットが「１」のとき１ラインサイズの上位４バイトを選択する。
【０１６３】
なお、キャッシュヒット判定信号は、タグ比較結果１１２0、１１２1の論理和演算の結果として、プログラマブル・ウェイト・コントローラ１４に対して出力される。
【０１６４】
図７に、本実施形態のキャッシュ装置１２の動作タイミングの一例を示す。
【０１６５】
ここでは、２フェーズ、ノンオーバラップクロックシステムにおける動作タイミングで、キャッシュヒットした場合の動作タイミングを示す。
【０１６６】
即ち、図７に示すようにクロックサイクルＴ0のＰＨ１に同期してアドレスデータＡＤＲ１が出力されると、キャッシュ装置１２のタグＲＡＭ読出・書込制御回路１０２0、１０２1によりタグアドレスが読み出されて、比較される。
【０１６７】
その結果であるタグ比較結果１１２0、１１２1が論理和演算されたキャッシュヒット判定信号は、クロックサイクルＴ0のＰＨ２に同期して出力される。
【０１６８】
アドレスデータＡＤＲ１がキャッシュヒットした場合には、ＭＵＸ１１０においてタグ比較結果１１２0、１１２1により選択された３２ビットのＤａｔａ１がクロックサイクルＴ0のＰＨ２に同期して出力される。
【０１６９】
続いて、クロックサイクルＴ1のＰＨ１に同期してアドレスデータＡＤＲ２が出力されると、キャッシュ装置１２のタグＲＡＭ読出・書込制御回路１０２0、１０２1によりタグアドレスが読み出されて、比較される。
【０１７０】
以下同様に、キャッシュヒット判定信号と、キャッシュヒットしたアドレスデータＡＤＲ２に対応したＤａｔａ２が、クロックサイクルＴ0のＰＨ２に同期して出力される。
【０１７１】
（２）クロック供給停止動作タイミング
次に、上述した構成のプログラマブル・ウェイト・コントローラ１４、キャッシュ装置１２を含む本実施形態のマイクロコンピュータにおけるクロック供給停止動作タイミングについて、図８を参照しながら説明する。
【０１７２】
図８に、本実施形態のマイクロコンピュータにおけるクロック供給停止動作タイミングの一例を示す。
【０１７３】
ここでは、クロック供給停止信号をアドレス領域判別信号とＰＨ１に同期してセットし、ゼロ検出信号とＰＨ１に同期してリセットして生成されたものとするが、このクロック供給停止信号のタイミングはマイクロコンピュータの構成に依存する。要は、プログラマブル・ウェイト・コントローラ１４に設定されたアドレス領域に対応したウェイト数に基づくクロック数だけ少なくともＣＰＵコア或いはキャッシュ装置１２に供給される基準クロックを停止させるクロック供給停止信号を生成することができればよい。
【０１７４】
さらに、本実施形態におけるキャッシュ装置１２は、高速化のため、アドレスが供給された時点で、タグアレイ及びデータアレイの読み出し動作を同時開始するものとする。
【０１７５】
クロックサイクルＴ0のＰＨ１に同期して出力されたアドレスデータＡＤＲ１は、キャッシュ装置１２でキャッシュヒットが発生したとすると、クロックサイクルＴ0のＰＨ２でタグ比較結果であるキャッシュヒット判定信号が、「ヒット」を意味する論理レベル「Ｈ」となる。
【０１７６】
キャッシュヒットしたキャッシュ装置１２は、図７で説明したようにこのクロックサイクルＴ0のＰＨ２で、ヒットしたデータＤａｔａ１を出力する。
【０１７７】
続いて、クロックサイクルＴ1のＰＨ１に同期して出力されたアドレスデータＡＤＲ２は、キャッシュ装置１２でキャッシュミスが発生したとすると、クロックサイクルＴ1のＰＨ２でタグ比較結果であるキャッシュヒット判定信号が、「ミス」を意味する論理レベル「Ｌ」となる。
【０１７８】
これに伴い、キャッシュ装置１２は、外部に接続されたメモリ装置に対して、リィル動作を行う。
【０１７９】
即ち、外部アドレスバスにクロックサイクルＴ1のＰＨ１に同期して、ＡＤＲ２に対応したメモリアドレス（２ａ）を出力して、３２ビットデータをフィルした後、メモリアドレス（２ｂ）を出力して他の３２ビットデータをフィルする。このように、２バスサイクルにより、６４ビットの１ラインサイズのデータをフィルする。
【０１８０】
ここで、ＡＤＲ２が例えば「Ａ０００００００Ｈ」番地であるとすると、クロックサイクルＴ1のＰＨ２に同期して、アドレス領域判別結果が一致を意味する論理レベル「Ｈ」となる。これにしたがって、図２に示したように、「Ａ００００００Ｈ」番地から「Ａ０００ＦＦＦＦＨ」番地までのアドレス領域に対応するクロック数「３」が読み出される。
【０１８１】
続いて、クロック供給停止信号は、上述したようにこのアドレス領域判別結果とＰＨ１に同期して、クロックサイクルＴ２のＰＨ１で論理レベル「Ｈ」にセットされると共に、プログラマブル・ウェイト・コントローラ１４のカウンタ値ＣＮＴが「３」に設定される。
【０１８２】
このカウンタ値は、デクリメントされて、各クロックサイクルのＰＨ１で更新される。
クロックサイクルＴ5のＰＨ１で、カウンタ値ＣＮＴが「０」に更新されると、ゼロ検出器５４で「０」が検出されて、クロックサイクルＴ5のＰＨ２でゼロ検出を示す論理レベル「Ｈ」となる。
【０１８３】
クロック供給停止信号は、上述したようにゼロ検出信号とＰＨ１に同期してリセットされるので、クロックサイクルＴ6のＰＨ１で論理レベル「Ｌ」となる。
【０１８４】
従って、クロック供給停止信号が論理レベル」Ｈ」の期間であるクロックサイクルＴ2からクロックサイクルＴ5にかけての間、第１のクロックドライバ１８において例えばキャッシュ装置１２の供給される基準クロックの動作が停止する。また、場合によってはＣＰＵコア１１に供給される基準クロックについても、同様に停止させるようにしてもよい。
【０１８５】
そして、クロックサイクルＴ6ではＣＰＵコア１１、或いはキャッシュ装置１２の基準クロックの動作停止は解除される。
【０１８６】
これにより、プログラマブル・ウェイト・コントローラ１４のウェイト制御テーブルによって記憶されるウェイト数にしたがってウェイト・サイクルが挿入された外部バスサイクルにより、外部に接続されたメモリ装置からは所望のアクセスデータがデータバス上に出力される。
【０１８７】
このようにして、クロックサイクルＴ5〜Ｔ6にかけて外部に接続されたメモリ装置から出力される外部データは、クロック信号が動作しているキャッシュ装置１２のＡＤＲ２に対応したタグアドレスの１ラインデータの一部としてフィルされる。
【０１８８】
その後、クロックサイクルＴ6以降で、ＡＤＲ２に対応したタグアドレスの１ラインデータの他のデータをフィルするためのメモリアドレス（２ｂ）による、外部バスサイクルが発行される。
【０１８９】
以上説明したように、本実施形態では、ＣＰＵコア１１及びキャッシュ装置１２を含むマイクロコンピュータ１０において、キャッシュ装置１２でキャッシュミスが発生したとき、外部に接続されたメモリ装置にアクセスするためのプログラマブル・ウェイト・コントローラ１４において、アクセスされるアドレス領域に対応して設定されるウェイト数に応じたクロック数だけ基準クロックの動作を停止させるクロック供給停止信号を生成するようにした。そして、このクロック供給停止信号を、第１のクロックドライバ１８からＣＰＵコア１１及びキャッシュ装置１２に供給される基準クロックのうち少なくとも一方を停止するようにした。これにより、性能低下を伴うことなく、ストール状態にある各部の消費電力を、効果的かつ簡素に低減させることが可能となる。
【０１９０】
なお、本実施形態におけるマイクロコンピュータでは、プログラマブル・ウェイト・コントローラ１４のウェイト制御テーブルに設定されたウェイト数を参照して、クロック供給停止信号はこのウェイト数に応じたクロック数（例えば、１クロックだけ短いクロック数）だけクロック供給の停止を指示するようにしていた。これは、例えばフリップフロップなどの簡素な順序回路からなるロジックで実現できる。しかしながら、このようなクロック数に限定されるものではない。
【０１９１】
例えば、クロック供給を停止させるためのクロック数を、図２に示したウェイト制御テーブルに設定するようにしてもよい。
【０１９２】
図９は、本実施形態におけるプログラマブル・ウェイト・コントローラ１４によるウェイト制御を行うためのウェイト制御テーブルの他の例を示す。
【０１９３】
このウェイト制御テーブル１８０は、マイクロコンピュータ１０の内部アドレスバス２３に接続されるバスマスタとなり得る各部によってアクセスされるアドレス領域１８２ごとに、アクセスデータを格納するメモリ装置にアクセスするために必要な外部バスサイクルウェイト数１８４と、キャッシュミスが発生して外部アクセスに要するキャッシュ装置１２のウェイト数１８６とが記憶されている。
【０１９４】
プログラマブル・ウェイト・コントローラは、例えばキャッシュミス発生時など外部に接続されたメモリ装置に対して「Ａ０００００００Ｈ」番地から「Ａ０００ＦＦＦＦＨ」番地までのアドレス領域のいずれかのアドレスにアクセスする際、判別したアドレス領域に対応したウェイト数「３」だけウェイトさせた所与の外部バスサイクルを発行する。
【０１９５】
このとき、プログラマブル・ウェイト・コントローラ１４は、キャッシュウェイト数「２」だけ基準クロックＣＬＫ2を停止させるためのクロック供給停止信号を生成する。これにより、外部に接続されるメモリ装置のアクセス時間に応じて、キャッシュ装置１２の動作を停止させるべきクロック数を可変とすることができ、ソフトウェア（ＯＳなど）により最適な消費電力制御を行うことができるようになる。
【０１９６】
４．他の実施形態のマイクロコンピュータの構成例
本実施形態における、キャッシュ装置からキャッシュミスが発生したときに外部に接続されたメモリ装置にアクセスするためのウェイト制御テーブルに基づいてクロック供給停止信号を生成するプログラマブル・ウェイト・コントローラ（広義には、クロック制御装置）の機能については、他の周辺回路に含むことが考えられる。
【０１９７】
図１０に、他の実施形態のマイクロコンピュータのハードウェアブロック図の一例を示す。
【０１９８】
このマイクロコンピュータ１７００は、本実施形態のクロック制御装置の機能をバスコントローラ１６００に含むと共に、本実施形態のキャッシュ装置１５２０を含んで構成されており、ＣＰＵ１５１０、リセット回路１５４０、プログラマブルタイマ１５５０、リアルタイムクロック（ＲＴＣ）１５６０、ＤＭＡ１５７０、割り込みコントローラ１５８０、シリアルインターフェース１５９０、Ａ／Ｄ変換器１６１０、Ｄ／Ａ変換器１６２０、入力ポート１６３０、出力ポート１６４０、Ｉ／Ｏポート１６５０、クロック発生装置１５６０、プリスケーラ１５７０、及びそれらを接続する各種バス１６８０など、各種ピン１６９０などを含む。
【０１９９】
本実施形態のクロック制御装置をマイクロコンピュータに組み込むことにより、効果的かつ簡素な方法で低消費電力化を図るマイクロコンピュータを安価に提供することができる。
【０２００】
５．本実施形態の電子機器
図１１に、本実施形態の電子機器のブロック図の一例を示す。本電子機器８００は、マイクロコンピュータ（またはＡＳＩＣ）８１０、入力部８２０、メモリ８３０、電源生成部８４０、画像出力部８５０、音出力８６０を含む。
【０２０１】
本マイクロコンピュータ（またはＡＳＩＣ）８１０或いはメモリ８３０は、本実施形態のクロック制御装置を含んでいる。
【０２０２】
ここで、入力部８２０は、種々のデータを入力するためのものである。マイクロコンピュータ８１０は、この入力部８２０により入力されたデータに基づいて種々の処理を行うことになる。メモリ８３０は、マイクロコンピュータ８１０等の作業領域となるものである。電源生成部８４０は、電子機器８００で使用される各種電源を生成するためのものである。画像出力部８５０は、電子機器が表示する各種の画像（文字、アイコン、グラフィック等）を出力するためのものであり、その機能は、ＬＣＤやＣＲＴ等のハードウェアにより実現できる。音出力部８６０は、電子機器８００が出力する各種の音（音声、ゲーム音等）を出力するためのものであり、その機能は、スピーカ等のハードウェアにより実現できる。
【０２０３】
図１２（Ａ）に、電子機器の１つである携帯電話９５０の外観図の例を示す。この携帯電話９５０は、入力部として機能するダイヤルボタン９５２や、画像出力部として機能し電話番号や名前やアイコン等を表示するＬＣＤ９５４や、音出力部として機能し音声を出力するスピーカ９５６を備える。
【０２０４】
図１２（Ｂ）に、電子機器の１つである携帯型ゲーム装置９６０の外観図の例を示す。この携帯型ゲーム装置９６０は、入力部として機能する操作ボタン９６２、十字キー９６４や、画像出力部として機能しゲーム画像を表示するＬＣＤ９６６や、音出力部として機能しゲーム音を出力するスピーカ９６８を備える。
【０２０５】
図１２（Ｃ）に、電子機器の１つであるパーソナルコンピュータ９７０の外観図の例を示す。このパーソナルコンピュータ９７０は、入力部として機能するキーボード９７２や、画像出力部として機能し文字、数字、グラフィック等を表示するＬＣＤ９７４、音出力部９７６を備える。
【０２０６】
本実施形態のクロック制御装置を図１２（Ａ）〜図１２（Ｃ）の電子機器に組み込むことにより、低消費電力、かつ低コストな電子機器を提供することができる。
【０２０７】
なお、本実施形態を利用できる電子機器としては、図１２（Ａ）、（Ｂ）、（Ｃ）に示すもの以外にも、携帯型情報端末、ページャ、電子卓上計算機、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、ビューファインダ型又はモニタ直視型のビデオテープレコーダ、カーナビゲーション装置、プリンタ等、種々の電子機器を考えることができる。
【０２０８】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０２０９】
また、本実施形態では、ＣＰＵコア或いはキャッシュ装置に供給される基準クロックを停止させるようにしていたが、これに限定されるものではない。例えば、プログラマブル・ウェイト・コントローラ（広義には、クロック制御装置）１４によって生成されたクロック供給停止信号により、第２のクロックドライバ１９からＤＭＡＣ１５或いはデバッグユニット１６に供給される基準クロックを停止させるようにしてもよい。
【０２１０】
さらにまた、例えばＣＰＵコア１１がキャッシュ装置１２をアクセスしてキャッシュミスが発生し、このキャッシュ装置１２がアドレスをスヌープしてキャッシュのコヒーレンシを保つようにした場合、キャッシュ装置１２のクロック停止期間はこのスヌープに要するクロック数を除いて設定するようにすれば、バススヌープ機能を有する場合にも容易に適用することが可能となる。
【０２１１】
また、キャッシュ装置１２、プログラマブル・ウェイト・コントローラ１４、ＤＭＡＣ１５、デバッグユニット１６における内部アドレスバスは、そのバス幅に限定されるものではない。
【０２１２】
さらにまた、本実施形態では、クロック供給停止信号をウェイト数に応じたクロック数分だけ停止させるようにしているが、内部構成によってはそのままウェイト数分だけ基準クロックを停止させるようにしてもよい。
【０２１３】
さらに、本実施形態のマイクロコンピュータを構成する各部（ＣＰＵコア、キャッシュ装置、ＤＭＡＣ、デバッグユニットなど）ごとにクロック供給を停止させるクロック数を、アクセスされるアドレス領域ごとに図２又は図９に示したウェイト制御テーブルに記憶させるようにしてもよい。これにより、マイクロコンピュータを構成する各部の動作タイミングによって決まる最適な消費電力制御が、非常に簡素な構成で実現することができる。
【図面の簡単な説明】
【図１】本実施形態のクロック制御装置を適用したマイクロコンピュータの構成の概要を示すブロック図である。
【図２】本実施形態におけるウェイト制御テーブルの一例を示す説明図である。
【図３】本実施形態のクロック制御装置を適用したプログラマブル・ウェイト・コントローラの構成要部を示すブロック図である。
【図４】本実施形態のプログラマブル・ウェイト・コントローラの動作タイミングの一例を示すタイミングチャートである。
【図５】本実施形態のプログラマブル・ウェイト・コントローラの動作タイミングの他の例を示すタイミングチャートである。
【図６】本実施形態のキャッシュ装置の構成の一例を示すブロック図である。
【図７】本実施形態のキャッシュ装置の動作タイミングの一例を示すタイミングチャートである。
【図８】本実施形態のマイクロコンピュータにおけるクロック供給停止動作タイミングの一例を示すタイミングチャートである。
【図９】本実施形態におけるウェイト制御テーブルの他の例を示す説明図である。
【図１０】他の実施形態のマイクロコンピュータの構成の一例を示すブロック図である。
【図１１】本実施形態の電子機器の構成の一例を示すブロック図である。
【図１２】図１２（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０  マイクロコンピュータ
１１  ＣＰＵコア
１２  キャッシュ装置
１３  ＣＧ
１４  プログラマブル・ウェイト・コントローラ（クロック制御装置）
１５  ＤＭＡＣ
１６  デバッグユニット
１７  原クロック信号線
１８  第１のクロックドライバ
１９  第２のクロックドライバ
２０、２１  基準クロック信号線
２３  内部アドレスバス
２４  外部アドレスバス
２５  第１のメモリ装置
２６  第２のメモリ装置
２７  第３のメモリ装置
２８  キャッシュヒット判定信号線
２９  クロック供給停止信号線
３５  ＤＭＡ要求信号
３６  ＤＭＡアクノリッジ信号
【図１】
0003899784.tif 000002
【図２】
0003899784.tif 000003
【図３】
0003899784.tif 000004
【図４】
0003899784.tif 000005
【図５】
0003899784.tif 000006
【図６】
0003899784.tif 000007
【図７】
0003899784.tif 000008
【図８】
0003899784.tif 000009
【図９】
0003899784.tif 000010
【図１０】
0003899784.tif 000011
【図１１】
0003899784.tif 000012
【図１２】
0003899784.tif 000013