(57)【特許請求の範囲】
【請求項１】
制御信号に応じて、出力するクロック信号の周波数を変化させるクロック生成回路と、
前記クロック信号に応じて動作する演算回路と、
前記演算回路からのアクセスに応じ、活性化される記憶回路と、
前記記憶回路に対する前記演算回路のアクセス回数を検出し、前記アクセス回数が増えた場合に要求信号を出力するメモリアクセス検出部と、
前記要求信号に応じて、前記クロック信号の周波数を下げるための前記制御信号を生成するクロック制御回路と、を備え、
前記メモリアクセス検出部は、
前記アクセス回数から計算される指数の変化量と、第２の基準値とを比較し、前記指数の変化量の値が、前記第２の基準値を超えた場合、前記要求信号として第２の要求信号を出力する第２の比較器を備え、
前記クロック制御回路は、
前記第２の要求信号に応じて、所定の期間に出力されるクロック数を下限値まで減らすための第２の制御信号を前記制御信号として生成する第２のクロック調整部を備える半導体装置。
【請求項２】
前記下限値が設定可能であることを特徴とする請求項１に記載の半導体装置。
【請求項３】
制御信号に応じて、出力するクロック信号の周波数を変化させるクロック生成回路と、
前記クロック信号に応じて動作する演算回路と、
前記演算回路からのアクセスに応じ、活性化される記憶回路と、
前記記憶回路に対する前記演算回路のアクセス回数を検出し、前記アクセス回数が増えた場合に要求信号を出力するメモリアクセス検出部と、
前記要求信号に応じて、前記クロック信号の周波数を下げるための前記制御信号を生成するクロック制御回路と、を備え、
前記メモリアクセス検出部は、
前記アクセス回数から計算される指数と、第１の基準値とを比較し、前記指数の値が、前記第１の基準値を超えた場合、前記要求信号として第１の要求信号を出力する第１の比較器と、
前記指数の変化量と、第２の基準値とを比較し、前記指数の変化量の値が、前記第２の基準値を超えた場合、前記要求信号として第２の要求信号を出力する第２の比較器と、を備え、
前記クロック制御回路は、
前記第１の要求信号に応じて、所定の期間に出力されるクロック数を段階的に減らすための第１の制御信号を前記制御信号として生成する第１のクロック調整部と、
前記第２の要求信号に応じて、前記所定の期間に出力されるクロック数を下限値まで減らすための第２の制御信号を前記制御信号として生成する第２のクロック調整部と、を備える半導体装置。
【請求項４】
前記第１の要求信号と、前記第２の要求信号とが、前記メモリアクセス検出部から同時に出力された場合、
前記クロック制御回路は、前記第２の要求信号を優先することを特徴とする請求項３に記載の半導体装置。
【請求項５】
制御信号に応じて、出力するクロック信号の周波数を変化させるクロック生成回路と、
前記クロック信号に応じて動作する演算回路と、
前記演算回路からのアクセスに応じ、活性化される記憶回路と、
前記記憶回路に対する前記演算回路のアクセス回数を検出し、前記アクセス回数が増えた場合に要求信号を出力するメモリアクセス検出部と、
前記要求信号に応じて、前記クロック信号の周波数を下げるための前記制御信号を生成するクロック制御回路と、を備え、
前記メモリアクセス検出部は、前記アクセス回数から計算される指数と、第１の基準値とを比較し、前記指数の値が、前記第１の基準値を超えた場合、前記要求信号として第１の要求信号を出力する第１の比較器を備え、
前記記憶回路として第１及び第２の記憶回路を備え、
前記指数は、前記第１の記憶回路へのアクセス回数と前記第１の記憶回路に対して定められた重みとの積と、前記第２の記憶回路へのアクセス回数と前記第２の記憶回路に対して定められた重みとの積と、に基づいて定められる半導体装置。
【請求項６】
前記第１及び第２の記憶回路は、それぞれ複数のブロックを備え、
前記メモリアクセス検出部は、前記複数のブロックのそれぞれへのアクセス回数を検出することを特徴とする請求項５に記載の半導体装置。
【請求項７】
前記重みは、前記複数のブロックのそれぞれへの１回のアクセスに要する電流値に応じた値であることを特徴とする請求項６に記載の半導体装置。
【請求項８】
前記演算回路を複数備えることを特徴とする請求項１〜７のいずれか一項に記載の半導体装置。
【請求項９】
前記記憶回路は、キャッシュメモリであることを特徴とする請求項１〜８のいずれか一項に記載の半導体装置。
【請求項１０】
請求項１〜９のいずれか一項に記載の半導体装置を備えた無線通信端末。
【請求項１１】
クロック信号に応じて動作する演算回路と、
前記演算回路からのアクセスに応じ活性化される記憶回路と、を備える半導体装置へ供給する前記クロック信号のクロック周波数制御方法であって、
前記記憶回路に対する前記演算回路のアクセス回数を検出するステップと、
前記アクセス回数が増えた場合に、前記クロック信号の周波数を下げるステップと、を備え、
前記アクセス回数から計算される指数の変化量と、第２の基準値とを比較し、
前記アクセス回数が増えることにより、前記指数の変化量の値が、前記第２の基準値を超えた場合に、所定の期間に出力されるクロック数を下限値まで減らすことで前記クロック信号の周波数を下げる、
クロック周波数制御方法。
【請求項１２】
所定の期間に出力されるクロック数を下限値まで減らした後、前記指数の変化量の値が前記第２の基準値以内であれば、前記所定の期間に出力されるクロック数を段階的に増やすことを特徴とする請求項１１に記載のクロック周波数制御方法。
【請求項１３】
前記所定の期間に出力されるクロック数を１つずつ増やすことを特徴とする請求項１２に記載のクロック周波数制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、それを用いた無線通信端末、及びクロック周波数制御方法に関する。
【背景技術】
【０００２】
近年、複数の機能を提供可能な回路を一つの半導体チップに集積したＳｏＣ（System- on-a-Chip）技術が開発されている。さらに、このＳｏＣ技術を用いた半導体装置において、ＣＰＵ（Central Processing Unit）のマルチコア化や動作クロック信号の周波数が上昇する傾向にある。
【０００３】
ところで、特許文献１〜３には、例えばＣＰＵなどの稼働率が低い場合に、動作クロック信号の周波数を低減することにより、消費電力を低減する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２１９２３７号公報
【特許文献２】特開平１１−１８４５５４号公報
【特許文献３】特開２００３−１４０７６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願の発明者等は、半導体装置の開発に際し、様々な課題を見出した。本願で開示される各実施の形態は、例えば無線通信端末等に好適な半導体装置を提供する。さらに詳細な特徴は、本明細書の記述及び添付図面によって明らかにされる。
【課題を解決するための手段】
【０００６】
本明細書に開示される一つの態様は半導体装置を含み、当該半導体装置はメモリアクセス検出部を有する。
【発明の効果】
【０００７】
本発明により、例えば無線通信端末等に好適であって、良質な半導体装置を提供することができる。
【図面の簡単な説明】
【０００８】
【図１Ａ】無線通信端末５００の構成例を示す外観図である。
【図１Ｂ】無線通信端末５００の構成例を示す外観図である。
【図２】実施の形態１に係る電子装置６００の構成例を示すブロック図である。
【図３】実施の形態１に係る半導体装置１及び電源供給装置２を含むシステムを示すブロック図である。
【図４】マルチコアプロセッサ１１、メモリアクセス検出部１２、クロック制御回路１４及びクロック生成回路１５の関係をより詳細に示した図である。
【図５】命令キャッシュメモリＩＣ０の拡大図である。
【図６】メモリアクセス検出部１２の内部構成を示すブロック図である。
【図７】ステートマシンＳＭの回路図である。
【図８】カウンタＣＮＴ０の回路図である。
【図９】加算回路ＡＤＤの回路図である。
【図１０】デジタル比較器ＣＭＰ１の回路図である。
【図１１】デジタル比較器ＣＭＰ２の回路図である。
【図１２】クロック制御回路１４の拡大図である。
【図１３Ａ】デジタル信号ｄ［２：０］とデジタル信号ｄｉｖ０［４：０］との対応表である。
【図１３Ｂ】５ビットのデジタル信号ｄｉｖ１［４：０］が取り得る値を示す表である。
【図１３Ｃ】デジタル信号ｄｉｖ２［４：０］とパルス有効信号ｃｐｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］との対応表である。
【図１４Ａ】第１クロック調整部３１によるクロック周波数制御を示すグラフである。
【図１４Ｂ】第２クロック調整部３２によるクロック周波数制御を示すグラフである。
【図１５】周波数設定回路ＤＩＶの回路図である。
【図１６】周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの一例である。
【図１７】周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの他の例である。
【図１８】周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの他の例である。
【図１９】周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの他の例である。
【図２０】クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
【図２１】実施の形態２に係るメモリアクセス検出部１２の回路図である。
【図２２】実施の形態２に係るクロック制御回路１４の拡大図である。
【図２３】クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
【図２４】実施の形態３に係るメモリアクセス検出部１２の回路図である。
【図２５】実施の形態３に係るクロック制御回路１４の拡大図である。
【図２６】クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
【図２７】実施の形態４に係るクロック制御回路１４の拡大図である。
【図２８】実施の形態５に係るシングルコアプロセッサ１１１、メモリアクセス検出部１２、クロック制御回路１４及びクロック生成回路１５の関係を詳細に示した図である。
【発明を実施するための形態】
【０００９】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【００１０】
＜発明の実施の形態１＞
まず、図１Ａ、１Ｂ及び２を参照して、本実施の形態に係る半導体装置が適用される電子機器として好適な無線通信端末の概要について説明する。図１Ａ及び１Ｂは、無線通信端末５００の構成例を示す外観図である。なお、図１Ａ、１Ｂ及び２の構成例では、無線通信端末５００が折り畳み式の携帯電話端末である場合について示している。しかしながら、無線通信端末５００は、スマートフォン、携帯ゲーム端末、タブレットＰＣ（Personal Computer）、ノートＰＣ等のその他の無線通信端末であってもよい。また、当然のことながら、本実施の形態に係る半導体装置は、無線通信端末以外に適用することも可能である。
【００１１】
図１Ａは、折り畳み式携帯電話端末としての無線通信端末５００の閉状態（折り畳み状態）を示している。図１Ｂは、無線通信端末５００の開状態を示している。無線通信端末５００は、第１の筐体５０１と第２の筐体５０２がヒンジ５０３を介して連結された構造を有する。図１Ａ及び１Ｂの例では、第１の筐体５０１には複数の操作ボタンが配置されている。一方、第２の筐体５０２は、２つのディスプレイデバイス２０Ａ及び３０Ａと、２つのカメラデバイス２０Ｂ及び３０Ｂを有する。ディスプレイデバイス２０Ａ及び３０Ａは、ＬＣＤ（Liquid Crystal Display）、又はＯＬＥＤ（Organic Light-Emitting Diode）ディスプレイ等である。
【００１２】
ディスプレイデバイス２０Ａは、その表示面が第２の筐体５０２の内側の主面（前面）に位置するように配置されている。つまり、ディスプレイデバイス２０Ａは、開状態とされた無線通信端末５００をユーザーが操作する際に当該ユーザーによって視認されるメインディスプレイである。一方、ディスプレイデバイス３０Ａは、その表示面が第２の筐体５０２の外側の主面（背面）に位置するように配置されたサブディスプレイである。
【００１３】
カメラデバイス２０Ｂは、そのレンズユニットが第２の筐体５０２の外側の主面（背面）に位置するように配置されたメインカメラである。一方、カメラデバイス３０Ｂは、そのレンズユニットが第２の筐体５０２の内側の主面（前面）に位置するように配置されたサブカメラである。
【００１４】
続いて、図２を参照して、本発明に係る半導体装置が搭載される電子装置６００の構成について説明する。図２は、本発明の実施の形態１に係る電子装置６００の構成例を示すブロック図である。電子装置６００は、例えば、図１Ａ、１Ｂに示した無線通信端末５００の内部に搭載される。図２に示すように、電子装置６００は、アプリケーションプロセッサ６０１、ベースバンドプロセッサ６０２、ＲＦ（Radio Frequency）サブシステム６０３、メモリ６０４、バッテリ６０５、パワーマネジメントＩＣ（ＰＭＩＣ：Power Management Integrated Circuit）６０６、表示部６０７、カメラ部６０８、操作入力部６０９、オーディオＩＣ６１０、マイク６１１、スピーカ６１２を含む。
【００１５】
アプリケーションプロセッサ６０１は、メモリ６０４に格納されたプログラムを読み出して、電子装置６００の各種機能を実現するための処理を行う。例えば、アプリケーションプロセッサ６０１は、メモリ６０４からＯＳ（Operating System）プログラムを実行すると共に、このＯＳプログラムを動作基板とするアプリケーションプログラムを実行する。
【００１６】
ベースバンドプロセッサ６０２は、電子端末が送受信するデータに対して符号化（例えば、畳み込み符号やターボ符号等の誤り訂正符号化）処理又は復号化処理等を含むベースバンド処理を行う。より具体的には、ベースバンドプロセッサ６０２は、送信データをアプリケーションプロセッサ６０１から受け取り、受け取った送信データに対して符号化処理を施して、ＲＦサブシステム６０３に送信する。また、ベースバンドプロセッサ６０２は、ＲＦサブシステム６０３から受信データを受け取り、受け取った受信データに対して復号化処理を施してアプリケーションプロセッサ６０１に送信する。
【００１７】
ＲＦサブシステム６０３は、電子装置６００が送受信するデータに対する変調処理又は復調処理を行う。より具体的には、ＲＦサブシステム６０３は、ベースバンドプロセッサ６０２から受け取った送信データを搬送波により変調処理して送信信号を生成し、アンテナを介して送信信号を出力する。また、ＲＦサブシステム６０３は、アンテナを介して受信信号を受信し、受信信号を搬送波により復調処理して受信データを生成し、当該受信データをベースバンドプロセッサ６０２に送信する。
【００１８】
メモリ６０４は、アプリケーションプロセッサ６０１により利用されるプログラム及びデータを格納する。また、メモリ６０４は、電源が遮断されても記憶したデータを保持する不揮発性メモリと、電源が遮断された場合に記憶したデータがクリアされる揮発性メモリを含む。
【００１９】
バッテリ６０５は、電池であり、電子装置６００が外部電源によらずに動作する場合に利用される。なお、電子装置６００は、外部電源が接続されている場合においてもバッテリ６０５の電源を利用してもよい。また、バッテリ６０５としては、二次電池を利用することが好ましい。
【００２０】
パワーマネジメントＩＣ６０６は、バッテリ６０５又は外部電源から内部電源を生成する。この内部電源は、電子装置６００の各ブロックに与えられる。このとき、パワーマネジメントＩＣ６０６は、内部電源の供給を受けるブロック毎に内部電源の電圧を制御する。パワーマネジメントＩＣ６０６は、アプリケーションプロセッサ６０１からの指示に基づき内部電源の電圧制御を行う。さらに、パワーマネジメントＩＣ６０６は、ブロックごとに内部電源の供給と遮断とを制御することもできる。また、パワーマネジメントＩＣ６０６は、外部電源の供給がある場合、バッテリ６０５への充電制御も行う。
【００２１】
表示部６０７は、例えば、液晶表示装置であって、アプリケーションプロセッサ６０１における処理に従い様々な画像を表示する。表示部６０７において表示される画像には、ユーザーが電子装置６００に動作指示を与えるユーザーインタフェース画像、カメラ画像、動画等が表される。
【００２２】
カメラ部６０８は、アプリケーションプロセッサからの指示に従い、画像を取得する。操作入力部６０９は、ユーザーが操作して電子装置６００に操作指示を与えるユーザーインタフェースである。オーディオＩＣ６１０は、アプリケーションプロセッサ６０１から送信される音声データをデコードしてスピーカ６１２を駆動すると共に、マイク６１１から得た音声情報をエンコードして音声データを生成し、当該音声データをアプリケーションプロセッサ６０１に出力する。
【００２３】
次に、本実施の形態に係る半導体装置について説明する。
図３は、実施の形態１に係る半導体装置１及び電源供給装置２を含むシステムを示すブロック図である。ここで、図３に示す半導体装置１は、例えば図２に示すアプリケーションプロセッサ６０１に対応し、図３に示す電源供給装置２は図２に示すパワーマネジメントＩＣ６０６に対応している。
【００２４】
図３に示す半導体装置１は、マルチコアプロセッサ１１、メモリアクセス検出部１２、内部電源制御回路１３、クロック制御回路１４、クロック生成回路１５、周辺回路１６を有する。ここで、半導体装置１は、例えばＳｏＣである。
【００２５】
マルチコアプロセッサ１１は、複数のコア、コア毎に設けられた１次キャッシュメモリ、複数のコアに共有される２次キャッシュメモリを備え、様々な演算処理を実施する。また、マルチコアプロセッサ１１にはクロック生成回路１５から出力されたクロック信号ｃｐｕｃｋが供給される。マルチコアプロセッサ１１は、内部バスＩＢを介して、他の回路とのデータ送受信が可能である。なお、マルチコアプロセッサ１１の詳細については、図４を用いて後述する。
【００２６】
メモリアクセス検出部１２は、所定時間毎にマルチコアプロセッサ１１内の各コアが１次キャッシュメモリへアクセスする際に出力されるイネーブル信号ｃｅｎ及び２次キャッシュメモリへアクセスする際に出力されるイネーブル信号ｌ２ｃｅｎの活性化回数（活性化率）、つまりアクセス回数を検出する。そして、メモリアクセス検出部１２は、イネーブル信号ｃｅｎ、ｌ２ｃｅｎの活性化回数に基づき、マルチコアプロセッサ１１における予想消費電流量を算出する。この予想消費電流量が所定の基準値を超えた場合、メモリアクセス検出部１２は、マルチコアプロセッサ１１に供給されるクロック信号ｃｐｕｃｋの周波数の低減を要求するための要求信号ｐｓｒｅｑ１をクロック制御回路１４に対し出力する。また、この予想消費電流量の変化量が所定の基準値を超えた場合も、メモリアクセス検出部１２は、マルチコアプロセッサ１１に供給されるクロック信号ｃｐｕｃｋの周波数の低減を要求するための要求信号ｐｓｒｅｑ２をクロック制御回路１４に対し出力する。なお、メモリアクセス検出部１２の詳細については、図６を用いて後述する。
【００２７】
図３に示すように、ここで、マルチコアプロセッサ１１及びメモリアクセス検出部１２は、同じ電源電圧が供給されるＣＰＵ電源領域９０に含まれている。ＣＰＵ電源領域９０には、電源供給装置２から端子１７を介して高電位側の電源電圧ＶＤＤが供給される。また、ＣＰＵ電源領域９０は、スイッチであるトランジスタＴＲを介して低電位側の電源（例えばグランド）に接続されている。すなわち、トランジスタＴＲがオン状態（導通状態）となった場合、マルチコアプロセッサ１１及びメモリアクセス検出部１２に電源が供給される。ＣＰＵ電源領域９０に供給される電源のオン・オフ、つまりトランジスタＴＲのオン・オフは、内部電源制御回路１３から出力される制御信号ｐｗｅｎによって制御される。
【００２８】
内部電源制御回路１３は、マルチコアプロセッサ１１の電源のオン・オフを制御するための制御信号ｐｗｅｎをトランジスタＴＲのゲートに出力する。また、クロック制御回路１４に対し、マルチコアプロセッサ１１へのクロック供給を要求する要求信号ｃｐｕｃｋｒｅｑを出力する。内部電源制御回路１３は、内部バスＩＢと接続されている。なお、内部バスＩＢには、クロック生成回路１５から出力されたクロック信号ｉｂｃｋが供給される。
【００２９】
クロック制御回路１４は、クロック生成回路１５を制御するための回路である。クロック制御回路１４は、内部バスＩＢと接続されている。クロック制御回路１４は、定期的に、メモリアクセス検出部１２が活性化率を検出するための実行信号ｃｈｅｃｋをメモリアクセス検出部１２に対し出力する。また、クロック制御回路１４は、メモリアクセス検出部１２から出力された要求信号ｐｓｒｅｑ１やｐｓｒｅｑ２に応じた分周制御信号ｄｉｖをクロック生成回路１５に対し出力する。さらに、クロック制御回路１４は、内部電源制御回路１３から出力された要求信号ｃｐｕｃｋｒｅｑに応じた停止制御信号ｓｔｐをクロック生成回路１５に対し出力する。つまり、内部電源制御回路１３から要求信号ｃｋｒｅｑが出力された場合、クロック制御回路１４は、クロック信号ｃｐｕｃｋの停止を解除する停止制御信号ｓｔｐを出力する。これにより、クロック生成回路１５はクロック信号ｃｐｕｃｋの出力を開始する。
【００３０】
クロック生成回路１５は、マルチコアプロセッサ１１に供給されるクロック信号ｃｐｕｃｋ、内部バスＩＢに供給されるクロック信号ｉｂｃｋ、クロック制御回路１４に供給されるクロック信号ｃｃｃｋを生成するための回路である。また、クロック生成回路１５は、クロック制御回路１４から出力された分周制御信号ｄｉｖに基づいて、マルチコアプロセッサ１１へ供給されるクロック信号ｃｐｕｃｋの周波数を変更することができる。さらに、クロック生成回路１５は、クロック制御回路１４から出力された停止制御信号ｓｔｐに基づいて、各クロック信号の出力を停止もしくは開始する。なお、クロック制御回路１４及びクロック生成回路１５の詳細については後述する。
【００３１】
周辺回路１６は、マルチコアプロセッサ１１により利用される回路である。周辺回路１６としては、例えば、タイマユニット、ウォッチドッグタイマユニット、ＤＭＡ（Direct Memory Access）ユニット、低電圧検出ユニット、パワーオンリセット（ＰＯＲ）ユニット等が挙げられる。周辺回路１６は、内部バスＩＢを介して、マルチコアプロセッサ１１と接続されている。
【００３２】
このように、本実施の形態に係る半導体装置１は、各コアから各メモリ領域へのアクセス回数を検出し、マルチコアプロセッサ１１の消費電流量を予想することができるメモリアクセス検出部１２を備えている。そのため、この予想消費電流量もしくはその変化量が所定の基準値を超えた場合、自動的にマルチコアプロセッサ１１へ供給されるクロック信号ｃｐｕｃｋの周波数の低減することができる。従って、許容電流量を超えることによる誤動作を防止することができる。また、消費電流の急増に伴う電圧ドロップを効果的に抑制することができる。
【００３３】
ここで、本実施の形態では、プロセッサが、マルチコアプロセッサであるが、実施の形態５において後述するように、本発明はシングルコアプロセッサに適用することも可能である。他方、マルチコアプロセッサでは、複数のコアの稼働率が同時に高くなるケースはまれである。そのため、このようなケースに合わせて許容電流量を大きくするのは、大型化やコストアップにつながり、好ましくない。
【００３４】
本実施の形態では、許容電流量を大きくすることなく、複数のコアの稼働率が同時に高くなる場合にのみ、一時的にプロセッサへ供給するクロック信号の周波数の低減し、消費電流量を抑制することができる。すなわち、本発明は、マルチコアプロセッサ用途に好適であるといえる。
【００３５】
次に、電源供給装置２について説明する。電源供給装置２は、レギュレータ２１と電圧設定回路２２とを有する。電源供給装置２は、例えば電源用のＬＳＩである。レギュレータ２１は、電圧設定回路２２から出力された制御信号に応じて、端子２３に出力する電圧を調整することができる。レギュレータ２１から出力された電源電圧は、端子２３を介して半導体装置１の端子１７に供給される。
【００３６】
電圧設定回路２２は、例えば、半導体装置１からのフィードバック信号に応じて、レギュレータ２１から出力される電圧を調整する（不図示）。また、半導体装置１の端子１７と電源供給装置２の端子２３との間には、バイパスコンデンサＣ１が設けられている。
【００３７】
次に、図４を参照して、マルチコアプロセッサ１１、メモリアクセス検出部１２、クロック制御回路１４及びクロック生成回路１５について、より詳細に説明する。図４は、マルチコアプロセッサ１１、メモリアクセス検出部１２、クロック制御回路１４及びクロック生成回路１５の関係をより詳細に示した図である。
【００３８】
まず、マルチコアプロセッサ１１の内部構成について説明する。図４に示すように、マルチコアプロセッサ１１は、２つのプロセッサエレメントＰＥ０、ＰＥ１、メモリコントローラＬ２ＣＣ、２次キャッシュメモリＬ２Ｃを備えている。
【００３９】
ここで、プロセッサエレメントＰＥ０は、コアＣＰＵ０、メモリコントローラＩＣＣ０、ＤＣＣ０、命令キャッシュメモリＩＣ０、データキャッシュメモリＤＣ０を備えている。同様に、プロセッサエレメントＰＥ１は、コアＣＰＵ１、メモリコントローラＩＣＣ１、ＤＣＣ１、命令キャッシュメモリＩＣ１、データキャッシュメモリＤＣ１を備えている。
【００４０】
図４に示すように、マルチコアプロセッサ１１内部の各構成要素（コアＣＰＵ０、ＣＰＵ１、メモリコントローラＩＣＣ０、ＩＣＣ１、ＤＣＣ０、ＤＣＣ１、Ｌ２ＣＣ、命令キャッシュメモリＩＣ０、ＩＣ１、データキャッシュメモリＤＣ０、ＤＣ１、２次キャッシュメモリＬ２Ｃ）には、クロック生成回路１５から出力されたＣＰＵクロック信号ｃｐｕｃｋが入力されている。つまり、各構成要素は、ＣＰＵクロック信号ｃｐｕｃｋに応じて動作している。
【００４１】
コアＣＰＵ０は、プロセッサエレメントＰＥ０において核となる演算回路である。コアＣＰＵ０は、メモリコントローラＩＣＣ０を介して、命令キャッシュメモリＩＣ０に格納された命令を読み出す。具体的には、コアＣＰＵ０は、メモリコントローラＩＣＣ０に対して、命令キャッシュメモリＩＣ０へのアクセス要求を出力する。そして、メモリコントローラＩＣＣ０により活性化された命令キャッシュメモリＩＣ０にアクセスする。
【００４２】
また、コアＣＰＵ０は、メモリコントローラＤＣＣ０を介して、データキャッシュメモリＤＣ０に格納されたデータを読み出す。あるいは、データキャッシュメモリＤＣ０に対してデータを書き込む。具体的には、コアＣＰＵ０は、メモリコントローラＤＣＣ０に対してデータキャッシュメモリＤＣ０へのアクセス要求を出力する。そして、メモリコントローラＤＣＣ０により活性化されたデータキャッシュメモリＤＣ０にアクセスする。
【００４３】
さらに、コアＣＰＵ０は、メモリコントローラＩＣＣ０、命令キャッシュメモリＩＣ０、及びメモリコントローラＬ２ＣＣを介して、２次キャッシュメモリＬ２Ｃへアクセスする。あるいは、メモリコントローラＤＣＣ０、データキャッシュメモリＤＣ０、及びメモリコントローラＬ２ＣＣを介して、２次キャッシュメモリＬ２Ｃへアクセスする。
【００４４】
メモリコントローラＩＣＣ０は、命令キャッシュメモリＩＣ０へのアクセスを制御する制御回路である。メモリコントローラＩＣＣ０は、コアＣＰＵ０のアクセス要求に応じて、命令キャッシュメモリＩＣ０を活性化するためのイネーブル信号ｃｅｎ０１の信号レベルをアクティブレベルへ切り換える。これにより、命令キャッシュメモリＩＣ０が活性化される。
【００４５】
メモリコントローラＤＣＣ０は、データキャッシュメモリＤＣ０へのアクセスを制御する制御回路である。メモリコントローラＤＣＣ０は、コアＣＰＵ０のアクセス要求に応じて、データキャッシュメモリＤＣ０を活性化するためのイネーブル信号ｃｅｎ０２の信号レベルをアクティブレベルへ切り換える。これにより、データキャッシュメモリＤＣ０が活性化される。
【００４６】
命令キャッシュメモリＩＣ０は、１次キャッシュメモリであって、コアＣＰＵ０が比較的頻繁に使用する命令が一時的に格納される揮発性半導体記憶回路である。データキャッシュメモリＤＣ０は、１次キャッシュメモリであって、コアＣＰＵ０が比較的頻繁に使用するデータが一時的に格納される揮発性半導体記憶回路である。命令キャッシュメモリＩＣ０やデータキャッシュメモリＤＣ０などのキャッシュメモリ用途には、ＳＲＡＭ（Static Random Access Memory）が多用される。
【００４７】
ここで、図５は、命令キャッシュメモリＩＣ０の拡大図である。図５に示すように、本実施の形態では、命令キャッシュメモリＩＣ０は、個別に選択（活性化）可能な４つのブロックＢＬ０〜ＢＬ３から構成されている。ここで、ブロックＢＬ０〜ＢＬ３は、それぞれイネーブル信号ｃｅｎ０１［０］〜ｃｅｎ０１［３］により制御されている。
【００４８】
換言すると、イネーブル信号ｃｅｎ０１は、ブロックＢＬ０を選択するためのｃｅｎ０１［０］、ブロックＢＬ１を選択するためのｃｅｎ０１［１］、ブロックＢＬ２を選択するためのｃｅｎ０１［２］、及びブロックＢＬ０を選択するためのｃｅｎ０１［３］から構成される４ビットの信号（ｃｅｎ０１［３：０］）である。このような構成により、必要な命令が格納されたブロックのみが活性化され、消費電力を低減することができる。一般化すると、命令キャッシュメモリＩＣ０が、ｎ（ｎは自然数）個のブロックから構成され、それらが個別に活性化される場合、イネーブル信号ｃｅｎ０１もｎビットとすればよい。なお、ブロック数ｎは任意に設計することができる。
【００４９】
また、本実施の形態では、他のキャッシュメモリ（命令キャッシュメモリＩＣ１、データキャッシュメモリＤＣ０、ＤＣ１、２次キャッシュメモリＬ２Ｃ）についても、命令キャッシュメモリＩＣ０と同様に、個別に選択可能な４つのブロックから構成されている。
【００５０】
コアＣＰＵ１は、プロセッサエレメントＰＥ１において核となる演算回路である。コアＣＰＵ１は、メモリコントローラＩＣＣ１を介して、命令キャッシュメモリＩＣ１に格納された命令を読み出す。具体的には、コアＣＰＵ１は、メモリコントローラＩＣＣ１に対して、命令キャッシュメモリＩＣ１へのアクセス要求を出力する。そして、メモリコントローラＩＣＣ１により活性化された命令キャッシュメモリＩＣ１にアクセスする。
【００５１】
また、コアＣＰＵ１は、メモリコントローラＤＣＣ１を介して、データキャッシュメモリＤＣ１に格納されたデータを読み出す。あるいは、データキャッシュメモリＤＣ１に対してデータを書き込む。具体的には、コアＣＰＵ１は、メモリコントローラＤＣＣ１に対してデータキャッシュメモリＤＣ１へのアクセス要求を出力する。そして、メモリコントローラＤＣＣ１により活性化されたデータキャッシュメモリＤＣ１にアクセスする。
【００５２】
さらに、コアＣＰＵ１は、メモリコントローラＩＣＣ１、命令キャッシュメモリＩＣ１、及びメモリコントローラＬ２ＣＣを介して、２次キャッシュメモリＬ２Ｃへアクセスする。あるいは、メモリコントローラＤＣＣ１、データキャッシュメモリＤＣ１、及びメモリコントローラＬ２ＣＣを介して、２次キャッシュメモリＬ２Ｃへアクセスする。
【００５３】
メモリコントローラＩＣＣ１は、命令キャッシュメモリＩＣ１へのアクセスを制御する制御回路である。メモリコントローラＩＣＣ１は、コアＣＰＵ１のアクセス要求に応じて、命令キャッシュメモリＩＣ１を活性化するためのイネーブル信号ｃｅｎ１１の信号レベルをアクティブレベルへ切り換える。これにより、命令キャッシュメモリＩＣ１が活性化される。
【００５４】
メモリコントローラＤＣＣ１は、データキャッシュメモリＤＣ１へのアクセスを制御する制御回路である。メモリコントローラＤＣＣ１は、コアＣＰＵ１のアクセス要求に応じて、データキャッシュメモリＤＣ１を活性化するためのイネーブル信号ｃｅｎ１２の信号レベルをアクティブレベルへ切り換える。これにより、データキャッシュメモリＤＣ１が活性化される。
【００５５】
命令キャッシュメモリＩＣ１は、１次キャッシュメモリであって、コアＣＰＵ１が比較的頻繁に使用する命令が一時的に格納される揮発性半導体記憶回路である。データキャッシュメモリＤＣ１は、１次キャッシュメモリであって、コアＣＰＵ１が比較的頻繁に使用するデータが一時的に格納される揮発性半導体記憶回路である。
【００５６】
メモリコントローラＬ２ＣＣは、２次キャッシュメモリＬ２Ｃへのアクセスを制御する制御回路である。メモリコントローラＬ２ＣＣは、コアＣＰＵ１のアクセス要求に応じて、２次キャッシュメモリＬ２Ｃを活性化するためのイネーブル信号ｌ２ｃｅｎの信号レベルをアクティブレベルへ切り換える。これにより、２次キャッシュメモリＬ２Ｃが活性化される。
【００５７】
２次キャッシュメモリＬ２Ｃは、１次キャッシュメモリよりもコアＣＰＵ０、ＣＰＵ１による使用頻度が低い命令やデータが一時的に格納される揮発性半導体記憶回路である。命令キャッシュメモリＩＣ０、ＩＣ１やデータキャッシュメモリＤＣ０、ＤＣ１などの１次キャッシュメモリと同様に、２次キャッシュメモリＬ２ＣにもＳＲＡＭが多用される。
【００５８】
次に、メモリアクセス検出部１２について説明する。図４に示すように、メモリアクセス検出部１２には、命令キャッシュメモリＩＣ０、ＩＣ１、データキャッシュメモリＤＣ０、ＤＣ１、２次キャッシュメモリＬ２Ｃを活性化するためのイネーブル信号ｃｅｎ０１、ｃｅｎ０２、ｃｅｎ１１、ｃｅｎ１２、ｌ２ｃｅｎが入力されている。メモリアクセス検出部１２は、入力されたイネーブル信号ｃｅｎ０１、ｃｅｎ０２、ｃｅｎ１１、ｃｅｎ１２、ｌ２ｃｅｎの活性化回数（活性化率）、つまりアクセス回数を検出する。そして、メモリアクセス検出部１２は、このアクセス回数に基づき、マルチコアプロセッサ１１における予想消費電流量を算出する。このメモリアクセス検出部１２における処理は、クロック制御回路１４が出力する実行信号ｃｈｅｃｋに応じて繰り返し実行される。
【００５９】
ここで、図６を用いて、メモリアクセス検出部１２について詳細に説明する。図６は、メモリアクセス検出部１２の内部構成を示すブロック図である。図６に示すように、メモリアクセス検出部１２は、ステートマシンＳＭ、２０個のカウンタＣＮＴ０〜ＣＮＴ１９、加算回路ＡＤＤ、レジスタＲＥＧ１、ＲＥＧ２、デジタル比較器ＣＭＰ１、ＣＭＰ２を備えている。
【００６０】
ステートマシンＳＭは、実行信号ｃｈｅｃｋ及びクロック信号ｃｐｕｃｋから、ステート信号ａｄｄｓｔ１、ａｄｄｓｔ２、ｃｍｐｓｔ１、ｃｍｐｓｔ２を生成する。
【００６１】
ここで、図７は、ステートマシンＳＭの回路図である。図７に示すように、ステートマシンＳＭは、５個のＤフリップフロップＤＦ１〜ＤＦ５、ＡＮＤゲートＡＮ１を備えている。全てのＤフリップフロップＤＦ１〜ＤＦ５のクロック入力にはクロック信号ｃｐｕｃｋが入力されている。ＤフリップフロップＤＦ１のデータ入力には、実行信号ｃｈｅｃｋが入力されている。
【００６２】
ＡＮＤゲートＡＮ１の一方入力には、実行信号ｃｈｅｃｋが入力され、他方入力にはＤフリップフロップＤＦ１の非反転出力信号の反転信号（つまり、ＤフリップフロップＤＦ１の反転出力信号に同じ）が入力される。ここで、実行信号ｃｈｅｃｋは、クロック信号ｃｐｕｃｋと同期した信号であって、クロック信号ｃｐｕｃｋの整数倍の周期を有している。また、ＤフリップフロップＤＦ１の非反転出力信号は、実行信号ｃｈｅｃｋがクロック信号ｃｐｕｃｋの周期分だけ遅延した信号である。そのため、ＡＮＤゲートＡＮ１の出力信号として、実行信号ｃｈｅｃｋの立ち上がりからクロック信号ｃｐｕｃｋの周期分だけＨレベルになる信号が得られる。
【００６３】
ＤフリップフロップＤＦ２のデータ入力には、ＡＮＤゲートＡＮ１の出力信号が入力されている。ＤフリップフロップＤＦ２の非反転出力信号は、ステート信号ａｄｄｓｔ１である。ステート信号ａｄｄｓｔ１は、ＡＮＤゲートＡＮ１の出力信号がクロック信号ｃｐｕｃｋの周期分だけ遅延した信号である。
【００６４】
ＤフリップフロップＤＦ３のデータ入力には、ステート信号ａｄｄｓｔ１が入力されている。ＤフリップフロップＤＦ３の非反転出力信号は、ステート信号ａｄｄｓｔ２である。ステート信号ａｄｄｓｔ２は、ステート信号ａｄｄｓｔ１がクロック信号ｃｐｕｃｋの周期分だけ遅延した信号である。
【００６５】
ＤフリップフロップＤＦ４のデータ入力には、ステート信号ａｄｄｓｔ２が入力されている。ＤフリップフロップＤＦ４の非反転出力信号は、ステート信号ｃｍｐｓｔ１である。ステート信号ｃｍｐｓｔ１は、ステート信号ａｄｄｓｔ２がクロック信号ｃｐｕｃｋの周期分だけ遅延した信号である。
【００６６】
ＤフリップフロップＤＦ５のデータ入力には、ステート信号ｃｍｐｓｔ１が入力されている。ＤフリップフロップＤＦ５の非反転出力信号は、ステート信号ｃｍｐｓｔ２である。ステート信号ｃｍｐｓｔ２は、ステート信号ｃｍｐｓｔ１がクロック信号ｃｐｕｃｋの周期分だけ遅延した信号である。
【００６７】
図６に戻って、カウンタＣＮＴ０は、クロック信号ｃｐｕｃｋ及びステート信号ａｄｄｓｔ１に応じて、イネーブル信号ｃｅｎ０１［０］の活性化回数をカウントする。カウンタＣＮＴ１は、クロック信号ｃｐｕｃｋ及びステート信号ａｄｄｓｔ１に応じて、イネーブル信号ｃｅｎ０１［１］の活性化回数をカウントする。他のカウンタＣＮＴ２〜ＣＮＴ１９も同様に、クロック信号ｃｐｕｃｋ及びステート信号ａｄｄｓｔ１に応じて、それぞれ入力されるイネーブル信号の活性化回数をカウントする。
【００６８】
ここで、カウンタＣＮＴ０〜ＣＮＴ３は、命令キャッシュメモリＩＣ０の４つのブロックのそれぞれに入力されるイネーブル信号ｃｅｎ０１［０］〜ｃｅｎ０１［３］の活性化回数をカウントする。
カウンタＣＮＴ４〜ＣＮＴ７は、データキャッシュメモリＤＣ０の４つのブロックのそれぞれに入力されるイネーブル信号ｃｅｎ０２［０］〜ｃｅｎ０２［３］の活性化回数をカウントする。
【００６９】
カウンタＣＮＴ８〜ＣＮＴ１１は、命令キャッシュメモリＩＣ１の４つのブロックのそれぞれに入力されるイネーブル信号ｃｅｎ１１［０］〜ｃｅｎ１１［３］の活性化回数をカウントする。
カウンタＣＮＴ１２〜ＣＮＴ１５は、データキャッシュメモリＤＣ１の４つのブロックのそれぞれに入力されるイネーブル信号ｃｅｎ１２［０］〜ｃｅｎ１２［３］の活性化回数をカウントする。
【００７０】
カウンタＣＮＴ１６〜ＣＮＴ１９は、２次キャッシュメモリＬ２Ｃの４つのブロックのそれぞれに入力されるイネーブル信号ｌ２ｃｅｎ［０］〜ｌ２ｃｅｎ［３］の活性化回数をカウントする。
カウンタＣＮＴ０〜ＣＮＴ１９は、活性化回数に対してイネーブル信号毎に定められた重みを付加して、それぞれカウント値ｃｎｔ０〜ｃｎｔ１９を出力する。この重みは、メモリアクセス１回毎の値である。この重みは、各キャッシュメモリのライブラリデータから得られるメモリアクセスに対する電流値に基づいて算出することができる。
【００７１】
ここで、図８は、カウンタＣＮＴ０の回路図である。図８に示すように、カウンタＣＮＴ０は、２個のＤフリップフロップＤＦ１１、ＤＦ１２、ＡＮＤゲートＡＮ２、ＯＲゲートＯＲ１、加算器ＡＤ１、２個のセレクタＳＬ１、ＳＬ２を備えている。
【００７２】
両方のＤフリップフロップＤＦ１１、ＤＦ１２のクロック入力にはクロック信号ｃｐｕｃｋが入力されている。ＤフリップフロップＤＦ１１のデータ入力にはイネーブル信号ｃｅｎ０１［０］が入力されている。ＡＮＤゲートＡＮ２の一方入力にはＤフリップフロップＤＦ１１の非反転出力信号が入力されている。ＡＮＤゲートＡＮ２の他方入力にはステート信号ａｄｄｓｔ１の反転信号が入力されている。
【００７３】
ＡＮＤゲートＡＮ２の出力はセレクタＳＬ１の制御信号である。すなわち、ＡＮＤゲートＡＮ２の出力値がＨレベル（「１」）の場合、セレクタＳＬ１の１入力が選択され、ＡＮＤゲートＡＮ２の出力値がＬレベル（「０」）の場合、セレクタＳＬ１の０入力が選択される。ここで、セレクタＳＬ１の０入力には１１ビットのリセット値１１'ｈ０００が入力されている。一方、セレクタＳＬ１の１入力には加算器ＡＤ１の出力が接続されている。加算器ＡＤ１の一方入力には、１１ビットの重み信号ｗｔ０［１０：０］が入力されている。加算器ＡＤ１の他方入力には、カウンタＣＮＴ０のカウント値ｃｎｔ０［１０：０］が入力されている。つまり、加算器ＡＤ１は、重み信号ｗｔ０［１０：０］とカウント値ｃｎｔ０［１０：０］とを加算した値を出力する。
【００７４】
ＯＲゲートＯＲ１の一方入力にはＤフリップフロップＤＦ１１の非反転出力信号が入力されている。ＯＲゲートＯＲ１の他方入力にはステート信号ａｄｄｓｔ１が入力されている。ＯＲゲートＯＲ１の出力はセレクタＳＬ２の制御信号である。すなわち、ＯＲゲートＯＲ１の出力値がＨレベル（「１」）の場合、セレクタＳＬ２の１入力が選択され、ＯＲゲートＯＲ１の出力値がＬレベル（「０」）の場合、セレクタＳＬ２の０入力が選択される。ここで、セレクタＳＬ２の０入力には１１ビットのカウンタＣＮＴ０のカウント値ｃｎｔ０［１０：０］が接続されている。一方、セレクタＳＬ２の１入力にはセレクタＳＬ１の出力信号が接続されている。
【００７５】
次に、カウンタＣＮＴ０の動作について説明する。実行信号ｃｈｅｃｋの立ち上がりに続いてステート信号ａｄｄｓｔ１がＨレベルになる毎に、カウント値ｃｎｔ０はリセットされる。従って、ステート信号ａｄｄｓｔ１がＬレベルの期間がカウント期間である。ステート信号ａｄｄｓｔ１がＬレベルの場合、イネーブル信号ｃｅｎ０１［０］もＬレベルであれば、ＯＲゲートＯＲ１の出力値がＬレベルとなる。そのため、セレクタＳＬ２の０入力に接続されたカウンタＣＮＴ０のカウント値ｃｎｔ０［１０：０］が選択され、現状のカウント値ｃｎｔ０［１０：０］が保持される。
【００７６】
ステート信号ａｄｄｓｔ１がＬレベルの場合に、イネーブル信号ｃｅｎ０１［０］がＨレベルとなると、ＡＮＤゲートＡＮ２の出力値がＨレベルとなる。そのため、セレクタＳＬ１の１入力に接続された加算器ＡＤ１の出力信号が選択される。また、ＯＲゲートＯＲ１の出力値もＨレベルとなる。そのため、セレクタＳＬ２の１入力に接続されたセレクタＳＬ１の出力信号が選択される。つまり、カウンタＣＮＴ０の出力である現状のカウント値ｃｎｔ０［１０：０］に重み信号ｗｔ０［１０：０］を加算したものが新たなカウント値ｃｎｔ０［１０：０］として出力される。つまり、１カウント期間のアクセス回数分だけ重み信号ｗｔ０［１０：０］が加算される。
【００７７】
ステート信号ａｄｄｓｔ１がＨレベルになると、イネーブル信号ｃｅｎ０１［０］の値に関わらず、ＡＮＤゲートＡＮ２の出力値がＬレベル、ＯＲゲートＯＲ１の出力値はＨレベルとなる。そのため、セレクタＳＬ１の０入力に接続されたリセット値１１'ｈ０００が選択される。また、セレクタＳＬ２の１入力に接続されたセレクタＳＬ１の出力信号が選択される。つまり、カウント値ｃｎｔ０［１０：０］の値が、リセット値１１'ｈ０００へリセットされる。その他のカウンタについても、カウンタＣＮＴ０と同様の構成を有し、同様に動作する。
【００７８】
再び図６に戻って、加算回路ＡＤＤは、ステート信号ａｄｄｓｔ１及びａｄｄｓｔ２に応じて、カウンタＣＮＴ０〜ＣＮＴ１９のそれぞれのカウント値ｃｎｔ０［１０：０］〜ｃｎｔ１９［１０：０］を合計し、その結果を合計値ｓｕｍ［１５：０］として出力する。この合計値ｓｕｍ［１５：０］が、予想消費電流量に相当する。
【００７９】
ここで、図９を用いて、加算回路ＡＤＤの詳細について説明する。図９は、加算回路ＡＤＤの回路図である。図９に示すように、加算回路ＡＤＤは、２１個の加算器ＡＤ１０〜ＡＤ１９、ＡＤ２０〜ＡＤ２４、ＡＤ３０〜３２、ＡＤ４０、ＡＤ４１、ＡＤ５０、７個のＤフリップフロップＤＦ２０〜ＤＦ２４、ＤＦ３０、ＤＦ３１、７個のセレクタＳＬ１０〜ＳＬ１４、ＳＬ２０、ＳＬ２１を備えている。全てのＤフリップフロップＤＦ２０〜ＤＦ２４、ＤＦ３０、ＤＦ３１のクロック入力にはクロック信号ｃｐｕｃｋが入力されている。
【００８０】
加算器ＡＤ１０は、カウンタＣＮＴ０からの１１ビットのカウント値ｃｎｔ０［１０：０］とカウンタＣＮＴ１からの１１ビットのカウント値ｃｎｔ１［１０：０］とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
加算器ＡＤ１１は、カウンタＣＮＴ２からの１１ビットのカウント値ｃｎｔ２［１０：０］とカウンタＣＮＴ３からの１１ビットのカウント値ｃｎｔ３［１０：０］とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
【００８１】
加算器ＡＤ１２は、カウンタＣＮＴ４からの１１ビットのカウント値ｃｎｔ４［１０：０］とカウンタＣＮＴ５からの１１ビットのカウント値ｃｎｔ５［１０：０］とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
加算器ＡＤ１３は、カウンタＣＮＴ６からの１１ビットのカウント値ｃｎｔ６［１０：０］とカウンタＣＮＴ７からの１１ビットのカウント値ｃｎｔ７［１０：０］とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
【００８２】
加算器ＡＤ１４は、カウンタＣＮＴ８からの１１ビットのカウント値ｃｎｔ８［１０：０］とカウンタＣＮＴ９からの１１ビットのカウント値ｃｎｔ９［１０：０］とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
加算器ＡＤ１５は、カウンタＣＮＴ１０からの１１ビットのカウント値ｃｎｔ１０［１０：０］とカウンタＣＮＴ１１からの１１ビットのカウント値ｃｎｔ１１［１０：０］する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
【００８３】
加算器ＡＤ１６は、カウンタＣＮＴ１２からの１１ビットのカウント値ｃｎｔ１２［１０：０］とカウンタＣＮＴ１３からの１１ビットのカウント値ｃｎｔ１３［１０：０］する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
加算器ＡＤ１７は、カウンタＣＮＴ１４からの１１ビットのカウント値ｃｎｔ１４［１０：０］とカウンタＣＮＴ１５からの１１ビットのカウント値ｃｎｔ１５［１０：０］する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
【００８４】
加算器ＡＤ１８は、カウンタＣＮＴ１６からの１１ビットのカウント値ｃｎｔ１６［１０：０］とカウンタＣＮＴ１７からの１１ビットのカウント値ｃｎｔ１７［１０：０］する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
加算器ＡＤ１９は、カウンタＣＮＴ１８からの１１ビットのカウント値ｃｎｔ１８［１０：０］とカウンタＣＮＴ１９からの１１ビットのカウント値ｃｎｔ１９［１０：０］する。ここで、桁上出力ｃｏｕｔと合わせて１２ビットの値を出力する。
【００８５】
加算器ＡＤ２０は、加算器ＡＤ１０からの１２ビットの出力値と加算器ＡＤ１１からの１２ビットの出力値とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１３ビットの値を出力する。
加算器ＡＤ２１は、加算器ＡＤ１２からの１２ビットの出力値と加算器ＡＤ１３からの１２ビットの出力値とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１３ビットの値を出力する。
加算器ＡＤ２２は、加算器ＡＤ１４からの１２ビットの出力値と加算器ＡＤ１５からの１２ビットの出力値とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１３ビットの値を出力する。
加算器ＡＤ２３は、加算器ＡＤ１６からの１２ビットの出力値と加算器ＡＤ１７からの１２ビットの出力値とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１３ビットの値を出力する。
加算器ＡＤ２４は、加算器ＡＤ１８からの１２ビットの出力値と加算器ＡＤ１９からの１２ビットの出力値とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１３ビットの値を出力する。
【００８６】
ステート信号ａｄｄｓｔ１はセレクタＳＬ１０〜ＳＬ１４の制御信号である。すなわち、ステート信号ａｄｄｓｔ１がＨレベル（「１」）の場合、セレクタＳＬ１０〜ＳＬ１４の１入力が選択され、ステート信号ａｄｄｓｔ１がＬレベル（「０」）の場合、セレクタＳＬ１０〜ＳＬ１４の０入力が選択される。ここで、セレクタＳＬ１０の１入力には、加算器ＡＤ２０からの１３ビットの出力値が入力されている。一方、セレクタＳＬ１０の０入力には、セレクタＳＬ１０の出力がデータ入力に接続されたＤフリップフロップＤＦ２０からの非反転出力信号がフィードバックされている。
【００８７】
同様に、セレクタＳＬ１１の１入力には、加算器ＡＤ２１からの１３ビットの出力値が入力されている。一方、セレクタＳＬ１１の０入力には、セレクタＳＬ１１の出力がデータ入力に接続されたＤフリップフロップＤＦ２１からの非反転出力信号がフィードバックされている。
セレクタＳＬ１２の１入力には、加算器ＡＤ２２からの１３ビットの出力値が入力されている。一方、セレクタＳＬ１２の０入力には、セレクタＳＬ１２の出力がデータ入力に接続されたＤフリップフロップＤＦ２２からの非反転出力信号がフィードバックされている。
【００８８】
セレクタＳＬ１３の１入力には、加算器ＡＤ２３からの１３ビットの出力値が入力されている。一方、セレクタＳＬ１３の０入力には、セレクタＳＬ１３の出力がデータ入力に接続されたＤフリップフロップＤＦ２３からの非反転出力信号がフィードバックされている。
セレクタＳＬ１４の１入力には、加算器ＡＤ２４からの１３ビットの出力値が入力されている。一方、セレクタＳＬ１４の０入力には、セレクタＳＬ１４の出力がデータ入力に接続されたＤフリップフロップＤＦ２４からの非反転出力信号がフィードバックされている。
【００８９】
加算器ＡＤ３０は、ＤフリップフロップＤＦ２０からの１３ビットの非反転出力信号とＤフリップフロップＤＦ２１からの１３ビットの非反転出力信号とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１４ビットの値を出力する。
加算器ＡＤ３１は、ＤフリップフロップＤＦ２２からの１３ビットの非反転出力信号とＤフリップフロップＤＦ２３からの１３ビットの非反転出力信号とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１４ビットの値を出力する。
加算器ＡＤ３２は、ＤフリップフロップＤＦ２４からの１３ビットの非反転出力信号と１３ビットの０値１３'ｈ００００とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１４ビットの値を出力する。
【００９０】
加算器ＡＤ４０は、加算器ＡＤ３０からの１４ビットの出力値と加算器ＡＤ３１からの１４ビットの出力値とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１５ビットの値を出力する。
加算器ＡＤ４１は、加算器ＡＤ３２からの１４ビットの出力値と１４ビットの０値１４'ｈ００００とを加算ここで、桁上出力ｃｏｕｔと合わせて１５ビットの値を出力する。
【００９１】
ステート信号ａｄｄｓｔ２はセレクタＳＬ２０、ＳＬ２１の制御信号である。すなわち、ステート信号ａｄｄｓｔ２がＨレベル（「１」）の場合、セレクタＳＬ２０、ＳＬ２１の１入力が選択され、ステート信号ａｄｄｓｔ２がＬレベル（「０」）の場合、セレクタＳＬ２０、ＳＬ２１の０入力が選択される。
【００９２】
ここで、セレクタＳＬ２０の１入力には、加算器ＡＤ４０からの１５ビットの出力値が入力されている。一方、セレクタＳＬ２０の０入力には、セレクタＳＬ２０の出力がデータ入力に接続されたＤフリップフロップＤＦ３０からの非反転出力信号がフィードバックされている。
同様に、セレクタＳＬ２１の１入力には、加算器ＡＤ４１からの１５ビットの出力値が入力されている。一方、セレクタＳＬ２１の０入力には、セレクタＳＬ２１の出力がデータ入力に接続されたＤフリップフロップＤＦ３１からの非反転出力信号がフィードバックされている。
【００９３】
最終的に、加算器ＡＤ５０は、ＤフリップフロップＤＦ３０からの１５ビットの非反転出力信号とＤフリップフロップＤＦ３１からの１５ビットの非反転出力信号とを加算する。ここで、桁上出力ｃｏｕｔと合わせて１６ビットの合計値ｓｕｍ［１５：０］を出力する。この合計値ｓｕｍ［１５：０］が、予想消費電流量に相当する。
【００９４】
次に、加算回路ＡＤＤの動作について説明する。実行信号ｃｈｅｃｋの立ち上がりに続いてステート信号ａｄｄｓｔ１がＨレベルになる毎に、ＤフリップフロップＤＦ２０〜ＤＦ２４がそれよりも前段の加算器による加算値を取り込む。ステート信号ａｄｄｓｔ１に続いてステート信号ａｄｄｓｔ２がＨレベルになる毎に、ＤフリップフロップＤＦ３０、ＤＦ３１がそれよりも前段の加算器による加算値を取り込む。すなわち、このタイミングでこの合計値ｓｕｍ［１５：０］が更新される。他方、ステート信号ａｄｄｓｔ１、ａｄｄｓｔ２がＬレベルの場合、ＤフリップフロップＤＦ２０〜ＤＦ２４、ＤＦ３０、ＤＦ３１からの出力値は変化しないため、加算器ＡＤ５０から出力される合計値ｓｕｍ［１５：０］も保持される。
【００９５】
再び図６に戻って、デジタル比較器ＣＭＰ１は、ステート信号ｃｍｐｓｔ１及びｃｍｐｓｔ２に応じて、加算回路ＡＤＤから出力された合計値ｓｕｍ［１５：０］と、レジスタＲＥＧ１に格納された合計値ｓｕｍの許容最大値ｔｈｍａｘ［１５：０］とを比較する。そして、合計値ｓｕｍ［１５：０］が、許容最大値ｔｈｍａｘ［１５：０］を超えた場合、デジタル比較器ＣＭＰ１は、マルチコアプロセッサ１１に供給されるクロック信号ｃｐｕｃｋの周波数の低減を要求するための要求信号ｐｓｒｅｑ１をクロック制御回路１４に対し出力する。
【００９６】
デジタル比較器ＣＭＰ２は、ステート信号ｃｍｐｓｔ１及びｃｍｐｓｔ２に応じて、加算回路ＡＤＤから出力された合計値ｓｕｍ［１５：０］の変化量と、レジスタＲＥＧ２に格納された合計値ｓｕｍの許容変化量ｔｈｄｅｌ［１５：０］とを比較する。そして、合計値ｓｕｍ［１５：０］の変化量が、許容変化量ｔｈｄｅｌ［１５：０］を超えた場合、デジタル比較器ＣＭＰ１は、マルチコアプロセッサ１１に供給されるクロック信号ｃｐｕｃｋの周波数の低減を要求するための要求信号ｐｓｒｅｑ２をクロック制御回路１４に対し出力する。
【００９７】
ここで、図１０、１１を用いて、デジタル比較器ＣＭＰ１、ＣＭＰ２の詳細について説明する。まず、図１０を用いてデジタル比較器ＣＭＰ１について説明する。図１０は、デジタル比較器ＣＭＰ１の回路図である。図１０に示すように、デジタル比較器ＣＭＰ１は、１個の減算器ＳＢ１、３個のＤフリップフロップＤＦ４０〜ＤＦ４２、３個のセレクタＳＬ３０〜ＳＬ３２を備えている。全てのＤフリップフロップＤＦ４０〜ＤＦ４２のクロック入力にはクロック信号ｃｐｕｃｋが入力されている。
【００９８】
ステート信号ｃｍｐｓｔ１はセレクタＳＬ３０、ＳＬ３１の制御信号である。すなわち、ステート信号ｃｍｐｓｔ１がＨレベル（「１」）の場合、セレクタＳＬ３０、ＳＬ３１の１入力が選択され、ステート信号ｃｍｐｓｔ１がＬレベル（「０」）の場合、セレクタＳＬ３０、ＳＬ３１の０入力が選択される。
【００９９】
ここで、セレクタＳＬ３０の１入力には、許容最大値ｔｈｍａｘ［１５：０］が入力されている。一方、セレクタＳＬ３０の０入力には、セレクタＳＬ３０の出力がデータ入力に接続されたＤフリップフロップＤＦ４０からの非反転出力信号がフィードバックされている。
同様に、セレクタＳＬ３１の１入力には、加算回路ＡＤＤから出力された合計値ｓｕｍ［１５：０］が入力されている。一方、セレクタＳＬ３１の０入力には、セレクタＳＬ３１の出力がデータ入力に接続されたＤフリップフロップＤＦ４１からの非反転出力信号がフィードバックされている。
【０１００】
減算器ＳＢ１は、ＤフリップフロップＤＦ４０の非反転出力信号からＤフリップフロップＤＦ４１の非反転出力信号を減算する。つまり、許容最大値ｔｈｍａｘ［１５：０］から合計値ｓｕｍ［１５：０］を減算する。ここで、減算結果がマイナスになる場合（すなわち、合計値ｓｕｍ［１５：０］が許容最大値ｔｈｍａｘ［１５：０］を超える場合）、桁借出力ｂｏｕｔがＨレベルとなる。一方、減算結果がプラスになる場合、桁借出力ｂｏｕｔがＬレベルとなる。
【０１０１】
ステート信号ｃｍｐｓｔ２はセレクタＳＬ３２の制御信号である。すなわち、ステート信号ｃｍｐｓｔ２がＨレベル（「１」）の場合、セレクタＳＬ３２の１入力が選択され、ステート信号ｃｍｐｓｔ２がＬレベル（「０」）の場合、セレクタＳＬ３２の０入力が選択される。
【０１０２】
ここで、セレクタＳＬ３２の１入力には、減算器ＳＢ１の桁借出力ｂｏｕｔが入力されている。一方、セレクタＳＬ３２の０入力には、セレクタＳＬ３２の出力がデータ入力に接続されたＤフリップフロップＤＦ４２からの非反転出力信号がフィードバックされている。そして、ＤフリップフロップＤＦ４２からの非反転出力信号が、要求信号ｐｓｒｅｑ１である。
【０１０３】
次に、デジタル比較器ＣＭＰ１の動作について説明する。上述の通り実行信号ｃｈｅｃｋの立ち上がりに続いてステート信号ａｄｄｓｔ２がＨレベルになる毎に、加算回路ＡＤＤから出力される合計値ｓｕｍ［１５：０］が更新される。
【０１０４】
ステート信号ａｄｄｓｔ２に続いてステート信号ｃｍｐｓｔ１がＨレベルになる毎に、ＤフリップフロップＤＦ４０が許容最大値ｔｈｍａｘ［１５：０］を、ＤフリップフロップＤＦ４１が更新された合計値ｓｕｍ［１５：０］を取り込む。同時に、減算器ＳＢ１が、取り込まれた許容最大値ｔｈｍａｘ［１５：０］から取り込まれた合計値ｓｕｍ［１５：０］を減算する。
【０１０５】
ステート信号ｃｍｐｓｔ１に続いてステート信号ｃｍｐｓｔ２がＨレベルになる毎に、ＤフリップフロップＤＦ４２が減算器ＳＢ１からの桁借出力ｂｏｕｔの値を取り込む。ここで、桁借出力ｂｏｕｔがＨレベルであれば（すなわち、合計値ｓｕｍ［１５：０］が許容最大値ｔｈｍａｘ［１５：０］を超えていれば）、要求信号ｐｓｒｅｑ１もＨレベルになる。一方、桁借出力ｂｏｕｔがＬレベルであれば（すなわち、合計値ｓｕｍ［１５：０］が許容最大値ｔｈｍａｘ［１５：０］を超えなければ）、要求信号ｐｓｒｅｑ１もＬレベルになる。
【０１０６】
なお、ステート信号ｃｍｐｓｔ１、ｃｍｐｓｔ２がＬレベルの場合、ＤフリップフロップＤＦ４０〜ＤＦ４２からの出力値は変化しないため、要求信号ｐｓｒｅｑ１の値も保持される。
【０１０７】
次に、図１１を用いて、デジタル比較器ＣＭＰ２について説明する。図１１は、デジタル比較器ＣＭＰ２の回路図である。図１１に示すように、デジタル比較器ＣＭＰ２は、２個の減算器ＳＢ２、ＳＢ３、４個のＤフリップフロップＤＦ５０〜ＤＦ５３、４個のセレクタＳＬ４０〜ＳＬ４３を備えている。全てのＤフリップフロップＤＦ５０〜ＤＦ５３のクロック入力にはクロック信号ｃｐｕｃｋが入力されている。
【０１０８】
ステート信号ｃｍｐｓｔ１はセレクタＳＬ４０〜ＳＬ４２の制御信号である。すなわち、ステート信号ｃｍｐｓｔ１がＨレベル（「１」）の場合、セレクタＳＬ４０〜ＳＬ４２の１入力が選択され、ステート信号ｃｍｐｓｔ１がＬレベル（「０」）の場合、セレクタＳＬ４０〜ＳＬ４２の０入力が選択される。
【０１０９】
ここで、セレクタＳＬ４０の１入力には、加算回路ＡＤＤから出力された合計値ｓｕｍ［１５：０］が入力されている。一方、セレクタＳＬ４０の０入力には、セレクタＳＬ４０の出力がデータ入力に接続されたＤフリップフロップＤＦ５０からの非反転出力信号がフィードバックされている。
【０１１０】
減算器ＳＢ２は、加算回路ＡＤＤから出力された合計値ｓｕｍ［１５：０］からＤフリップフロップＤＦ５０の非反転出力信号を減算し、変化量ｄｅｌ［１５：０］を出力する。ここで、ＤフリップフロップＤＦ５０の非反転出力信号は、加算回路ＡＤＤから前回出力された合計値ｌａｓｔｓｕｍ［１５：０］である。従って、変化量ｄｅｌ［１５：０］は、合計値ｓｕｍ［１５：０］の変化量となる。
【０１１１】
セレクタＳＬ４１の１入力には、変化量ｄｅｌ［１５：０］が入力されている。一方、セレクタＳＬ４１の０入力には、セレクタＳＬ４１の出力がデータ入力に接続されたＤフリップフロップＤＦ５１からの非反転出力信号がフィードバックされている。
【０１１２】
セレクタＳＬ４２の１入力には、許容変化量ｔｈｄｅｌ［１５：０］が入力されている。一方、セレクタＳＬ４２の０入力には、セレクタＳＬ４２の出力がデータ入力に接続されたＤフリップフロップＤＦ５２からの非反転出力信号がフィードバックされている。
【０１１３】
減算器ＳＢ３は、ＤフリップフロップＤＦ５２の非反転出力信号からＤフリップフロップＤＦ５１の非反転出力信号を減算する。つまり、許容変化量ｔｈｄｅｌ［１５：０］から変化量ｄｅｌ［１５：０］を減算する。ここで、減算結果がマイナスになる場合（すなわち、変化量ｄｅｌ［１５：０］が許容変化量ｔｈｄｅｌ［１５：０］を超える場合）、桁借出力ｂｏｕｔがＨレベルとなる。一方、減算結果がプラスになる場合、桁借出力ｂｏｕｔがＬレベルとなる。
【０１１４】
ステート信号ｃｍｐｓｔ２はセレクタＳＬ４３の制御信号である。すなわち、ステート信号ｃｍｐｓｔ２がＨレベル（「１」）の場合、セレクタＳＬ４３の１入力が選択され、ステート信号ｃｍｐｓｔ２がＬレベル（「０」）の場合、セレクタＳＬ４３の０入力が選択される。
【０１１５】
ここで、セレクタＳＬ４３の１入力には、減算器ＳＢ３の桁借出力ｂｏｕｔが入力されている。一方、セレクタＳＬ４３の０入力には、セレクタＳＬ４３の出力がデータ入力に接続されたＤフリップフロップＤＦ５３からの非反転出力信号がフィードバックされている。そして、ＤフリップフロップＤＦ５３からの非反転出力信号が、要求信号ｐｓｒｅｑ２である。
【０１１６】
次に、デジタル比較器ＣＭＰ２の動作について説明する。上述の通り実行信号ｃｈｅｃｋの立ち上がりに続いてステート信号ａｄｄｓｔ２がＨレベルになる毎に、加算回路ＡＤＤから出力される合計値ｓｕｍ［１５：０］が更新される。そのため、このタイミングで、減算器ＳＢ２から変化量ｄｅｌ［１５：０］が出力される。
【０１１７】
ステート信号ａｄｄｓｔ２に続いてステート信号ｃｍｐｓｔ１がＨレベルになる毎に、ＤフリップフロップＤＦ５２が許容変化量ｔｈｄｅｌ［１５：０］を、ＤフリップフロップＤＦ５１が減算器ＳＢ２から出力された変化量ｄｅｌ［１５：０］を取り込む。同時に、減算器ＳＢ３が、取り込まれた許容変化量ｔｈｄｅｌ［１５：０］から取り込まれた変化量ｄｅｌ［１５：０］を減算する。なお、このタイミングで、減算器ＳＢ２から出力される変化量ｄｅｌ［１５：０］は０にリセットされる。
【０１１８】
ステート信号ｃｍｐｓｔ１に続いてステート信号ｃｍｐｓｔ２がＨレベルになる毎に、ＤフリップフロップＤＦ５３が減算器ＳＢ３からの桁借出力ｂｏｕｔの値を取り込む。ここで、桁借出力ｂｏｕｔがＨレベルであれば（すなわち、変化量ｄｅｌ［１５：０］が許容変化量ｔｈｄｅｌ［１５：０］を超えていれば）、要求信号ｐｓｒｅｑ２もＨレベルになる。一方、桁借出力ｂｏｕｔがＬレベルであれば（すなわち、変化量ｄｅｌ［１５：０］が許容変化量ｔｈｄｅｌ［１５：０］を超えなければ）、要求信号ｐｓｒｅｑ２もＬレベルになる。
【０１１９】
なお、ステート信号ｃｍｐｓｔ１、ｃｍｐｓｔ２がＬレベルの場合、ＤフリップフロップＤＦ５０〜ＤＦ５３からの出力値は変化しないため、要求信号ｐｓｒｅｑ２の値も保持される。
【０１２０】
図４へ戻り、クロック制御回路１４の内部構成について説明する。図４に示すように、クロック制御回路１４は、レジスタＲＥＧ、デコーダＤＥＣ１、ＤＥＣ２、第１クロック調整部３１、第２クロック調整部３２、タイミング生成回路３３を備えている。
【０１２１】
レジスタＲＥＧは、クロック信号ｃｐｕｃｋの分周比がデジタル信号として格納された記憶回路である。分周比は、内部バスＩＢを介して、マルチコアプロセッサ１１により設定される。分周比は、例えば、通常動作モード、スタンバイモード（低消費電力モード）その他の動作モードに応じて変更され得る。
デコーダＤＥＣ１は、レジスタＲＥＧに格納された分周比のデジタル信号をデコードする。
【０１２２】
第１クロック調整部３１は、メモリアクセス検出部１２からの要求信号ｐｓｒｅｑ１に応じて、デコーダＤＥＣ１から出力された分周比のデジタル信号値を調整する。具体的には、予想消費電流量が所定の基準値を超えたことを意味する要求信号ｐｓｒｅｑ１がアクティブになった場合、第１クロック調整部３１は、デコーダＤＥＣ１から出力された分周比のデジタル信号値を１だけ変更し、出力されるクロック数（つまりクロック周波数）を１段階小さくする。
【０１２３】
第２クロック調整部３２は、メモリアクセス検出部１２からの要求信号ｐｓｒｅｑ２に応じて、第１クロック調整部３１から出力された分周比のデジタル信号値を調整する。具体的には、予想消費電流量の変化量が所定の基準値を超えたことを意味する要求信号ｐｓｒｅｑ２がアクティブになった場合、第２クロック調整部３２は、第１クロック調整部３１から出力された分周比のデジタル信号値を、出力されるクロック数（つまりクロック周波数）が設定可能な限り小さくなるように変更する。
デコーダＤＥＣ２は、第２クロック調整部３２から出力された分周比のデジタル信号値をデコードし、分周制御信号ｄｉｖとしてクロック生成回路１５の周波数設定回路ＤＩＶに対し出力する。
【０１２４】
ここで、図１２は、クロック制御回路１４の拡大図である。図１２を用いて、クロック制御回路１４の具体例についてより詳細に説明する。
タイミング生成回路３３は、クロック信号ｃｃｃｋから実行信号ｃｈｅｃｋを生成している。実行信号ｃｈｅｃｋは、クロック信号ｃｃｃｋを整数倍することにより得られる長周期のクロック信号である。実行信号ｃｈｅｃｋの立ち上がりや立ち下がりに合わせて、本発明に係るクロック周期制御に関する一連の処理が繰り返し実行される。実行信号ｃｈｅｃｋの周期は、電流変動を平滑化するためのバイパスコンデンサＣ１の時定数内に、クロック周期をフィードバック制御できるように、決定される必要がある。
【０１２５】
レジスタＲＥＧには分周比を示す３ビットのデジタル信号ｄ［２：０］が格納されている。図１３Ａは、デジタル信号ｄ［２：０］と後述するデジタル信号ｄｉｖ０［４：０］との対応表である。図１３Ａには、デジタル信号ｄ［２：０］の値と分周比との対応も示されている。本実施の形態では、分周比として１、２、４、８、１６が設定可能であり、それぞれが３ビットのデジタル信号ｄ［２：０］の値として、３'ｈ０、３'ｈ１、３'ｈ２、３'ｈ３、３'ｈ４に対応している。
【０１２６】
デコーダＤＥＣ１は、レジスタＲＥＧに格納された分周比を示す３ビットのデジタル信号ｄ［２：０］を５ビットのデジタル信号ｄｉｖ０［４：０］へ変換する。図１３Ａに示すように、分周比１の場合、クロック数が１６／１６となるため、５ビットのデジタル信号としては５'ｈ１０が割り当てられている。分周比２の場合、クロック数が８／１６となるため、５ビットのデジタル信号としては５'ｈ０８が割り当てられている。分周比４の場合、クロック数が４／１６となるため、５ビットのデジタル信号としては５'ｈ０４が割り当てられている。分周比８の場合、クロック数が２／１６となるため、５ビットのデジタル信号としては５'ｈ０２が割り当てられている。そして、分周比１６の場合、クロック数が１／１６となるため、５ビットのデジタル信号としては５'ｈ０１が割り当てられている。
【０１２７】
第１クロック調整部３１は、要求信号ｐｓｒｅｑ１がアクティブになった場合、入力されたデジタル信号ｄｉｖ０［４：０］の値を１だけ小さくしたデジタル信号ｄｉｖ１［４：０］を出力する。図１３Ｂは、５ビットのデジタル信号ｄｉｖ１［４：０］が取り得る値を示す表である。図１３Ｂに示すように、デジタル信号ｄｉｖ１［４：０］は、１７通りのクロック数０／１６〜１６／１６に対応するデジタル値５'ｈ００〜５'ｈ１０を取り得る。
【０１２８】
ここで、図１４Ａは、第１クロック調整部３１によるクロック周波数制御を示すグラフである。図１４Ａでは、設定分周比が１の場合を示している。そのため、図１２におけるデコーダＤＥＣ１から出力された５ビットのデジタル信号ｄｉｖ０［４：０］の値は、５'ｈ１０である。図１４Ａに示すように、要求信号ｐｓｒｅｑ１がアクティブになった場合、第１クロック調整部３１は、５'ｈ１０よりも値が１小さい５'ｈ０Ｆをデジタル信号ｄｉｖ１［４：０］として出力する。要求信号ｐｓｒｅｑ１がアクティブの状態が続けば、第１クロック調整部３１は、前回よりも１小さい値のデジタル信号ｄｉｖ１［４：０］を出力し続ける。但し、下限値は５'ｈ００である。
【０１２９】
他方、要求信号ｐｓｒｅｑ１がインアクティブの場合、第１クロック調整部３１は、前回よりも１大きい値のデジタル信号ｄｉｖ１［４：０］を出力する。但し、上限は設定分周比に対応するデジタル信号ｄｉｖ０［４：０］である。そのため、図１４Ａに示すように、デジタル信号ｄｉｖ１［４：０］が上限値（５'ｈ１０）の状態において、要求信号ｐｓｒｅｑ１がインアクティブの場合、デジタル信号ｄｉｖ１［４：０］の値は、上限値（５'ｈ１０）に維持される。
【０１３０】
第２クロック調整部３２は、要求信号ｐｓｒｅｑ２がアクティブになった場合、入力されたデジタル信号ｄｉｖ１［４：０］の値を設定可能な範囲で最小としたデジタル信号ｄｉｖ２［４：０］を出力する。図１３Ｂは、５ビットのデジタル信号ｄｉｖ２［４：０］が取り得る値も、デジタル信号ｄｉｖ１［４：０］とともに示している。図１３Ｂに示すように、デジタル信号ｄｉｖ２［４：０］は、１７通りのクロック数０／１６〜１６／１６に対応するデジタル値５'ｈ００〜５'ｈ１０を取り得る。
【０１３１】
ここで、図１４Ｂは、第２クロック調整部３２によるクロック周波数制御を示すグラフである。図１４Ｂでは、設定分周比が１の場合を示している。そのため、図１２におけるデコーダＤＥＣ１から出力された５ビットのデジタル信号ｄｉｖ０［４：０］の値は、５'ｈ１０である。要求信号ｐｓｒｅｑ２がアクティブになった場合、第２クロック調整部３２は、デジタル信号ｄｉｖ２［４：０］が取り得る最小値５'ｈ００を５ビットのデジタル信号ｄｉｖ２［４：０］として出力する。
【０１３２】
他方、要求信号ｐｓｒｅｑ２がインアクティブの場合、第２クロック調整部３２は、前回よりも１大きい値のデジタル信号ｄｉｖ２［４：０］を出力する。但し、上限は設定分周比に対応するデジタル信号ｄｉｖ０［４：０］である。そのため、図１４Ｂに示すように、デジタル信号ｄｉｖ２［４：０］が上限値（５'ｈ１０）の状態において、要求信号ｐｓｒｅｑ２がインアクティブの場合、デジタル信号ｄｉｖ２［４：０］の値は、上限値（５'ｈ１０）に維持される。
【０１３３】
図１２に示すように、デコーダＤＥＣ２は、入力された５ビットのデジタル信号ｄｉｖ２［４：０］から、１６ビットのパルス有効信号ｃｐｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］を生成し、出力する。また、デジタル信号ｄｉｖ２［４：０］の値の変更に応じて、クロック周波数の変更を要求する要求信号ｃｈｇｒｅｑを出力する。要求信号ｃｈｇｒｅｑは、デジタル信号ｄｉｖ２［４：０］の値が変更される度に出力レベルが切り換わるトグル信号である。ここで、上述した分周制御信号ｄｉｖは、パルス有効信号ｃｐｖｌｄ［１５：０］、モード信号ｃｋｍｏｄｅ［１：０］、要求信号ｃｈｇｒｅｑから構成される。
【０１３４】
図１３Ｃは、デジタル信号ｄｉｖ２［４：０］とパルス有効信号ｃｐｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］との対応表である。図１３Ｃに示すように、デジタル信号ｄｉｖ２［４：０］＝５'ｈ１０の場合、クロック数が１６／１６である。そのため、１６ビットのパルス有効信号ｃｐｖｌｄ［１５：０］の値として、全てのビットがＨレベル（「１」）となる１６'ｈＦＦＦＦが割り当てられる。
【０１３５】
デジタル信号ｄｉｖ２［４：０］＝５'ｈ０Ｆの場合、クロック数が１５／１６である。つまり、１６個に１個の割合でクロックが出力されない。そのため、１６ビットのパルス有効信号ｃｐｖｌｄ［１５：０］の値として、１つのビットのみがＬレベル（「０」）となる１６'ｈＦＦＦＥが割り当てられる。
【０１３６】
デジタル信号ｄｉｖ２［４：０］＝５'ｈ０Ｅの場合、クロック数が１４／１６である。つまり、１６個に２個（８個に１個）の割合でクロックが出力されない。そのため、１６ビットのパルス有効信号ｃｐｖｌｄ［１５：０］の値として、２進数表記をした場合に８個に１個の割合でＬレベル（「０」）となる１６'ｈＦＦＦＥが割り当てられる。
【０１３７】
このように、クロック数が１５／１６であるデジタル信号ｄｉｖ２［４：０］＝５'ｈ０Ｆからクロック数が９／１６であるデジタル信号ｄｉｖ２［４：０］＝５'ｈ０９までについては、１６ビットのパルス有効信号ｃｐｖｌｄ［１５：０］の値として、１６個のうち出力されないクロックを均等に配置したような信号パターンが割り当てられる。具体的には、図１３Ｃに示す通りである。
【０１３８】
クロック数が８／１６以下のデジタル信号ｄｉｖ２［４：０］については、以下の通りである。まず、クロック数が８／１６であるデジタル信号ｄｉｖ２［４：０］＝５'ｈ０８は分周比が２であるから、Ｌレベル（「０」）とＨレベル（「１」）とが交互に配置される１６'ｈＡＡＡＡが割り当てられている。クロック数が４／１６であるデジタル信号ｄｉｖ２［４：０］＝５'ｈ０４は分周比が４であるから、２つのＬレベル（「０」）と２つのＨレベル（「１」）とが交互に配置される１６'ｈＣＣＣＣが割り当てられている。クロック数が２／１６であるデジタル信号ｄｉｖ２［４：０］＝５'ｈ０２は分周比が８であるから、４つのＬレベル（「０」）と４つのＨレベル（「１」）とが交互に配置される１６'ｈＦ０Ｆ０が割り当てられている。クロック数が１／１６であるデジタル信号ｄｉｖ２［４：０］＝５'ｈ０１は分周比が１６であるから、８つのＬレベル（「０」）と８つのＨレベル（「１」）とが交互に配置される１６'ｈＦＦ００が割り当てられている。
【０１３９】
その他のデジタル信号ｄｉｖ２［４：０］については、図１３Ｃに示す通りである。なお、当然のことながら、クロック数に対するパルス有効信号ｃｐｖｌｄ［１５：０］の信号パターンの割り当ては、上記に限定されるものではない。モード信号ｃｋｍｏｄｅ［１：０］については後述する。
【０１４０】
再び図４へ戻り、クロック生成回路１５の内部構成について説明する。図４に示すように、クロック生成回路１５は、位相同期回路ＰＬＬ、周波数設定回路ＤＩＶを備えている。
位相同期回路ＰＬＬは、入力クロック信号ｃｋｉｎを逓倍したクロック信号ｐｌｌｏｕｔを出力する。
周波数設定回路ＤＩＶは、クロック制御回路１４から出力された分周制御信号ｄｉｖに基づいて、位相同期回路ＰＬＬから出力されたクロック信号ｐｌｌｏｕｔを分周し、クロック信号ｃｐｕｃｋを出力する。ここで、
【０１４１】
ここで、図１５を用いて、周波数設定回路ＤＩＶの詳細について説明する。図１５は、周波数設定回路ＤＩＶの回路図である。図１５に示すように、周波数設定回路ＤＩＶは、１８個のＤフリップフロップＦ０〜Ｆ１７、１７個のＡＮＤゲート０〜１６、１個のＯＲゲートＯ１、１個のＸＯＲゲートＸ１、２個のセレクタＳ１、Ｓ２、及び遅延回路Ｄ１を備えている。
【０１４２】
上述の通り、要求信号ｃｈｇｒｅｑは、デジタル信号ｄｉｖ２［４：０］の値が変更される度に出力レベルが切り換わるトグル信号である。遅延回路Ｄ１は、後述するクロック信号ｃｋ２ｂに応じて、要求信号ｃｈｇｒｅｑの出力レベルの切り換わりから所定の期間遅延させて、ＤフリップフロップＦ９がモード信号ｃｋｍｏｄｅ［１：０］を、ＤフリップフロップＦ１０がパルス有効信号ｃｐｖｌｄ［１５：０］取り込むためのトリガ信号を生成する。
【０１４３】
そのため、ＤフリップフロップＦ９、Ｆ１０のクロック入力には遅延回路Ｄ１の出力が接続されている。また、ＤフリップフロップＦ９のデータ入力にはモード信号ｃｋｍｏｄｅ［１：０］が入力されている。ＤフリップフロップＦ１０のデータ入力にはパルス有効信号ｃｐｖｌｄ［１５：０］が入力されている。
【０１４４】
ＤフリップフロップＦ８のクロック入力には位相同期回路ＰＬＬが出力したクロック信号ｐｌｌｏｕｔが入力されている。また、ＤフリップフロップＦ８のデータ入力にはＤフリップフロップＦ８の非反転出力から出力されるクロック信号ｃｋ２を反転したクロック信号ｃｋ２ｂがフィードバックされている。
【０１４５】
ＤフリップフロップＦ０〜Ｆ７、Ｆ１１〜Ｆ１５のクロック入力には、このクロック信号ｃｋ２ｂが入力されている。ＤフリップフロップＦ０のデータ入力には、ＤフリップフロップＦ７の非反転出力信号の反転信号（つまり、ＤフリップフロップＦ７の反転出力信号）がフィードバックされている。
【０１４６】
ＤフリップフロップＦ０の非反転出力信号ｆ０は、隣接するＤフリップフロップＦ１のデータ入力に入力されるともに、ＡＮＤゲート８、１５に入力される。また、ＤフリップフロップＦ０の非反転出力信号ｆ０の反転信号ｆ０ｎ（つまり、ＤフリップフロップＦ０の反転出力信号）は、ＡＮＤゲート０、７に入力される。
【０１４７】
ＤフリップフロップＦ１の非反転出力信号ｆ１は、隣接するＤフリップフロップＦ２のデータ入力に入力されるともに、ＡＮＤゲート７、１４に入力される。また、ＤフリップフロップＦ１の非反転出力信号ｆ１の反転信号ｆ１ｎ（つまり、ＤフリップフロップＦ１の反転出力信号）は、ＡＮＤゲート６、１５に入力される。
【０１４８】
ＤフリップフロップＦ２の非反転出力信号ｆ２は、隣接するＤフリップフロップＦ３のデータ入力に入力されるともに、ＡＮＤゲート６、１３に入力される。また、ＤフリップフロップＦ２の非反転出力信号ｆ２の反転信号ｆ２ｎ（つまり、ＤフリップフロップＦ２の反転出力信号）は、ＡＮＤゲート５、１４に入力される。
【０１４９】
ＤフリップフロップＦ３の非反転出力信号ｆ３は、隣接するＤフリップフロップＦ４のデータ入力に入力されるともに、ＡＮＤゲート５、１２に入力される。また、ＤフリップフロップＦ３の非反転出力信号ｆ３の反転信号ｆ３ｎ（つまり、ＤフリップフロップＦ３の反転出力信号）は、ＡＮＤゲート４、１３に入力される。
【０１５０】
ＤフリップフロップＦ４の非反転出力信号ｆ４は、隣接するＤフリップフロップＦ５のデータ入力に入力されるともに、ＡＮＤゲート４、１１に入力される。また、ＤフリップフロップＦ４の非反転出力信号ｆ４の反転信号ｆ４ｎ（つまり、ＤフリップフロップＦ４の反転出力信号）は、ＡＮＤゲート３、１２に入力される。
【０１５１】
ＤフリップフロップＦ５の非反転出力信号ｆ５は、隣接するＤフリップフロップＦ６のデータ入力に入力されるともに、ＡＮＤゲート３、１０に入力される。また、ＤフリップフロップＦ５の非反転出力信号ｆ５の反転信号ｆ５ｎ（つまり、ＤフリップフロップＦ５の反転出力信号）は、ＡＮＤゲート２、１１に入力される。
【０１５２】
ＤフリップフロップＦ６の非反転出力信号ｆ６は、隣接するＤフリップフロップＦ７のデータ入力に入力されるともに、ＡＮＤゲート２、９に入力される。また、ＤフリップフロップＦ６の非反転出力信号ｆ６の反転信号ｆ６ｎ（つまり、ＤフリップフロップＦ６の反転出力信号）は、ＡＮＤゲート１、１０に入力される。
【０１５３】
そして、ＤフリップフロップＦ７の非反転出力信号ｆ７は、ＡＮＤゲート１、８に入力される。また、ＤフリップフロップＦ７の非反転出力信号ｆ７の反転信号ｆ７ｎ（つまり、ＤフリップフロップＦ７の反転出力信号）は、上述の通り隣接するＤフリップフロップＦ０のデータ入力にフィードバックされるともに、ＡＮＤゲート０、９に入力される。
【０１５４】
以上のことから、ＡＮＤゲート０には、ＤフリップフロップＦ０の反転出力信号ｆ０ｎとＤフリップフロップＦ７の反転出力信号ｆ７ｎとが入力される。さらに、ＡＮＤゲート０には、パルス有効信号ｃｐｖｌｄ［０］が入力される。そして、ＡＮＤゲート０から有効信号ｃｋ００ｖｌｄが出力される。詳細には後述するように、ＤフリップフロップＦ０の反転出力信号ｆ０ｎとＤフリップフロップＦ７の反転出力信号ｆ７ｎとからパルス信号が形成される。このパルス信号の出力の有効・無効がパルス有効信号ｃｐｖｌｄ［０］により決定される。すなわち、パルス有効信号ｃｐｖｌｄ［０］がＨレベルであれば、当該パルス信号は出力される。一方、パルス有効信号ｃｐｖｌｄ［０］がＬレベルであれば、当該パルス信号は出力されない。他のＡＮＤゲートにより生成されるパルス信号についても同様である。
【０１５５】
ＡＮＤゲート１には、ＤフリップフロップＦ６の反転出力信号ｆ６ｎとＤフリップフロップＦ７の非反転出力信号ｆ７とが入力される。さらに、ＡＮＤゲート１には、パルス有効信号ｃｐｖｌｄ［１］が入力される。そして、ＡＮＤゲート１から有効信号ｃｋ０１ｖｌｄが出力される。
ＡＮＤゲート２には、ＤフリップフロップＦ５の反転出力信号ｆ５ｎとＤフリップフロップＦ６の非反転出力信号ｆ６とが入力される。さらに、ＡＮＤゲート２には、パルス有効信号ｃｐｖｌｄ［２］が入力される。そして、ＡＮＤゲート２から有効信号ｃｋ０２ｖｌｄが出力される。
ＡＮＤゲート３には、ＤフリップフロップＦ４の反転出力信号ｆ４ｎとＤフリップフロップＦ５の非反転出力信号ｆ５とが入力される。さらに、ＡＮＤゲート３には、パルス有効信号ｃｐｖｌｄ［３］が入力される。そして、ＡＮＤゲート３から有効信号ｃｋ０３ｖｌｄが出力される。
【０１５６】
ＡＮＤゲート４には、ＤフリップフロップＦ３の反転出力信号ｆ３ｎとＤフリップフロップＦ４の非反転出力信号ｆ４とが入力される。さらに、ＡＮＤゲート４には、パルス有効信号ｃｐｖｌｄ［４］が入力される。そして、ＡＮＤゲート４から有効信号ｃｋ０４ｖｌｄが出力される。
ＡＮＤゲート５には、ＤフリップフロップＦ２の反転出力信号ｆ２ｎとＤフリップフロップＦ３の非反転出力信号ｆ３とが入力される。さらに、ＡＮＤゲート５には、パルス有効信号ｃｐｖｌｄ［５］が入力される。そして、ＡＮＤゲート５から有効信号ｃｋ０５ｖｌｄが出力される。
ＡＮＤゲート６には、ＤフリップフロップＦ１の反転出力信号ｆ１ｎとＤフリップフロップＦ２の非反転出力信号ｆ２とが入力される。さらに、ＡＮＤゲート６には、パルス有効信号ｃｐｖｌｄ［６］が入力される。そして、ＡＮＤゲート６から有効信号ｃｋ０６ｖｌｄが出力される。
【０１５７】
ＡＮＤゲート７には、ＤフリップフロップＦ０の反転出力信号ｆ０ｎとＤフリップフロップＦ１の非反転出力信号ｆ１とが入力される。さらに、ＡＮＤゲート７には、パルス有効信号ｃｐｖｌｄ［７］が入力される。そして、ＡＮＤゲート７から有効信号ｃｋ０７ｖｌｄが出力される。
ＡＮＤゲート８には、ＤフリップフロップＦ０の非反転出力信号ｆ０とＤフリップフロップＦ７の非反転出力信号ｆ７とが入力される。さらに、ＡＮＤゲート８には、パルス有効信号ｃｐｖｌｄ［８］が入力される。そして、ＡＮＤゲート８から有効信号ｃｋ０８ｖｌｄが出力される。
ＡＮＤゲート９には、ＤフリップフロップＦ６の非反転出力信号ｆ６とＤフリップフロップＦ７の反転出力信号ｆ７ｎとが入力される。さらに、ＡＮＤゲート９には、パルス有効信号ｃｐｖｌｄ［９］が入力される。そして、ＡＮＤゲート９から有効信号ｃｋ０９ｖｌｄが出力される。
【０１５８】
ＡＮＤゲート１０には、ＤフリップフロップＦ５の非反転出力信号ｆ５とＤフリップフロップＦ６の反転出力信号ｆ６ｎとが入力される。さらに、ＡＮＤゲート１０には、パルス有効信号ｃｐｖｌｄ［１０］が入力される。そして、ＡＮＤゲート１０から有効信号ｃｋ１０ｖｌｄが出力される。
ＡＮＤゲート１１には、ＤフリップフロップＦ４の非反転出力信号ｆ４とＤフリップフロップＦ５の反転出力信号ｆ５ｎとが入力される。さらに、ＡＮＤゲート１１には、パルス有効信号ｃｐｖｌｄ［１１］が入力される。そして、ＡＮＤゲート１１から有効信号ｃｋ１１ｖｌｄが出力される。
ＡＮＤゲート１２には、ＤフリップフロップＦ３の非反転出力信号ｆ３とＤフリップフロップＦ４の反転出力信号ｆ４ｎとが入力される。さらに、ＡＮＤゲート１２には、パルス有効信号ｃｐｖｌｄ［１２］が入力される。そして、ＡＮＤゲート１２から有効信号ｃｋ１２ｖｌｄが出力される。
【０１５９】
ＡＮＤゲート１３には、ＤフリップフロップＦ２の非反転出力信号ｆ２とＤフリップフロップＦ３の反転出力信号ｆ３ｎとが入力される。さらに、ＡＮＤゲート１３には、パルス有効信号ｃｐｖｌｄ［１３］が入力される。そして、ＡＮＤゲート１３から有効信号ｃｋ１３ｖｌｄが出力される。
ＡＮＤゲート１４には、ＤフリップフロップＦ１の非反転出力信号ｆ１とＤフリップフロップＦ２の反転出力信号ｆ２ｎとが入力される。さらに、ＡＮＤゲート１４には、パルス有効信号ｃｐｖｌｄ［１４］が入力される。そして、ＡＮＤゲート１４から有効信号ｃｋ１４ｖｌｄが出力される。
ＡＮＤゲート１５には、ＤフリップフロップＦ０の非反転出力信号ｆ０とＤフリップフロップＦ１の反転出力信号ｆ１ｎとが入力される。さらに、ＡＮＤゲート１５には、パルス有効信号ｃｐｖｌｄ［１５］が入力される。そして、ＡＮＤゲート１５から有効信号ｃｋ１５ｖｌｄが出力される。
【０１６０】
ＡＮＤゲート０〜１５から出力される有効信号ｃｋ００ｖｌｄ〜ｃｋ１５ｖｌｄは、ＯＲゲートＯ１に入力される。ＯＲゲートＯ１の出力はＤフリップフロップＦ１４のデータ入力に接続されており、クロック信号ｃｋ２ｂに応じてＤフリップフロップＦ１４に取り込まれる。そして、ＤフリップフロップＦ１４からウェーブフォームモードのクロック信号ｃｋｗとして出力される。このクロック信号ｃｋｗは、セレクタＳ１の０入力、ＸＯＲゲートＸ１及びＡＮＤゲート１６の一方入力に入力される。つまり、このクロック信号ｃｋｗに基づいて他のモードのクロック信号が生成される。
【０１６１】
ＡＮＤゲート１６の他方入力には、クロック信号ｃｋ２が入力される。従って、ＡＮＤゲート１６からはクロックゲーティングモードのクロック信号ｃｋｇが出力される。一方、ＸＯＲゲートＸ１の他方入力には、ＸＯＲゲートＸ１の出力がデータ入力に接続されたＤフリップフロップＦ１５からの非反転出力信号がフィードバックされている。このＤフリップフロップＦ１５からの非反転出力信号が、トグルモードのクロック信号ｃｋｔである。このクロック信号ｃｋｔがセレクタＳ１の１入力に入力される。
【０１６２】
セレクタＳ１はモード信号ｃｋｍｏｄｅ［１］により制御される。すなわち、モード信号ｃｋｍｏｄｅ［１］がＨレベル（「１」）の場合、セレクタＳ１の１入力に入力されているトグルモードのクロック信号ｃｋｔが選択され、ｃｋｍｏｄｅ［１］がＬレベル（「０」）の場合、セレクタＳ１の０入力に入力されているウェーブフォームモードのクロック信号ｃｋｗが選択される。セレクタＳ１の出力は、ＤフリップフロップＦ１６のデータ入力に入力される。そして、ＤフリップフロップＦ１６の非反転出力からクロック信号ｃｋｓ０が出力される。このクロック信号ｃｋｓ０は、セレクタＳ２の１入力に入力されている。セレクタＳ２の０入力には、クロックゲーティングモードのクロック信号ｃｋｇが入力されている。なお、モード信号ｃｋｍｏｄｅ［１］は、上述のＤフリップフロップＦ９に加え、ＤフリップフロップＦ１２を介してセレクタＳ１に入力される。
【０１６３】
セレクタＳ２はモード信号ｃｋｍｏｄｅ［０］により制御される。すなわち、モード信号ｃｋｍｏｄｅ［０］がＨレベル（「１」）の場合、セレクタＳ２の１入力に入力されているクロック信号ｃｋｓ０が選択され、ｃｋｍｏｄｅ［０］がＬレベル（「０」）の場合、セレクタＳ２の０入力に入力されているクロックゲーティングモードのクロック信号ｃｋｇが選択される。セレクタＳ２から出力されるクロック信号ｃｋｓ１は、ＤフリップフロップＦ１７のデータ入力に入力される。ここで、ＤフリップフロップＦ１７のクロック入力には、クロック信号ｐｌｌｏｕｔが入力されている。そして、ＤフリップフロップＦ１７の非反転出力から周波数設定回路ＤＩＶの出力クロック信号ｃｐｕｃｋが出力される。なお、モード信号ｃｋｍｏｄｅ［０］は、上述のＤフリップフロップＦ９に加え、ＤフリップフロップＦ１１、Ｆ１３を介してセレクタＳ２に入力される。
【０１６４】
次に、図１６のタイミングチャートを用いて、周波数設定回路ＤＩＶの動作について説明する。図１６は、周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの一例である。
最上段には、パルス有効信号ｃｐｖｌｄ［１５：０］を示している。図１６の例では、図１３Ｃに示した一覧表におけるパルス有効信号ｃｐｖｌｄ［１５：０］＝１６'ｈＡＡＡＡ＝１６'ｂ１０１０＿１０１０＿１０１０＿１０１０であって、クロック数が８／１６である。
２段目には、モード信号ｃｋｍｏｄｅ［１：０］を示している。図１３Ｃに示すように、本実施の形態では、クロック数が０／１６〜８／１６の場合、モード信号ｃｋｍｏｄｅ［１：０］＝２'ｂ０１とし、ウェーブフォームモードのクロック信号ｃｋｗを採用する。
【０１６５】
３段目には、クロック信号ｐｌｌｏｕｔを示している。
４段目には、クロック信号ｃｋ２を示している。
５段目には、クロック信号ｃｋ２ｂを示している。クロック信号ｃｋ２はクロック信号ｐｌｌｏｕｔと同期し、２分周されたクロック信号である。クロック信号ｃｋ２ｂはクロック信号ｃｋ２の反転信号である。このクロック信号ｃｋ２が周波数設定回路ＤＩＶから出力される最大周波数のクロック信号である。
【０１６６】
６段目から２１段目までには、ＡＮＤゲート０〜１５からそれぞれ出力される有効信号ｃｋ００ｖｌｄ〜ｃｋ１５ｖｌｄを示している。本実施の形態では、パルス有効信号ｃｐｖｌｄ［１５：０］＝１６'ｂ１０１０＿１０１０＿１０１０＿１０１０であるため、有効信号ｃｋ００ｖｌｄ、ｃｋ０２ｖｌｄ、ｃｋ０４ｖｌｄ、ｃｋ０６ｖｌｄ、ｃｋ０８ｖｌｄ、ｃｋ１０ｖｌｄ、ｃｋ１２ｖｌｄ、ｃｋ１４ｖｌｄはＬレベルとなっている。一方、有効信号ｃｋ０１ｖｌｄ、ｃｋ０３ｖｌｄ、ｃｋ０５ｖｌｄ、ｃｋ０７ｖｌｄ、ｃｋ０９ｖｌｄ、ｃｋ１１ｖｌｄ、ｃｋ１３ｖｌｄ、ｃｋ１５ｖｌｄはＨレベルとなっている。
【０１６７】
２２段目（下から６段目）には、ＤフリップフロップＦ１４の非反転出力から出力されるウェーブフォームモードのクロック信号ｃｋｗを示す。このクロック信号ｃｋｗは、ＯＲゲートＯ１の出力信号が、クロック信号ｃｋ２ｂの１周期分遅延した信号である。
下から５段目には、クロック信号ｃｋｗとクロック信号ｃｋ２とを入力とするＡＮＤゲート１６から出力されるクロックゲーティングモードのクロック信号ｃｋｇを示す。
下から４段目には、ＤフリップフロップＦ１５の非反転出力から出力されるトグルモードのクロック信号ｃｋｔを示す。このクロック信号ｃｋｔは、クロック信号ｃｋｗとクロック信号ｃｋｔ自身とを入力とするＸＯＲゲートＸ１の出力信号が、クロック信号ｃｋ２ｂの１周期分遅延した信号である。
【０１６８】
下から３段目には、ＤフリップフロップＦ１６の非反転出力から出力されるクロック信号ｃｋｓ０を示す。ここで、ｃｋｍｏｄｅ［１］＝０であるから、セレクタＳ１の出力としては、クロック信号ｃｋｗが選択される。そして、クロック信号ｃｋｓ０は、クロック信号ｃｋｗが、クロック信号ｃｋ２ｂの１周期分遅延した信号である。
下から２段目には、セレクタＳ２から出力されるクロック信号ｃｋｓ１を示す。ここで、ｃｋｍｏｄｅ［０］＝１であるから、セレクタＳ２の出力としては、クロック信号ｃｋｓ０が選択される。つまり、下から３段目のクロック信号ｃｋｓ０と下から２段目のクロック信号ｃｋｓ１は、同一信号である。
最下段には、周波数設定回路ＤＩＶから出力されるクロック信号ｃｐｕｃｋを示す。クロック信号ｃｐｕｃｋは、クロック信号ｃｋｓ１が、クロック信号ｐｌｌｏｕｔの１周期分遅延した信号である。
【０１６９】
次に、図１７のタイミングチャートを用いて、クロックゲーティングモードについて説明する。図１７は、周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの他の例である。２段目に示したモード信号ｃｋｍｏｄｅ［１：０］、下から２段目に示したクロック信号ｃｋｓ１、最下段に示したクロック信号ｃｐｕｃｋ以外の信号は、図１６と同一信号であるため、説明を省略する。
クロックゲーティングモードの場合、２段目に示したモード信号ｃｋｍｏｄｅ［１：０］＝２'ｂ００となる。
【０１７０】
下から２段目には、セレクタＳ２から出力されるクロック信号ｃｋｓ１を示す。ここで、ｃｋｍｏｄｅ［０］＝０であるから、セレクタＳ２の出力としては、クロック信号ｃｋｗとクロック信号ｃｋ２とを入力とするＡＮＤゲート１６から出力されるクロックゲーティングモードのクロック信号ｃｋｇが選択される。つまり、このクロック信号ｃｋｓ１は、下から５段目のクロック信号ｃｋｇと同一信号である。
最下段には、周波数設定回路ＤＩＶから出力されるクロック信号ｃｐｕｃｋを示す。クロック信号ｃｐｕｃｋは、クロック信号ｃｋｓ１が、クロック信号ｐｌｌｏｕｔの１周期分遅延した信号である。
【０１７１】
次に、図１８のタイミングチャートを用いて、トグルモードについて説明する。図１８は、周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの他の例である。２段目に示したモード信号ｃｋｍｏｄｅ［１：０］、下から３段目に示したクロック信号ｃｋｓ０、下から２段目に示したクロック信号ｃｋｓ１、最下段に示したクロック信号ｃｐｕｃｋ以外の信号は、図１６と同一信号であるため、説明を省略する。
トグルモードの場合、２段目に示したモード信号ｃｋｍｏｄｅ［１：０］＝２'ｂ１１となる。
【０１７２】
下から３段目には、ＤフリップフロップＦ１６の非反転出力から出力されるクロック信号ｃｋｓ０を示す。ここで、ｃｋｍｏｄｅ［１］＝１であるから、セレクタＳ１の出力としては、下から４段目のクロック信号ｃｋｔが選択される。そして、クロック信号ｃｋｓ０は、クロック信号ｃｋｔが、クロック信号ｃｋ２ｂの１周期分遅延した信号である。
下から２段目には、セレクタＳ２から出力されるクロック信号ｃｋｓ１を示す。ここで、ｃｋｍｏｄｅ［０］＝１であるから、セレクタＳ２の出力としては、クロック信号ｃｋｓ０が選択される。つまり、下から３段目のクロック信号ｃｋｓ０と下から２段目のクロック信号ｃｋｓ１は、同一信号である。
最下段には、周波数設定回路ＤＩＶから出力されるクロック信号ｃｐｕｃｋを示す。クロック信号ｃｐｕｃｋは、クロック信号ｃｋｓ１が、クロック信号ｐｌｌｏｕｔの１周期分遅延した信号である。
【０１７３】
図１３Ｃに示したモード信号ｃｋｍｏｄｅ［１：０］は、あくまで一例であるので、必要に応じ適宜上記３つのモードを使い分けることができる。
【０１７４】
次に、図１９のタイミングチャートを用いて、周波数設定回路ＤＩＶの動作について説明する。図１９は、周波数設定回路ＤＩＶの動作を説明するためのタイミングチャートの他の例である。最上段には、パルス有効信号ｃｐｖｌｄ［１５：０］を示している。図１９の例は、図１３Ｃに示した一覧表におけるパルス有効信号ｃｐｖｌｄ［１５：０］＝１６'ｈＥＥＥＥ＝１６'ｂ１１１０＿１１１０＿１１１０＿１１１０であって、クロック数が１２／１６の場合である。
２段目には、モード信号ｃｋｍｏｄｅ［１：０］を示している。図１３Ｃに示すように、本実施の形態では、クロック数が９／１６〜１６／１６の場合、モード信号ｃｋｍｏｄｅ［１：０］＝２'ｂ００とし、クロックゲーティングモードのクロック信号ｃｋｇを採用する。
【０１７５】
３段目のクロック信号ｐｌｌｏｕｔ、４段目のクロック信号ｃｋ２、５段目のクロック信号ｃｋ２ｂは、図１６と同じであるから説明を省略する。
６段目から２１段目までには、ＡＮＤゲート０〜１５からそれぞれ出力される有効信号ｃｋ００ｖｌｄ〜ｃｋ１５ｖｌｄを示している。本実施の形態では、パルス有効信号ｃｐｖｌｄ［１５：０］＝１６'ｂ１１１０＿１１１０＿１１１０＿１１１０であるため、有効信号ｃｋ００ｖｌｄ、ｃｋ０４ｖｌｄ、ｃｋ０８ｖｌｄ、ｃｋ１２ｖｌｄはＬレベルとなっている。一方、有効信号ｃｋ０１ｖｌｄ、ｃｋ０２ｖｌｄ、ｃｋ０３ｖｌｄ、ｃｋ０５ｖｌｄ、ｃｋ０６ｖｌｄ、ｃｋ０７ｖｌｄ、ｃｋ０９ｖｌｄ、ｃｋ１０ｖｌｄ、ｃｋ１１ｖｌｄ、ｃｋ１３ｖｌｄ、ｃｋ１４ｖｌｄ、ｃｋ１５ｖｌｄはＨレベルとなっている。
【０１７６】
下から３段目には、ＤフリップフロップＦ１４の非反転出力から出力されるウェーブフォームモードのクロック信号ｃｋｗを示す。このクロック信号ｃｋｗは、ＯＲゲートＯ１の出力信号が、クロック信号ｃｋ２ｂの１周期分遅延した信号である。
下から２段目には、クロック信号ｃｋｗとクロック信号ｃｋ２とを入力とするＡＮＤゲート１６から出力されるクロックゲーティングモードのクロック信号ｃｋｇを示す。ここで、ｃｋｍｏｄｅ［０］＝０であるから、セレクタＳ２から出力されるクロック信号ｃｋｓ１は、クロック信号ｃｋｇである。
最下段には、周波数設定回路ＤＩＶから出力されるクロック信号ｃｐｕｃｋを示す。クロック信号ｃｐｕｃｋは、クロック信号ｃｋｓ１が、クロック信号ｐｌｌｏｕｔの１周期分遅延した信号である。
【０１７７】
分周比は２、４、８、１６など２ｎ（ｎは整数）で設定されることが多い。そのため、マルチコアプロセッサ１１が、最大周波数のクロック信号ｃｐｕｃｋで動作している場合、一時的に周波数を下げるにしても、最大周波数の１／２倍、１／４倍、１／８倍、１／１６倍などしか選択することができなかった。本実施の形態に係る周波数設定回路ＤＩＶでは、より小刻みに周波数を調整することができる。
【０１７８】
次に、図２０のタイミングチャートを用いて、クロック周波数制御全体の動作について説明する。図２０は、クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
最上段には、クロック制御回路１４に供給されるクロック信号ｃｃｃｋを示している。
２段目には、実行信号ｃｈｅｃｋを示している。
３段目には、許容最大値ｔｈｍａｘ［１５：０］を示している。ここでは、ｔｈｍａｘ［１５：０］＝３０００である。
【０１７９】
４段目には、許容変化量ｔｈｄｅｌ［１５：０］を示している。ここでは、ｔｈｄｅｌ［１５：０］＝８００である。
５段目には、合計値ｓｕｍ［１５：０］を示している。実行信号ｃｈｅｃｋの立ち上がりに応じて、値が更新されている。
６段目には、変化量ｄｅｌ［１５：０］を示している。実行信号ｃｈｅｃｋの立ち上がりに応じて、値が更新されている。
【０１８０】
７段目には、要求信号ｐｓｒｅｑ１を示している。合計値ｓｕｍ［１５：０］＝４０００となって、ｔｈｍａｘ［１５：０］＝３０００を超えた期間で、要求信号ｐｓｒｅｑ１がＨレベルとなっている。その他の期間では、要求信号ｐｓｒｅｑ１がＬレベルとなっている。
８段目には、要求信号ｐｓｒｅｑ２を示している。変化量［１５：０］＝１３００となって、ｔｈｄｅｌ［１５：０］＝８００を超えた期間で、要求信号ｐｓｒｅｑ２がＨレベルとなっている。その他の期間では、要求信号ｐｓｒｅｑ２がＬレベルとなっている。ここで、要求信号ｐｓｒｅｑ２がＨレベルとなっている期間は、要求信号ｐｓｒｅｑ１がＨレベルとなっている期間に一致している。
【０１８１】
９段目には、分周比を示す３ビットのデジタル信号ｄ［２：０］を示している。ここでは、デジタル信号ｄ［２：０］＝３'ｈ０であり、分周比＝１である。
１０段目には、分周比を示す５ビットのデジタル信号ｄｉｖ０［４：０］を示している。ここでは、デジタル信号ｄｉｖ０［４：０］＝５'ｈ１０であり、出力されるクロック数（周波数）＝１６／１６である。
【０１８２】
１１段目には、第１クロック調整部３１から出力される５ビットのデジタル信号ｄｉｖ１［４：０］を示している。第１クロック調整部３１は、実行信号ｃｈｅｃｋの立下りエッジで、要求信号ｐｓｒｅｑ１の出力レベルを確認し、デジタル信号ｄｉｖ１［４：０］の値を更新する。ここで、要求信号ｐｓｒｅｑ１が１期間だけＨレベルになったことを受けて、デジタル信号ｄｉｖ１［４：０］＝５'ｈ１０からｄｉｖ１［４：０］＝５'ｈ０Ｆへ値が変更されている。そして、次の期間で、再度デジタル信号ｄｉｖ０［４：０］＝５'ｈ１０に戻っている。
【０１８３】
１２段目には、第２クロック調整部３２から出力される５ビットのデジタル信号ｄｉｖ２［４：０］を示している。第２クロック調整部３２は、実行信号ｃｈｅｃｋの立下りエッジで、要求信号ｐｓｒｅｑ２の出力レベルを確認し、デジタル信号ｄｉｖ２［４：０］の値を更新する。ここで、要求信号ｐｓｒｅｑ２が１期間だけＨレベルになったことを受けて、デジタル信号ｄｉｖ２［４：０］＝５'ｈ１０からｄｉｖ２［４：０］＝５'ｈ００へ値が変更されている。そして、次の期間以降で、デジタル信号ｄｉｖ２［４：０］の値は１ずつ増え、最終的にデジタル信号ｄｉｖ２［４：０］＝５'ｈ１０に戻っている。
【０１８４】
１３段目（下から４段目）には、１６ビットのクロック有効信号ｃｋｖｌｄ［１５：０］を示している。
下から３段目には、モード信号ｃｋｍｏｄｅ［１：０］を示している。図１３Ｃに示したデジタル信号ｄｉｖ２［４：０］との対応表の通り、デジタル信号ｄｉｖ２［４：０］の変化に応じて、クロック有効信号ｃｋｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］の値も変化している。
【０１８５】
下から２段目には、要求信号ｃｈｇｒｅｑを示している。要求信号ｃｈｇｒｅｑは、デジタル信号ｄｉｖ２［４：０］の値が変更される度に出力レベルが切り換わるトグル信号である。
最下段には、周波数設定回路ＤＩＶから出力されるクロック信号ｃｐｕｃｋを示している。クロック有効信号ｃｋｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］の値に応じたクロック信号ｃｐｕｃｋが出力されている。
【０１８６】
図２０の例のように、要求信号ｐｓｒｅｑ１、ｐｓｒｅｑ２の両方がＨレベルになった場合、要求信号ｐｓｒｅｑ２が優先される。
【０１８７】
＜発明の実施の形態２＞
次に、図２１〜２３を用いて、実施の形態２に係る半導体装置について説明する。
図２１は、実施の形態２に係るメモリアクセス検出部１２の回路図である。図６に示した実施の形態１に係るメモリアクセス検出部１２と比較して、図２１に示した本実施の形態に係るメモリアクセス検出部１２は、デジタル比較器ＣＭＰ２及びレジスタＲＥＧ２を備えていない。
図２２は、実施の形態２に係るクロック制御回路１４の拡大図である。図１２に示した実施の形態１に係るクロック制御回路１４と比較して、図２２に示した本実施の形態に係るクロック制御回路１４は第２クロック調整部３２を備えていない。
その他の構成は実施の形態１と同様であるため、説明を省略する。
本実施の形態に係る半導体装置も、実施の形態１に係る半導体装置と同様に各コアから各メモリ領域へのアクセス回数を検出し、マルチコアプロセッサ１１の消費電流量を予想することができるメモリアクセス検出部１２を備えている。そのため、この予想消費電流量が所定の基準値を超えた場合、自動的にマルチコアプロセッサ１１へ供給されるクロック信号ｃｐｕｃｋの周波数の低減することができる。従って、許容電流量を超えることによる誤動作を防止することができる。
【０１８８】
次に、図２３のタイミングチャートを用いて、第２のクロック周波数制御全体の動作について説明する。図２３は、クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
最上段には、クロック制御回路１４に供給されるクロック信号ｃｃｃｋを示している。
２段目には、実行信号ｃｈｅｃｋを示している。
３段目には、許容最大値ｔｈｍａｘ［１５：０］を示している。ここでは、ｔｈｍａｘ［１５：０］＝４０００である。
４段目には、合計値ｓｕｍ［１５：０］を示している。実行信号ｃｈｅｃｋの立ち上がりに応じて、値が更新されている。
【０１８９】
５段目には、要求信号ｐｓｒｅｑ１を示している。連続した４期間で、合計値ｓｕｍ［１５：０］が許容最大値ｔｈｍａｘ［１５：０］＝４０００を超え、要求信号ｐｓｒｅｑ１がＨレベルとなっている。その他の期間では、要求信号ｐｓｒｅｑ１がＬレベルとなっている。
【０１９０】
６段目には、分周比を示す３ビットのデジタル信号ｄ［２：０］を示している。ここでは、デジタル信号ｄ［２：０］＝３'ｈ０であり、分周比＝１である。
７段目には、分周比を示す５ビットのデジタル信号ｄｉｖ０［４：０］を示している。ここでは、デジタル信号ｄｉｖ０［４：０］＝５'ｈ１０であり、出力されるクロック数（周波数）＝１６／１６である。
【０１９１】
８段目には、第１クロック調整部３１から出力される５ビットのデジタル信号ｄｉｖ１［４：０］を示している。第１クロック調整部３１は、実行信号ｃｈｅｃｋの立下りエッジで、要求信号ｐｓｒｅｑ１の出力レベルを確認し、デジタル信号ｄｉｖ１［４：０］の値を更新する。ここで、要求信号ｐｓｒｅｑ１が４期間連続してＨレベルになったことを受けて、デジタル信号ｄｉｖ１［４：０］＝５'ｈ１０から５'ｈ０Ｃまで４回続けて１ずつ値が減っている。その後、４回続けて１ずつ値が増えてデジタル信号ｄｉｖ０［４：０］＝５'ｈ１０に戻っている。
【０１９２】
９段目（下から５段目）には、１６ビットのクロック有効信号ｃｋｖｌｄ［１５：０］を示している
下から４段目には、モード信号ｃｋｍｏｄｅ［１：０］を示している。
ここで、図１３Ｃに示したデジタル信号ｄｉｖ２［４：０］とクロック有効信号ｃｋｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］との対応表において、本実施の形態では、デジタル信号ｄｉｖ２［４：０］をデジタル信号ｄｉｖ１［４：０］と読み替えればよい。下から５段目のクロック有効信号ｃｋｖｌｄ［１５：０］及び下から４段目のモード信号ｃｋｍｏｄｅ［１：０］は、図１３Ｃに示した対応表の通りとなっている。
【０１９３】
下から３段目には、要求信号ｃｈｇｒｅｑを示している。本実施の形態では、要求信号ｃｈｇｒｅｑは、デジタル信号ｄｉｖ１［４：０］の値が変更される度に出力レベルが切り換わるトグル信号である。
下から２段目には、周波数設定回路ＤＩＶから出力されるクロック信号ｃｐｕｃｋを示している。クロック有効信号ｃｋｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］の値に応じたクロック信号ｃｐｕｃｋが出力されている。
最下段には、下から２段目のクロック信号ｃｐｕｃｋの拡大図を示している。クロック数１２／１６〜１５／１６について示すように、クロック数１６／１６の最大周波数から略等間隔にクロックパルスを間引くことにより（つまり上述のクロックゲーティングモードにより）、出力されるクロック数（クロック周波数）が調整されている。
【０１９４】
＜発明の実施の形態３＞
次に、図２４〜２６を用いて、実施の形態３に係る半導体装置について説明する。
図２４は、実施の形態３に係るメモリアクセス検出部１２の回路図である。図６に示した実施の形態１に係るメモリアクセス検出部１２と比較して、図２４に示した本実施の形態に係るメモリアクセス検出部１２は、デジタル比較器ＣＭＰ１及びレジスタＲＥＧ１を備えていない。
図２５は、実施の形態３に係るクロック制御回路１４の拡大図である。図１２に示した実施の形態１に係るクロック制御回路１４と比較して、図２５に示した本実施の形態に係るクロック制御回路１４は第１クロック調整部３１を備えていない。
その他の構成は実施の形態１と同様であるため、説明を省略する。
本実施の形態に係る半導体装置も、実施の形態１に係る半導体装置と同様に各コアから各メモリ領域へのアクセス回数を検出し、マルチコアプロセッサ１１の消費電流量を予想することができるメモリアクセス検出部１２を備えている。そのため、この予想消費電流量の変化量が所定の基準値を超えた場合、自動的にマルチコアプロセッサ１１へ供給されるクロック信号ｃｐｕｃｋの周波数の低減することができる。従って、消費電流の急増に伴う電圧ドロップを効果的に抑制することができる。
【０１９５】
次に、図２６のタイミングチャートを用いて、第３のクロック周波数制御全体の動作について説明する。図２６は、クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
最上段には、クロック制御回路１４に供給されるクロック信号ｃｃｃｋを示している。
２段目には、実行信号ｃｈｅｃｋを示している。
３段目には、許容変化量ｔｈｄｅｌ［１５：０］を示している。ここでは、ｔｈｄｅｌ［１５：０］＝８００である。
４段目には、合計値ｓｕｍ［１５：０］を示している。実行信号ｃｈｅｃｋの立ち上がりに応じて、値が更新されている。
５段目には、変化量ｄｅｌ［１５：０］を示している。実行信号ｃｈｅｃｋの立ち上がりに応じて、値が更新されている。
【０１９６】
６段目には、要求信号ｐｓｒｅｑ２を示している。変化量［１５：０］＝１３００となって、ｔｈｄｅｌ［１５：０］＝８００を超えた期間で、要求信号ｐｓｒｅｑ２がＨレベルとなっている。その他の期間では、要求信号ｐｓｒｅｑ２がＬレベルとなっている。
【０１９７】
７段目には、分周比を示す３ビットのデジタル信号ｄ［２：０］を示している。ここでは、デジタル信号ｄ［２：０］＝３'ｈ０であり、分周比＝１である。
８段目には、分周比を示す５ビットのデジタル信号ｄｉｖ０［４：０］を示している。ここでは、デジタル信号ｄｉｖ０［４：０］＝５'ｈ１０であり、出力されるクロック数（周波数）＝１６／１６である。
【０１９８】
９段目には、第２クロック調整部３２から出力される５ビットのデジタル信号ｄｉｖ２［４：０］を示している。第２クロック調整部３２は、実行信号ｃｈｅｃｋの立下りエッジで、要求信号ｐｓｒｅｑ２の出力レベルを確認し、デジタル信号ｄｉｖ２［４：０］の値を更新する。ここで、要求信号ｐｓｒｅｑ２が１期間だけＨレベルになったことを受けて、デジタル信号ｄｉｖ２［４：０］＝５'ｈ１０からｄｉｖ２［４：０］＝５'ｈ００へ値が変更されている。そして、次の期間以降で、デジタル信号ｄｉｖ２［４：０］の値は１ずつ増え、最終的にデジタル信号ｄｉｖ２［４：０］＝５'ｈ１０に戻っている。
【０１９９】
１０段目（下から４段目）には、１６ビットのクロック有効信号ｃｋｖｌｄ［１５：０］を示している。
下から３段目には、モード信号ｃｋｍｏｄｅ［１：０］を示している。図１３Ｃに示したデジタル信号ｄｉｖ２［４：０］との対応表の通り、デジタル信号ｄｉｖ２［４：０］の変化に応じて、クロック有効信号ｃｋｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］の値も変化している。
【０２００】
下から２段目には、要求信号ｃｈｇｒｅｑを示している。要求信号ｃｈｇｒｅｑは、デジタル信号ｄｉｖ２［４：０］の値が変更される度に出力レベルが切り換わるトグル信号である。
最下段には、周波数設定回路ＤＩＶから出力されるクロック信号ｃｐｕｃｋを示している。クロック有効信号ｃｋｖｌｄ［１５：０］及びモード信号ｃｋｍｏｄｅ［１：０］の値に応じたクロック信号ｃｐｕｃｋが出力されている。
＜発明の実施の形態４＞
次に、図２７を用いて、実施の形態４に係る半導体装置について説明する。
図２７は、実施の形態４に係るクロック制御回路１４の拡大図である。図１２に示した実施の形態１に係るクロック制御回路１４と比較して、図２７に示した本実施の形態に係るクロック制御回路１４では、レジスタＲＥＧから第１クロック調整部３１へ５ビットのクロック数の下限値ｍｉｎ０［４：０］が設定される。また、レジスタＲＥＧから第２クロック調整部３２へ５ビットのクロック数の下限値ｍｉｎ１［４：０］が設定される。
【０２０１】
下限値ｍｉｎ０［４：０］は、第１クロック調整部３１におけるクロック周波数調整の下限値である。実施の形態１では特に設定されていないため、第１クロック調整部３１から出力されるデジタル信号ｄｉｖ１［４：０］として、クロック数０／１６にあたる５'ｈ００まで設定することができた。本実施の形態では、例えばｍｉｎ０［４：０］＝５'ｈ０８とすると、第１クロック調整部３１から出力されるデジタル信号ｄｉｖ１［４：０］として、５'ｈ０８より小さい値は設定されないことになる。
【０２０２】
下限値ｍｉｎ１［４：０］は、第２クロック調整部３２におけるクロック周波数調整の下限値である。実施の形態１では特に設定されていないため、第１クロック調整部３１から出力されるデジタル信号ｄｉｖ２［４：０］として、クロック数０／１６にあたる５'ｈ００まで設定することができた。本実施の形態では、例えばｍｉｎ１［４：０］＝５'ｈ０８とすると、第２クロック調整部３２から出力されるデジタル信号ｄｉｖ２［４：０］として、５'ｈ０８より小さい値は設定されないことになる。
その他の構成は実施の形態１と同様であるため、説明を省略する。
【０２０３】
このように、第１クロック調整部３１におけるクロック周波数調整の下限値ｍｉｎ０［４：０］及び第２クロック調整部３２におけるクロック周波数調整の下限値ｍｉｎ１［４：０］を設けることにより、用途等に応じてクロック周波数調整幅を自由に調整することができるようになる。
【０２０４】
＜発明の実施の形態５＞
次に、図２８を用いて、実施の形態５に係る半導体装置について説明する。
図２８は、実施の形態５に係るシングルコアプロセッサ１１１、メモリアクセス検出部１２、クロック制御回路１４及びクロック生成回路１５の関係を詳細に示した図である。実施の形態５に係る半導体装置は、図４に示した実施の形態１に係るマルチコアプロセッサ１１がシングルコアプロセッサ１１１に置換されたものである。
【０２０５】
本実施の形態に係るメモリアクセス検出部１２には、命令キャッシュメモリＩＣ０、データキャッシュメモリＤＣ０、２次キャッシュメモリＬ２Ｃを活性化するためのイネーブル信号ｃｅｎ０１、ｃｅｎ０２、ｌ２ｃｅｎが入力されている。メモリアクセス検出部１２は、入力されたイネーブル信号ｃｅｎ０１、ｃｅｎ０２、ｌ２ｃｅｎの活性化回数（活性化率）、つまりアクセス回数を検出する。そして、メモリアクセス検出部１２は、このアクセス回数に基づき、シングルコアプロセッサ１１１における予想消費電流量を算出する。その他の構成については実施の形態１と同様であるため、説明を省略する。
【０２０６】
本実施の形態に係る半導体装置も、コアからメモリ領域へのアクセス回数を検出し、シングルコアプロセッサ１１１の消費電流量を予想することができるメモリアクセス検出部１２を備えている。そのため、この予想消費電流量もしくはその変化量が所定の基準値を超えた場合、自動的にシングルコアプロセッサ１１１へ供給されるクロック信号ｃｐｕｃｋの周波数の低減することができる。従って、許容電流量を超えることによる誤動作を防止することができる。また、消費電流の急増に伴う電圧ドロップを効果的に抑制することができる。
【０２０７】
上述した発明の実施の形態１〜５は、適宜組み合わせることも可能である。
また、上述した発明の実施の形態では、携帯電話端末を主要な例として説明した。しかしながら、本発明は、スマートフォン、携帯ゲーム端末、タブレットＰＣ、ノートＰＣ等のその他の無線通信端末にも適用でき、無線通信機能を有していない他の電子機器にも適用できる。また、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【０２０８】
１  半導体装置
２  電源供給装置
１１  マルチコアプロセッサ
１１１  シングルコアプロセッサ
１２  メモリアクセス検出部
１３  内部電源制御回路
１４  クロック制御回路
１５  クロック生成回路
１６  周辺回路
１７、２３  端子
２０Ａ  ディスプレイデバイス
２０Ｂ  カメラデバイス
２１  レギュレータ
２２  電圧設定回路
３０Ａ  ディスプレイデバイス
３０Ｂ  カメラデバイス
３１  第１クロック調整部
３２  第２クロック調整部
３３  タイミング生成回路
９０  ＣＰＵ電源領域
５００  無線通信端末
５０１、５０２  筐体
５０３  ヒンジ
６００  電子装置
６０１  アプリケーションプロセッサ
６０２  ベースバンドプロセッサ
６０３  ＲＦサブシステム
６０４  メモリ
６０５  バッテリ
６０６  パワーマネジメントＩＣ
６０７  表示部
６０８  カメラ部
６０９  操作入力部
６１０  オーディオＩＣ
６１１  マイク
６１２  スピーカ
ＡＤ１、ＡＤ１０〜ＡＤ１９、ＡＤ２０〜ＡＤ２４  加算器
ＡＤ３０〜ＡＤ３２、ＡＤ４０、ＡＤ４１、ＡＤ５０  加算器
ＡＤＤ  加算回路
０〜１６、ＡＮ１、ＡＮ２  ＡＮＤゲート
ＢＬ０〜ＢＬ３  ブロック
Ｃ１  バイパスコンデンサ
ＣＭＰ１、ＣＭＰ２  デジタル比較器
ＣＮＴ０〜ＣＮＴ１９  カウンタ
ＣＰＵ０、ＣＰＵ１  コア
ＤＣ０、ＤＣ１  データキャッシュメモリ
Ｄ１  遅延回路
ＤＣＣ０、ＤＣＣ１、ＩＣＣ０、ＩＣＣ１、Ｌ２ＣＣ  メモリコントローラ
ＤＥＣ１、ＤＥＣ２  デコーダ
Ｆ０〜Ｆ１７、ＤＦ１〜ＤＦ５、ＤＦ１１、ＤＦ１２  Ｄフリップフロップ
ＤＦ２０〜ＤＦ２４、ＤＦ３０、ＤＦ３１  Ｄフリップフロップ
ＤＦ４０〜ＤＦ４２、ＤＦ５０〜ＤＦ５３  Ｄフリップフロップ
ＤＩＶ  周波数設定回路
ＩＢ  内部バス
ＩＣ０、ＩＣ１  命令キャッシュメモリ
Ｌ２Ｃ  ２次キャッシュメモリ
Ｏ１、ＯＲ１  ＯＲゲート
ＰＥ０、ＰＥ１  プロセッサエレメント
ＰＬＬ  位相同期回路
ＲＥＧ、ＲＥＧ１、ＲＥＧ２  レジスタ
ＳＢ１、ＳＢ２、ＳＢ３  減算器
Ｓ１、Ｓ２、ＳＬ１、ＳＬ２、ＳＬ１０〜ＳＬ１４  セレクタ
ＳＬ２０、ＳＬ２１、ＳＬ３０〜ＳＬ３２、ＳＬ４０〜ＳＬ４３  セレクタ
ＳＭ  ステートマシン
ＴＲ  トランジスタ
Ｘ１  ＸＯＲゲート
【図１Ａ】
0005806529.tif 000002
【図１Ｂ】
0005806529.tif 000003
【図２】
0005806529.tif 000004
【図３】
0005806529.tif 000005
【図４】
0005806529.tif 000006
【図５】
0005806529.tif 000007
【図６】
0005806529.tif 000008
【図７】
0005806529.tif 000009
【図８】
0005806529.tif 000010
【図９】
0005806529.tif 000011
【図１０】
0005806529.tif 000012
【図１１】
0005806529.tif 000013
【図１２】
0005806529.tif 000014
【図１３Ａ】
0005806529.tif 000015
【図１３Ｂ】
0005806529.tif 000016
【図１３Ｃ】
0005806529.tif 000017
【図１４Ａ】
0005806529.tif 000018
【図１４Ｂ】
0005806529.tif 000019
【図１５】
0005806529.tif 000020
【図１６】
0005806529.tif 000021
【図１７】
0005806529.tif 000022
【図１８】
0005806529.tif 000023
【図１９】
0005806529.tif 000024
【図２０】
0005806529.tif 000025
【図２１】
0005806529.tif 000026
【図２２】
0005806529.tif 000027
【図２３】
0005806529.tif 000028
【図２４】
0005806529.tif 000029
【図２５】
0005806529.tif 000030
【図２６】
0005806529.tif 000031
【図２７】
0005806529.tif 000032
【図２８】
0005806529.tif 000033