(57)【要約】【課題】キャッシュミスに起因するプロセッサのアイドル状態を正確に検出する。【解決手段】プロセッサ(11)は、パイプライン処理により命令を実行する命令実行ユニット(110)と、命令実行ユニットによって利用される命令およびデータを格納する一次キャッシュ(111)とを備える。アイドル状態検出回路(10)において、実行命令検出部(101)は、命令実行ユニット(110)によって現在実行されている命令および次に実行される予定の命令が存在しない命令なし状態を検出する。リード待ち検出部(103)は、命令実行ユニット(110)がリードデータを待っているリード待ち状態を検出する。判定部(104)は、命令なし状態およびリード待ち状態のうち少なくとも１つが検出された場合に、プロセッサ(11)がアイドル状態であると判定する。【選択図】図１
2011044072.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン処理により命令を実行する命令実行ユニットと、前記命令実行ユニットによって利用される命令およびデータを格納する一次キャッシュとを備えるプロセッサのアイドル状態を検出する回路であって、
前記命令実行ユニットによって現在実行されている命令および次に実行される予定の命令が存在しない命令なし状態を検出する実行命令検出部と、
前記命令実行ユニットがリードデータを待っているリード待ち状態を検出するリード待ち検出部と、
前記命令なし状態および前記リード待ち状態のうち少なくとも１つが検出された場合に、前記プロセッサがアイドル状態であると判定する判定部とを備える
ことを特徴とするアイドル状態検出回路。
【請求項２】
請求項１において、
ライトバッファ監視部をさらに備え、
前記一次キャッシュは、
前記命令実行ユニットによって利用される命令およびデータをそれぞれ格納する命令キャッシュおよびデータキャッシュと、
前記命令実行ユニットによって生成されたライトデータを格納するライトバッファとを含み、
前記ライトバッファ監視部は、前記ライトバッファが満杯であるバッファ満杯状態を検出し、
前記判定部は、前記命令なし状態，前記リード待ち状態，および前記バッファ満杯状態のうち少なくとも１つが検出された場合に、前記プロセッサがアイドル状態であると判定する
ことを特徴とするアイドル状態検出回路。
【請求項３】
請求項１において、
前記リードデータは、前記命令実行ユニットによる要求に応答して外部記憶装置から転送されるデータである
ことを特徴とするアイドル状態検出回路。
【請求項４】
請求項１において、
前記プロセッサは、前記命令実行ユニットによって利用される命令およびデータを格納し且つ前記一次キャッシュよりもレイテンシが大きい二次キャッシュをさらに備え、
前記リードデータは、前記命令実行ユニットによる要求に応答して前記二次キャッシュから転送されるデータである
ことを特徴とするアイドル状態検出回路。
【請求項５】
請求項１〜４のいずれか１項に記載のアイドル状態検出回路と、
前記プロセッサと、
前記プロセッサを駆動させるためのクロックおよび駆動電圧を前記プロセッサに供給するものであり、前記判定部によって前記プロセッサがアイドル状態であると判定された場合に、前記クロックの周波数および前記駆動電圧の電圧値のうち少なくとも１つを低下させる駆動回路とを備える
ことを特徴とする半導体集積回路。
【請求項６】
請求項１〜４のいずれか１項に記載のアイドル状態検出回路と、
前記プロセッサと、
駆動回路とを備え、
前記アイドル状態検出回路は、
前記プロセッサがアイドル状態であると判定されている期間に相当するクロックサイクル数をカウントするアイドルカウンタと、
前記アイドルカウンタによってカウントされたクロックサイクル数が規定クロックサイクル数とを比較する比較部とをさらに備え、
前記駆動回路は、前記プロセッサを駆動させるためのクロックおよび駆動電圧を前記プロセッサに供給するものであり、前記比較部によって前記クロックサイクル数が前記規定クロックサイクル数よりも多いと判定された場合に、前記クロックの周波数および前記駆動電圧の電圧値のうち少なくとも１つを低下させる
ことを特徴とする半導体集積回路。
【請求項７】
請求項６において、
前記規定クロックサイクル数は、可変値である
ことを特徴とする半導体集積回路。
【請求項８】
請求項１に記載のアイドル状態検出回路と、
前記プロセッサと、
外部記憶装置とを備え、
前記リードデータは、前記命令実行ユニットによる要求に応答して前記外部記憶装置から転送されるデータである
ことを特徴とする信号処理装置。
【請求項９】
パイプライン処理により命令を実行する命令実行ユニットと、前記命令実行ユニットによって利用される命令およびデータを格納する一次キャッシュとを備えるプロセッサのアイドル状態を検出する方法であって、
前記命令実行ユニットによって現在実行されている命令および次に実行される予定の命令が存在しない命令なし状態を検出するステップ（ａ）と、
前記命令実行ユニットがリードデータを待っているリード待ち状態を検出するステップ（ｂ）と、
前記命令なし状態および前記リード待ち状態のうち少なくとも１つが検出された場合に、前記プロセッサがアイドル状態であると判定するステップ（ｃ）とを備える
ことを特徴とするアイドル状態検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサのアイドル状態を検出する回路および方法に関する。
【背景技術】
【０００２】
近年、プロセッサの高速化はますます進展しており、それに伴いプロセッサの動作電力は大きくなってきている。しかし、携帯電話等のモバイルデバイスは電池で動作するので、長時間の連続使用を可能とするためには、消費電力を低く抑える必要がある。また、モバイルデバイス以外においても放熱の問題などもあり、いかにしてプロセッサの電力を抑えるかが現在のＬＳＩ設計において、非常に重要な課題となっている。プロセッサの消費電力を抑えるための有効な手段の１つとして、プロセッサの動作周波数を下げるという手法がある。しかし、当然のことながら動作周波数を下げるということはプロセッサの処理性能を下げるということであり、単純に周波数を下げた場合には製品の性能低下を招いてしまう。
【０００３】
一方、プロセッサの動作状況を詳しく調べてみると、キャッシュミス（データキャッシュミスや命令キャッシュミス）が発生している場合、プロセッサは、アイドル状態（命令を実行できずに待機している状態）になっていることがわかる。すなわち、プロセッサは、外部に要求したメモリアクセスが完了するまで、処理を再開することができない。一般的に、キャッシュミスが発生した場合、外部メモリからデータを取得するために、長時間（例えば、数十〜数百サイクル）を要する。また、プロセッサがアイドル状態である期間にプロセッサの動作周波数を下げても（または、プロセッサへのクロック供給を停止しても）、ユーザに与える影響は極めて小さい。したがって、プロセッサのアイドル状態を検出してプロセッサの動作周波数を低下させることにより、実使用上の性能を劣化させることなく、プロセッサの消費電力を低減することが可能となる。
【０００４】
従来、プロセッサのクロック制御方法に関して、さまざまな方式が提案されており、その一例としてプロセッサの使用率に着目したクロック制御方法がある（例えば、特許文献１など）。特許文献１に開示されたクロック制御方法では、単位時間当たりのプロセッサの実行命令数と、単位時間当たりのクロックサイクル数とが取得され、クロックサイクル数に対する実行命令数の割合（命令実行数／クロックサイクル数）が所定値よりも小さくなった場合に、プロセッサの動作周波数が低下する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３８２９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のクロック制御方法では、キャッシュミスやＩ／Ｏアクセス回数が多くなるほど、外部メモリアクセスやＩ／Ｏアクセスに要するサイクル数が大きくなり、（実行命令数／サイクル数）が非常に小さくなってしまう。その結果、プロセッサの使用率が誤って低いと判定されてしまう可能性がある。このように、プロセッサの使用率を正確に判定することができない。すなわち、従来の技術では、プロセッサのアイドル状態を正確に検出することが困難であった。
【０００７】
そこで、この発明は、プロセッサのアイドル状態を正確に検出できる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
この発明の１つの局面に従うと、アイドル状態検出回路は、パイプライン処理により命令を実行する命令実行ユニットと、上記命令実行ユニットによって利用される命令およびデータを格納する一次キャッシュとを備えるプロセッサのアイドル状態を検出する回路であって、上記命令実行ユニットによって現在実行されている命令および次に実行される予定の命令が存在しない命令なし状態を検出する実行命令検出部と、上記命令実行ユニットがリードデータを待っているリード待ち状態を検出するリード待ち検出部と、上記命令なし状態および上記リード待ち状態のうち少なくとも１つが検出された場合に、上記プロセッサがアイドル状態であると判定する判定部とを備える。上記アイドル状態検出回路では、キャッシュミスに起因するプロセッサのアイドル状態を正確に検出できる。
【０００９】
また、上記アイドル状態検出回路は、ライトバッファ監視部をさらに備え、上記一次キャッシュは、上記命令実行ユニットによって利用される命令およびデータをそれぞれ格納する命令キャッシュおよびデータキャッシュと、上記命令実行ユニットによって生成されたライトデータを格納するライトバッファとを含み、上記ライトバッファ監視部は、上記ライトバッファが満杯であるバッファ満杯状態を検出し、上記判定部は、上記命令なし状態，上記リード待ち状態，および上記バッファ満杯状態のうち少なくとも１つが検出された場合に、上記プロセッサがアイドル状態であると判定しても良い。このように構成することにより、ライトバッファが満杯であることに起因するプロセッサのアイドル状態を正確に検出できる。
【００１０】
この発明の別の局面に従うと、半導体集積回路は、上記アイドル状態検出回路と、上記プロセッサと、上記プロセッサを駆動させるためのクロックおよび駆動電圧を上記プロセッサに供給するものであり、上記判定部によって上記プロセッサがアイドル状態であると判定された場合に、上記クロックの周波数および上記駆動電圧の電圧値のうち少なくとも１つを低下させる駆動回路とを備える。上記半導体集積回路では、プロセッサにおける電力浪費を低減できる。
【００１１】
または、半導体集積回路は、上記アイドル状態検出回路と、上記プロセッサと、駆動回路とを備え、上記アイドル状態検出回路は、上記プロセッサがアイドル状態であると判定されている期間に相当するクロックサイクル数をカウントするアイドルカウンタと、上記アイドルカウンタによってカウントされたクロックサイクル数が規定クロックサイクル数とを比較する比較部とをさらに備え、上記駆動回路は、上記プロセッサを駆動させるためのクロックおよび駆動電圧を上記プロセッサに供給するものであり、上記比較部によって上記クロックサイクル数が上記規定クロックサイクル数よりも多いと判定された場合に、上記クロックの周波数および上記駆動電圧の電圧値のうち少なくとも１つを低下させても良い。上記半導体集積回路では、プロセッサがアイドル状態である期間においてプロセッサの消費電力を確実に低下させることができる。
【００１２】
この発明の別の局面に従うと、アイドル状態検出方法は、パイプライン処理により命令を実行する命令実行ユニットと、上記命令実行ユニットによって利用される命令およびデータを格納する一次キャッシュとを備えるプロセッサのアイドル状態を検出する方法であって、上記命令実行ユニットによって現在実行されている命令および次に実行される予定の命令が存在しない命令なし状態を検出するステップ（ａ）と、上記命令実行ユニットがリードデータを待っているリード待ち状態を検出するステップ（ｂ）と、上記命令なし状態および上記リード待ち状態のうち少なくとも１つが検出された場合に、上記プロセッサがアイドル状態であると判定するステップ（ｃ）とを備える。上記アイドル状態検出方法では、キャッシュミスに起因するプロセッサのアイドル状態を正確に検出できる。
【発明の効果】
【００１３】
以上のように、キャッシュミスに起因するプロセッサのアイドル状態を正確に検出できる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１による半導体集積回路の構成例を示す図。
【図２】図１に示した半導体集積回路を備えるプログラム実行装置について説明するための図。
【図３】プロセッサのパイプライン処理について説明するための図。
【図４】命令キャッシュミスについて説明するための図。
【図５】データキャッシュミスについて説明するための図。
【図６】実施形態２による半導体集積回路の構成例を示す図。
【図７】実施形態３による半導体集積回路の構成例を示す図。
【発明を実施するための形態】
【００１５】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【００１６】
（実施形態１）
図１は、実施形態１による半導体集積回路１の構成例を示す。半導体集積回路１は、プロセッサ１１と、データメモリ１２と、命令メモリ１３と、キー入力Ｉ／Ｆ１４と、画像Ｉ／Ｆ１５と、外部Ｉ／Ｆ１６と、アイドル状態検出回路１０と、クロック供給部１７と、電圧供給部１８とを備える。プロセッサ１１は、パイプライン処理によって種々の命令を実行する。データメモリ１２は、データを格納する。命令メモリ１３は、命令を格納する。アイドル状態検出回路１０は、プロセッサ１１のアイドル状態を検出する。図２のように、半導体集積回路１は、キーボード２００，マウス３００，ディスプレイ４００，および外部記憶装置５００などの周辺デバイスを含むプログラム実行装置（信号処理装置）の一部として利用される。キー入力Ｉ／Ｆ１４は、キーボード２００およびマウス３００に接続され、画像Ｉ／Ｆ１５および外部Ｉ／Ｆ１６は、それぞれ、ディスプレイ４００および外部記憶装置５００に接続される。
【００１７】
〔プログラム実行手順〕
ここで、プロセッサ１１によるプログラムの実行手順について簡単に説明する。プロセッサ１１は、プログラムを実行するために、自己の内部に設けられたプログラムカウンタ（図示せず）が示す命令アドレスに格納された命令を転送することを命令メモリ１３に要求する。命令メモリ１３は、プロセッサ１１からの要求に応答して、命令アドレスに格納された命令をプロセッサ１１に転送する。次に、プロセッサ１１は、命令メモリ１３から転送された命令を実行し、次に必要となる命令を転送することを命令メモリ１３に要求する。このようにして、プロセッサ１１は、プログラムを実行していく。
【００１８】
また、プロセッサ１１がデータメモリ１２や周辺デバイス（例えば、キーボード２００，マウス３００，ディスプレイ４００，および外部記憶装置５００など）からデータを読み出す場合、プロセッサ１１は、データメモリ１２や、インターフェイス（例えば、キー入力Ｉ／Ｆ１４，画像Ｉ／Ｆ１５，および外部Ｉ／Ｆ１６など）を介して周辺デバイスにデータ要求を通知する。例えば、プロセッサ１１は、命令メモリ１３から転送された命令に従って、その命令によって示されたアドレスに格納されたデータを転送することをデータメモリ１２や周辺デバイスに要求する。データメモリ１２や周辺デバイスは、プロセッサ１１からのデータ要求に応答して、プロセッサ１１に要求されたデータをプロセッサ１１に転送する。
【００１９】
一方、プロセッサ１１がデータメモリ１２や周辺デバイスにデータを書き込む場合、プロセッサ１１は、書き込むべきデータとそのデータを書き込むべきアドレスとをデータメモリ１２や周辺デバイスに転送する。データメモリ１２や周辺デバイスは、プロセッサ１１から転送されたデータをプロセッサ１１によって指定されたアドレスに格納する。
【００２０】
使用者は、キーボード２００やマウス３００を用いて各種操作を実行する。キーボード２００やマウス３００に対して実行された操作内容は、キー入力Ｉ／Ｆ１４を介してプロセッサ１１に通達される。また、使用者は、プロセッサ１１による処理結果などを、画像Ｉ／Ｆを介して接続されたディスプレイ４００で確認する。
【００２１】
〔プロセッサ〕
図１に戻って、プロセッサ１１は、命令実行ユニット１１０と、一次キャッシュ１１１とを含む。一次キャッシュ１１１は、命令キャッシュ１１２と、データキャッシュ１１３と、ライトバッファ１１４と、バスＩ／Ｆ１１５とを含む。命令実行ユニット１１０は、パイプライン処理により命令を処理するものであり、複数のパイプラインステージを有する。命令キャッシュ１１２は、命令実行ユニット１１０によって利用される命令を格納する。データキャッシュ１１３は、命令実行ユニット１１０によって利用されるデータを格納する。ライトバッファ１１４は、命令実行ユニット１１０によって生成されたライトデータを格納する。ライトデータは、データメモリ１２や外部記憶装置５００に書き込まれる予定のデータである。バスＩ／Ｆ１１５は、命令キャッシュ１１２およびライトバッファ１１４と、データメモリ１２，命令メモリ１３，キー入力Ｉ／Ｆ１４，画像Ｉ／Ｆ１５および外部Ｉ／Ｆ１６との間で命令（またはデータ）の受け渡しを実行する。
【００２２】
〔パイプライン処理〕
次に、図３を参照しつつ、プロセッサ１１によるパイプライン処理について説明する。ここでは、説明の簡潔化のために、５段パイプライン処理を実行する場合を例に挙げて説明するが、６段以上のパイプライン処理を実行するプロセッサやスーパースカラプロセッサ（superscalar processor）の場合も基本動作は同様である。
【００２３】
図３において、縦軸は、プログラムの実行順序を示し、上から下に向かって命令１，命令２，…，命令６が実行される。横軸は、クロックサイクルを示し、左から右に向かって時間が経過する（図４，図５についても同様である）。また、ステップＦＥ，ＤＥ，ＥＸ，ＭＥＭ，ＷＢの各々において、次のような処理が実行される。
【００２４】
ＦＥ…フェッチステージ：命令の読み込み（フェッチ）
ＤＥ…デコードステージ：命令のデコード
ＥＸ…実行ステージ：命令の演算
ＭＥＭ…メモリアクセスステージ：メモリへのアクセス
ＷＢ…ライトバックステージ：演算結果の書き戻し
プロセッサがある１つの命令を実行する場合、ステップＦＥ，ＤＥ，ＥＸ，ＭＥＭ，ＷＢが順番に実行される。１つの命令に対してこの５つのステップのすべてが完了してから次の命令の実行を開始する場合、１つの命令を完了するために必要なサイクル数が“５サイクル”になってしまう。一方、図１に示したプロセッサ１１は、図３のようなパイプライン処理によって命令を実行する。すなわち、クロックサイクルＣ１において命令１に対してステップＦＥが実行された後、クロックサイクルＣ２において命令１に対してステップＤＥが実行されると同時に命令２に対してステップＦＥが実行される。このようにして、命令１，命令２，…，命令６が順次処理され、クロックサイクルＣ５では、命令１，命令２，命令３，命令４，命令５に対してステップＷＢ，ＭＥＭ，ＥＸ，ＤＥ，ＦＥがそれぞれ同時に実行される。また、クロックサイクルＣ５において命令１が完了し、クロックサイクルＣ６，Ｃ７，…，Ｃ１０の各々において命令２，命令３，…，命令６が１つずつ順番に完了していく。
【００２５】
また、上述のようにクロックサイクル毎に１つの命令を完了させるためには、メモリ（例えば、外部記憶装置５００）へのアクセスが必要となるステップＦＥ，ＭＥＭを１サイクルで完了させる必要がある。しかし、一般的に、メモリへのアクセスには２サイクル以上の時間を要してしまう。そこで、図１に示したプロセッサ１１には、アクセス時間の短縮のために、命令キャッシュ１１２およびデータキャッシュ１１３が設けられている。
【００２６】
〔キャッシュミス〕
図１に示したプロセッサ１１において、キャッシュヒットした場合（命令キャッシュ１１２（データキャッシュ１１３）に命令実行ユニット１１０が必要とする命令（データ）が格納されている場合）には、命令実行ユニット１１０は、１サイクルで命令（データ）を読み出すことができるが、キャッシュミスした場合（命令キャッシュ１１２（データキャッシュ１１３）に命令実行ユニット１１０が必要とする命令（データ）が格納されていない場合）には、データメモリ１２，命令メモリ１３，または外部記憶装置５００から必要な命令（データ）を読み出すことになるので、命令実行ユニット１１０の待機時間が長くなってしまう。
【００２７】
《命令キャッシュミス》
次に、図４を参照して、命令２において命令キャッシュミスが発生した場合（命令２が命令キャッシュ１１２に格納されていない場合）について説明する。図４のように、クロックサイクルＣ２において命令２の命令キャッシュミスが発生した場合、外部記憶装置５００から命令２を読み出すために“ｎサイクル”の時間を要するため、命令２に対するステップＦＥは、クロックサイクルＣ２ではなく、クロックサイクルＣｎ＋２に完了することになる。その後、命令２に対してステップＤＥ，ＥＸ，ＭＥＭ，ＷＢが実行され、クロックサイクルＣｎ＋６において命令２が完了する。一方、命令２の処理遅延により、命令３，命令４，…，命令６については、命令２に対するステップＦＥが終わるまで処理が待たされるため、命令３，命令４，…，命令６の完了が遅くなってしまう。例えば、命令３は、クロックサイクルＣ７ではなく、クロックサイクルＣｎ＋７に完了することになる。
【００２８】
このような命令キャッシュミスに起因するペナルティ（処理速度の劣化）を隠蔽するために、プロセッサ１１は、プリフェッチ機能（次に実行されると予想される命令を読み出して命令キャッシュ１１２に事前に格納しておく機能）を有していても良い。
【００２９】
《データキャッシュミス》
次に、図５を参照して、命令２においてデータキャッシュミスが発生した場合（命令２によって要求されているデータがデータキャッシュ１１３に格納されていない場合）について説明する。ここでは、命令２は、ロード命令であるものとする。図５のように、クロックサイクルＣ５において命令２のデータキャッシュミスが発生した場合、外部記憶装置５００からデータ（命令２によって要求されているデータ）を読み出すために“ｎサイクル”の時間を要するため、命令２に対するステップＭＥＭは、クロックサイクルＣ５ではなく、クロックサイクルＣｎ＋５に完了することになる。その後、命令２に対してステップＷＢが実行され、クロックサイクルＣｎ＋６において命令２が完了する。一方、命令２の処理遅延により、命令３，命令４，…，命令６については、命令２に対するステップＭＥＭが終わるまで処理が待たされるため、命令３，命令４，…，命令６の完了が遅くなってしまう。例えば、命令４は、クロックサイクルＣ８ではなく、クロックサイクルＣｎ＋８に完了することになる。
【００３０】
なお、命令２がストア命令である場合、ライトデータが、ライトバッファ１１４に格納される。そのため、命令２においてキャッシュミスが発生したとしても、ライトバッファ１１４が満杯にならない限り、パイプライン処理は乱れない。ただし、ライトバッファ１１４が満杯である場合には、ライトバッファ１１４に格納されたライトデータがデータメモリ１２（または、外部記憶装置５００）に書き込まれてライトバッファ１１４に空きができるまで、プロセッサ１１は、アイドル状態になってしまう。
【００３１】
〔アイドル状態検出回路〕
図１に戻って、アイドル状態検出回路１０は、実行命令検出部１０１と、ライトバッファ監視部１０２と、リード待ち検出部１０３と、判定部１０４とを含む。
【００３２】
《実行命令検出部》
実行命令検出部１０１は、命令実行ユニット１１０の動作を監視し、命令なし状態（命令実行ユニット１１０によって現在実行されている命令および次に実行される予定の命令が存在しない状態）を検出する。例えば、実行命令検出部１０１は、命令なし状態である場合には、検出信号Ｓ１０１を“０”に設定し、命令なし状態ではない場合には、検出信号Ｓ１０１を“１”に設定する。
【００３３】
命令キャッシュミスが発生している場合、命令実行ユニット１１０の各パイプラインステージには命令が充填されていない（すなわち、命令なし状態である）ので、実行命令検出部１０１は、検出信号Ｓ１０１を“０”に設定する。一方、命令キャッシュミスが発生していない場合、命令実行ユニット１１０の各パイプラインステージには命令が充填されている（すなわち、命令なし状態ではない）ので、実行命令検出部１０１は、検出信号Ｓ１０１を“１”に設定する。
【００３４】
《ライトバッファ監視部》
ライトバッファ監視部１０２は、ライトバッファ１１４の格納状態を監視し、バッファ満杯状態（ライトバッファ１１４が満杯である状態）を検出する。例えば、ライトバッファ監視部１０２は、ライトバッファ１１４が満杯である場合には、検出信号Ｓ１０２を“１”に設定し、ライトバッファ１１４が満杯ではない場合には、検出信号Ｓ１０２を“０”に設定する。
【００３５】
《リード待ち検出部》
リード待ち検出部１０３は、バスＩ／Ｆ１１５の動作を監視し、リード待ち状態（命令実行ユニット１１０がリードデータを待っている状態）を検出する。ここでは、リードデータは、データメモリ１２または外部記憶装置５００から転送されるデータ（プロセッサ１１による要求に応答して、データメモリ１２または外部記憶装置５００がプロセッサ１１に転送するデータ）である。例えば、リード待ち検出部１０３は、リード待ち状態である場合には、検出信号Ｓ１０３を“１”に設定し、リード待ち状態ではない場合には、検出信号Ｓ１０３を“０”に設定する。
【００３６】
データキャッシュミスが発生している場合、命令実行ユニット１１０はリード待ち状態であるので、リード待ち検出部１０３は、検出信号Ｓ１０３を“１”に設定する。一方、データキャッシュミスが発生していない場合、命令実行ユニット１１０はリード待ち状態ではないので、リード待ち検出部１０３は、検出信号Ｓ１０３を“０”に設定する。
【００３７】
《判定部》
判定部１０４は、命令なし状態，バッファ満杯状態，およびリード待ち状態のうち少なくとも１つが検出された場合に、プロセッサ１１がアイドル状態であると判定する。例えば、判定部１０４は、検出信号Ｓ１０１，Ｓ１０２，Ｓ１０３がそれぞれ“１”“０”“０”である場合にはアイドル状態通知信号Ｓ１０を“０”に設定し、それ以外の場合にはアイドル状態通知信号Ｓ１０を“１”に設定する。アイドル状態通知信号Ｓ１０が“０”に設定されることにより、プロセッサ１１が処理を実行中である（すなわち、アイドル状態ではない）ことがわかる。命令キャッシュミスが発生している場合、検出信号Ｓ１０１が“０”に設定されるので、判定部１０４は、アイドル状態通知信号Ｓ１０を“１”に設定する。また、データキャッシュミスが発生している場合、検出信号Ｓ１０３が“１”に設定されるので、判定部１０４は、アイドル状態通知信号Ｓ１０を“１”に設定する。さらに、ライトバッファ１１４が満杯である場合、検出信号Ｓ１０２が“１”に設定されるので、判定部１０４は、アイドル状態通知信号Ｓ１０を“１”に設定する。アイドル状態通知信号Ｓ１０が“１”に設定されることにより、プロセッサ１１がアイドル状態であることがわかる。
【００３８】
以上のように、実行命令検出部１０１による検出結果（検出信号Ｓ１０１）およびリード待ち検出部１０３による検出結果（検出信号Ｓ１０３）に応じてアイドル状態通知信号Ｓ１０を変化させることにより、キャッシュミス（命令キャッシュミス，データキャッシュミス）やＩ／Ｏアクセスが頻発する場合であっても、キャッシュミスに起因するプロセッサ１１のアイドル状態を正確に検出できる。特に、プロセッサ１１がプリフェッチ機能を有している場合であっても、キャッシュミスに起因するプロセッサ１１のアイドル状態を正確に検出できる。
【００３９】
また、ライトバッファ監視部１０２による検出結果（検出信号Ｓ１０２）に応じてアイドル状態通知信号Ｓ１０を変化させることにより、ライトバッファ１１４が満杯であることに起因するプロセッサ１１のアイドル状態を正確に検出できる。なお、アイドル状態検出回路１０は、ライトバッファ監視部１０２を含んでいなくても良い。
【００４０】
〔クロック供給部，電圧供給部〕
クロック供給部１７は、プロセッサ１１（詳しくは、命令実行ユニット１１０および一次キャッシュ１１１）を駆動させるためのクロックＣＬＫ１を供給する。また、クロック供給部１７は、アイドル状態通知信号Ｓ１０が“０”から“１”に変化した場合には、クロックＣＬＫ１の周波数を低下させ、アイドル状態通知信号Ｓ１０が“１”から“０”に変化した場合には、クロックＣＬＫ１の周波数を元に戻す。
【００４１】
電圧供給部１８は、プロセッサ１１（詳しくは、命令実行ユニット１１０および一次キャッシュ１１１）を駆動させるための駆動電圧ＶＤＤ１を供給する。また、電圧供給部１８は、アイドル状態通知信号Ｓ１０が“０”から“１”に変化した場合には、駆動電圧ＶＤＤ１の電圧値を低下させ、アイドル状態通知信号Ｓ１０が“１”から“０”に変化した場合には、駆動電圧ＶＤＤ１の電圧値を元に戻す。
【００４２】
以上のように、クロック供給部１７および電圧供給部１８が、それぞれ、アイドル状態通知信号Ｓ１０に応答してクロックＣＬＫ１の周波数および駆動電圧ＶＤＤ１の電圧値を低下させることにより、プロセッサ１１がアイドル状態である期間においてプロセッサ１１の消費電力を低下させることができる。これにより、プロセッサ１１における電力浪費を低減できる。特に、アイドル状態通知信号Ｓ１０が“１”に設定されている期間が長いほど、電力削減効果が顕著になる。例えば、外部記憶装置５００のアクセス時間が非常に長い場合に、特に有効である。なお、クロックＣＬＫ１の周波数および駆動電圧ＶＤＤ１の電圧値のいずれか一方を低下させた場合でも、プロセッサ１１の電力浪費を低減することは可能である。
【００４３】
（実施形態２）
図６は、実施形態２による半導体集積回路２の構成例を示す。半導体集積回路２は、図１に示したプロセッサ１１に代えて、プロセッサ２１，クロック供給部２２，および電圧供給部２３を備える。プロセッサ２１は、図１に示したプロセッサ１１の構成に加えて、二次キャッシュ２１１を備える。その他の構成は、図１と同様である。
【００４４】
二次キャッシュ２１１は、プロセッサ１１によって利用される命令およびデータを格納する。ここでは、リードデータは、二次キャッシュ２１１，データメモリ１２，または外部記憶装置５００から転送されるデータ（プロセッサ１１による要求に応答して、二次キャッシュ２１１，データメモリ１２，または外部記憶装置５００がプロセッサ１１に転送するデータ）である。また、二次キャッシュ２１１のレイテンシは、一次キャッシュ１１１の命令キャッシュ１１２およびデータキャッシュ１１３のレイテンシよりも大きい。例えば、二次キャッシュ２１１へのアクセスに、２クロックサイクル以上の時間を要する。
【００４５】
クロック供給部２２は、二次キャッシュ２１１を駆動させるためのクロックＣＬＫ２を供給する。電圧供給部２３は、二次キャッシュ２１１を駆動させるための駆動電圧ＶＤＤ２を供給する。なお、アイドル状態通知信号Ｓ１０が変化したとしても、クロック供給部２２および電圧供給部２３は、それぞれ、クロックＣＬＫ２の周波数および駆動電圧ＶＤＤ２の電圧値を変化させない。すなわち、二次キャッシュ２１１の性能（動作速度）が低下しない。なお、クロックＣＬＫ１および駆動電圧ＶＤＤ１は、命令実行ユニット１１０および一次キャッシュ１１１に供給される。
【００４６】
クロックＣＬＫ２および駆動電圧ＶＤＤ２の代わりにクロックＣＬＫ１および駆動電圧ＶＤＤ１が二次キャッシュ２１１に供給される場合、二次キャッシュ２１１へのアクセスが発生している際にアイドル状態通知信号Ｓ１０が“１”に設定されると、二次キャッシュ２１１のアクセス処理中に二次キャッシュ２１１の性能が低下してしまうことになる。一方、図６に示した半導体集積回路２では、アイドル状態通知信号Ｓ１０が“１”に設定されたとしても二次キャッシュ２１１の性能は低下しないので、二次キャッシュ２１１へのアクセスが発生している際に二次キャッシュ２１１の性能が低下してしまうことを防止できる。このように、プロセッサ１１がアイドル状態である場合に、二次キャッシュ２１１の性能を劣化させることなく、プロセッサ１１の消費電力を低下させることができる。
【００４７】
なお、クロック供給部２２および電圧供給部２３を設けずに、クロックＣＬＫ１および駆動電圧ＶＤＤ１を二次キャッシュ２１１に供給しても良い。また、プロセッサ２１は、二次キャッシュ２１１だけでなく、三次キャッシュを含んでいても良い。この場合、クロックＣＬＫ２および駆動電圧ＶＤＤ２を三次キャッシュに供給しても良い。
【００４８】
（実施形態３）
図７は、実施形態３による半導体集積回路３の構成例を示す。半導体集積回路３は、図１に示したアイドル状態検出回路１０に代えて、アイドル状態検出回路３０を備える。アイドル状態検出回路３０は、図１に示したアイドル状態検出回路１０の構成に加えて、アイドルカウンタ３０１および比較部３０２を含む。その他の構成は、図１と同様である。
【００４９】
アイドルカウンタ３０１は、アイドル状態通知信号Ｓ１０が“１”に設定されている期間に相当するクロックサイクル数をカウントする。例えば、アイドルカウンタ３０１は、アイドル状態通知信号Ｓ１０が“０”から“１”に変化するとカウントアップを開始し、アイドル状態通知信号Ｓ１０が“１”から“０”に変化するとカウントアップを終了する。比較部３０２は、アイドルカウンタ３０１のカウント値（クロックサイクル数）と規定クロックサイクル数ＣＸとを比較しアイドルカウンタ３０１のカウント値が規定クロックサイクル数ＣＸよりも多くなった場合に、アイドル状態通知信号Ｓ３０を“１”に設定する。
【００５０】
クロック供給部１７および電圧供給部１８は、それぞれ、アイドル状態通知信号Ｓ１０の代わりにアイドル状態通知信号Ｓ３０に応答して、クロックＣＬＫ１の周波数および駆動電圧ＶＤＤ１の電圧値を変化させる。
【００５１】
アイドル状態通知信号Ｓ１０は、クロックサイクル毎に変化する可能性がある。また、クロック供給部１７によってクロックＣＬＫ１の周波数を変化させるためには、１クロックサイクルよりも多くの時間を要する。そのため、図１に示した半導体集積回路１では、クロック供給部１７は、アイドル状態通知信号Ｓ１０の変化に追従してクロックＣＬＫ１の周波数を変化させることができない可能性がある。電圧供給部１８も同様に、アイドル状態通知信号Ｓ１０の変化に追従して駆動電圧ＶＤＤ１の電圧値を変化させることができない可能性がある。一方、図７に示した半導体集積回路３では、アイドルカウンタ３０１のカウント値が規定クロックサイクル数ＣＸよりも多くなった場合に、アイドル状態通知信号Ｓ３０が“１”に設定されるので、クロックＣＬＫ１の周波数および駆動電圧ＶＤＤ１の電圧値を確実に変化させることができる。これにより、プロセッサ１１がアイドル状態である期間においてプロセッサ１１の消費電力を確実に低下させることができる。
【００５２】
なお、規定クロックサイクル数ＣＸは、固定値であっても良いし、任意に設定可能な値であっても良い。例えば、設定レジスタ等を設けて使用者によって規定クロックサイクル数ＣＸを自由に設定できるようにしても良い。また、半導体集積回路３は、図７に示したプロセッサ１１に代えて、図６に示したプロセッサ２１，クロック供給部２２，および電圧供給部２３を備えていても良い。
【産業上の利用可能性】
【００５３】
以上説明したように、上述のアイドル状態検出回路は、キャッシュミスに起因するプロセッサのアイドル状態を正確に検出できるので、プロセッサの低電力化技術などに有用である。
【符号の説明】
【００５４】
１，２，３    半導体集積回路
１０，３０    アイドル状態検出回路
１１，２１    プロセッサ
１２    データメモリ
１３    命令メモリ
１４    キー入力Ｉ／Ｆ
１５    画像Ｉ／Ｆ
１６    外部Ｉ／Ｆ
１７，２１    クロック供給部
１８，２２    電圧供給部
１０１    実行命令検出部
１０２    ライトバッファ監視部
１０３    リード待ち検出部
１０４    判定信号生成部
１１０    命令実行ユニット
１１１    一次キャッシュ
１１２    命令キャッシュ
１１３    データキャッシュ
１１４    ライトバッファ
１１５    バスＩ／Ｆ
２１１    二次キャッシュ
【図１】
2011044072.tif 000003
【図２】
2011044072.tif 000004
【図３】
2011044072.tif 000005
【図４】
2011044072.tif 000006
【図５】
2011044072.tif 000007
【図６】
2011044072.tif 000008
【図７】
2011044072.tif 000009