説明

半導体装置、それを用いた無線通信端末、及びクロック周波数制御方法

【課題】無線通信端末等に好適な半導体装置を提供すること。
【解決手段】半導体装置1は、制御信号divに応じて、出力するクロック信号の周波数を変化させるクロック生成回路15と、クロック信号に応じて動作する演算回路(例えばCPU0)と、演算回路CPU0からのアクセスに応じ、活性化される記憶回路(例えばIC0)と、記憶回路IC0に対する演算回路CPU0のアクセス回数を検出し、アクセス回数が増えた場合に要求信号(例えばpsreq1)を出力するメモリアクセス検出部12と、要求信号psreq1に応じて、クロック信号の周波数を下げるための制御信号divを生成するクロック制御回路14と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置、それを用いた無線通信端末、及びクロック周波数制御方法に関する。
【背景技術】
【0002】
近年、複数の機能を提供可能な回路を一つの半導体チップに集積したSoC(System- on-a-Chip)技術が開発されている。さらに、このSoC技術を用いた半導体装置において、CPU(Central Processing Unit)のマルチコア化や動作クロック信号の周波数が上昇する傾向にある。
【0003】
ところで、特許文献1〜3には、例えばCPUなどの稼働率が低い場合に、動作クロック信号の周波数を低減することにより、消費電力を低減する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11−219237号公報
【特許文献2】特開平11−184554号公報
【特許文献3】特開2003−140768号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願の発明者等は、半導体装置の開発に際し、様々な課題を見出した。本願で開示される各実施の形態は、例えば無線通信端末等に好適な半導体装置を提供する。さらに詳細な特徴は、本明細書の記述及び添付図面によって明らかにされる。
【課題を解決するための手段】
【0006】
本明細書に開示される一つの態様は半導体装置を含み、当該半導体装置はメモリアクセス検出部を有する。
【発明の効果】
【0007】
本発明により、例えば無線通信端末等に好適であって、良質な半導体装置を提供することができる。
【図面の簡単な説明】
【0008】
【図1A】無線通信端末500の構成例を示す外観図である。
【図1B】無線通信端末500の構成例を示す外観図である。
【図2】実施の形態1に係る電子装置600の構成例を示すブロック図である。
【図3】実施の形態1に係る半導体装置1及び電源供給装置2を含むシステムを示すブロック図である。
【図4】マルチコアプロセッサ11、メモリアクセス検出部12、クロック制御回路14及びクロック生成回路15の関係をより詳細に示した図である。
【図5】命令キャッシュメモリIC0の拡大図である。
【図6】メモリアクセス検出部12の内部構成を示すブロック図である。
【図7】ステートマシンSMの回路図である。
【図8】カウンタCNT0の回路図である。
【図9】加算回路ADDの回路図である。
【図10】デジタル比較器CMP1の回路図である。
【図11】デジタル比較器CMP2の回路図である。
【図12】クロック制御回路14の拡大図である。
【図13A】デジタル信号d[2:0]とデジタル信号div0[4:0]との対応表である。
【図13B】5ビットのデジタル信号div1[4:0]が取り得る値を示す表である。
【図13C】デジタル信号div2[4:0]とパルス有効信号cpvld[15:0]及びモード信号ckmode[1:0]との対応表である。
【図14A】第1クロック調整部31によるクロック周波数制御を示すグラフである。
【図14B】第2クロック調整部32によるクロック周波数制御を示すグラフである。
【図15】周波数設定回路DIVの回路図である。
【図16】周波数設定回路DIVの動作を説明するためのタイミングチャートの一例である。
【図17】周波数設定回路DIVの動作を説明するためのタイミングチャートの他の例である。
【図18】周波数設定回路DIVの動作を説明するためのタイミングチャートの他の例である。
【図19】周波数設定回路DIVの動作を説明するためのタイミングチャートの他の例である。
【図20】クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
【図21】実施の形態2に係るメモリアクセス検出部12の回路図である。
【図22】実施の形態2に係るクロック制御回路14の拡大図である。
【図23】クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
【図24】実施の形態3に係るメモリアクセス検出部12の回路図である。
【図25】実施の形態3に係るクロック制御回路14の拡大図である。
【図26】クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
【図27】実施の形態4に係るクロック制御回路14の拡大図である。
【図28】実施の形態5に係るシングルコアプロセッサ111、メモリアクセス検出部12、クロック制御回路14及びクロック生成回路15の関係を詳細に示した図である。
【発明を実施するための形態】
【0009】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【0010】
<発明の実施の形態1>
まず、図1A、1B及び2を参照して、本実施の形態に係る半導体装置が適用される電子機器として好適な無線通信端末の概要について説明する。図1A及び1Bは、無線通信端末500の構成例を示す外観図である。なお、図1A、1B及び2の構成例では、無線通信端末500が折り畳み式の携帯電話端末である場合について示している。しかしながら、無線通信端末500は、スマートフォン、携帯ゲーム端末、タブレットPC(Personal Computer)、ノートPC等のその他の無線通信端末であってもよい。また、当然のことながら、本実施の形態に係る半導体装置は、無線通信端末以外に適用することも可能である。
【0011】
図1Aは、折り畳み式携帯電話端末としての無線通信端末500の閉状態(折り畳み状態)を示している。図1Bは、無線通信端末500の開状態を示している。無線通信端末500は、第1の筐体501と第2の筐体502がヒンジ503を介して連結された構造を有する。図1A及び1Bの例では、第1の筐体501には複数の操作ボタンが配置されている。一方、第2の筐体502は、2つのディスプレイデバイス20A及び30Aと、2つのカメラデバイス20B及び30Bを有する。ディスプレイデバイス20A及び30Aは、LCD(Liquid Crystal Display)、又はOLED(Organic Light-Emitting Diode)ディスプレイ等である。
【0012】
ディスプレイデバイス20Aは、その表示面が第2の筐体502の内側の主面(前面)に位置するように配置されている。つまり、ディスプレイデバイス20Aは、開状態とされた無線通信端末500をユーザーが操作する際に当該ユーザーによって視認されるメインディスプレイである。一方、ディスプレイデバイス30Aは、その表示面が第2の筐体502の外側の主面(背面)に位置するように配置されたサブディスプレイである。
【0013】
カメラデバイス20Bは、そのレンズユニットが第2の筐体502の外側の主面(背面)に位置するように配置されたメインカメラである。一方、カメラデバイス30Bは、そのレンズユニットが第2の筐体502の内側の主面(前面)に位置するように配置されたサブカメラである。
【0014】
続いて、図2を参照して、本発明に係る半導体装置が搭載される電子装置600の構成について説明する。図2は、本発明の実施の形態1に係る電子装置600の構成例を示すブロック図である。電子装置600は、例えば、図1A、1Bに示した無線通信端末500の内部に搭載される。図2に示すように、電子装置600は、アプリケーションプロセッサ601、ベースバンドプロセッサ602、RF(Radio Frequency)サブシステム603、メモリ604、バッテリ605、パワーマネジメントIC(PMIC:Power Management Integrated Circuit)606、表示部607、カメラ部608、操作入力部609、オーディオIC610、マイク611、スピーカ612を含む。
【0015】
アプリケーションプロセッサ601は、メモリ604に格納されたプログラムを読み出して、電子装置600の各種機能を実現するための処理を行う。例えば、アプリケーションプロセッサ601は、メモリ604からOS(Operating System)プログラムを実行すると共に、このOSプログラムを動作基板とするアプリケーションプログラムを実行する。
【0016】
ベースバンドプロセッサ602は、電子端末が送受信するデータに対して符号化(例えば、畳み込み符号やターボ符号等の誤り訂正符号化)処理又は復号化処理等を含むベースバンド処理を行う。より具体的には、ベースバンドプロセッサ602は、送信データをアプリケーションプロセッサ601から受け取り、受け取った送信データに対して符号化処理を施して、RFサブシステム603に送信する。また、ベースバンドプロセッサ602は、RFサブシステム603から受信データを受け取り、受け取った受信データに対して復号化処理を施してアプリケーションプロセッサ601に送信する。
【0017】
RFサブシステム603は、電子装置600が送受信するデータに対する変調処理又は復調処理を行う。より具体的には、RFサブシステム603は、ベースバンドプロセッサ602から受け取った送信データを搬送波により変調処理して送信信号を生成し、アンテナを介して送信信号を出力する。また、RFサブシステム603は、アンテナを介して受信信号を受信し、受信信号を搬送波により復調処理して受信データを生成し、当該受信データをベースバンドプロセッサ602に送信する。
【0018】
メモリ604は、アプリケーションプロセッサ601により利用されるプログラム及びデータを格納する。また、メモリ604は、電源が遮断されても記憶したデータを保持する不揮発性メモリと、電源が遮断された場合に記憶したデータがクリアされる揮発性メモリを含む。
【0019】
バッテリ605は、電池であり、電子装置600が外部電源によらずに動作する場合に利用される。なお、電子装置600は、外部電源が接続されている場合においてもバッテリ605の電源を利用してもよい。また、バッテリ605としては、二次電池を利用することが好ましい。
【0020】
パワーマネジメントIC606は、バッテリ605又は外部電源から内部電源を生成する。この内部電源は、電子装置600の各ブロックに与えられる。このとき、パワーマネジメントIC606は、内部電源の供給を受けるブロック毎に内部電源の電圧を制御する。パワーマネジメントIC606は、アプリケーションプロセッサ601からの指示に基づき内部電源の電圧制御を行う。さらに、パワーマネジメントIC606は、ブロックごとに内部電源の供給と遮断とを制御することもできる。また、パワーマネジメントIC606は、外部電源の供給がある場合、バッテリ605への充電制御も行う。
【0021】
表示部607は、例えば、液晶表示装置であって、アプリケーションプロセッサ601における処理に従い様々な画像を表示する。表示部607において表示される画像には、ユーザーが電子装置600に動作指示を与えるユーザーインタフェース画像、カメラ画像、動画等が表される。
【0022】
カメラ部608は、アプリケーションプロセッサからの指示に従い、画像を取得する。操作入力部609は、ユーザーが操作して電子装置600に操作指示を与えるユーザーインタフェースである。オーディオIC610は、アプリケーションプロセッサ601から送信される音声データをデコードしてスピーカ612を駆動すると共に、マイク611から得た音声情報をエンコードして音声データを生成し、当該音声データをアプリケーションプロセッサ601に出力する。
【0023】
次に、本実施の形態に係る半導体装置について説明する。
図3は、実施の形態1に係る半導体装置1及び電源供給装置2を含むシステムを示すブロック図である。ここで、図3に示す半導体装置1は、例えば図2に示すアプリケーションプロセッサ601に対応し、図3に示す電源供給装置2は図2に示すパワーマネジメントIC606に対応している。
【0024】
図3に示す半導体装置1は、マルチコアプロセッサ11、メモリアクセス検出部12、内部電源制御回路13、クロック制御回路14、クロック生成回路15、周辺回路16を有する。ここで、半導体装置1は、例えばSoCである。
【0025】
マルチコアプロセッサ11は、複数のコア、コア毎に設けられた1次キャッシュメモリ、複数のコアに共有される2次キャッシュメモリを備え、様々な演算処理を実施する。また、マルチコアプロセッサ11にはクロック生成回路15から出力されたクロック信号cpuckが供給される。マルチコアプロセッサ11は、内部バスIBを介して、他の回路とのデータ送受信が可能である。なお、マルチコアプロセッサ11の詳細については、図4を用いて後述する。
【0026】
メモリアクセス検出部12は、所定時間毎にマルチコアプロセッサ11内の各コアが1次キャッシュメモリへアクセスする際に出力されるイネーブル信号cen及び2次キャッシュメモリへアクセスする際に出力されるイネーブル信号l2cenの活性化回数(活性化率)、つまりアクセス回数を検出する。そして、メモリアクセス検出部12は、イネーブル信号cen、l2cenの活性化回数に基づき、マルチコアプロセッサ11における予想消費電流量を算出する。この予想消費電流量が所定の基準値を超えた場合、メモリアクセス検出部12は、マルチコアプロセッサ11に供給されるクロック信号cpuckの周波数の低減を要求するための要求信号psreq1をクロック制御回路14に対し出力する。また、この予想消費電流量の変化量が所定の基準値を超えた場合も、メモリアクセス検出部12は、マルチコアプロセッサ11に供給されるクロック信号cpuckの周波数の低減を要求するための要求信号psreq2をクロック制御回路14に対し出力する。なお、メモリアクセス検出部12の詳細については、図6を用いて後述する。
【0027】
図3に示すように、ここで、マルチコアプロセッサ11及びメモリアクセス検出部12は、同じ電源電圧が供給されるCPU電源領域90に含まれている。CPU電源領域90には、電源供給装置2から端子17を介して高電位側の電源電圧VDDが供給される。また、CPU電源領域90は、スイッチであるトランジスタTRを介して低電位側の電源(例えばグランド)に接続されている。すなわち、トランジスタTRがオン状態(導通状態)となった場合、マルチコアプロセッサ11及びメモリアクセス検出部12に電源が供給される。CPU電源領域90に供給される電源のオン・オフ、つまりトランジスタTRのオン・オフは、内部電源制御回路13から出力される制御信号pwenによって制御される。
【0028】
内部電源制御回路13は、マルチコアプロセッサ11の電源のオン・オフを制御するための制御信号pwenをトランジスタTRのゲートに出力する。また、クロック制御回路14に対し、マルチコアプロセッサ11へのクロック供給を要求する要求信号cpuckreqを出力する。内部電源制御回路13は、内部バスIBと接続されている。なお、内部バスIBには、クロック生成回路15から出力されたクロック信号ibckが供給される。
【0029】
クロック制御回路14は、クロック生成回路15を制御するための回路である。クロック制御回路14は、内部バスIBと接続されている。クロック制御回路14は、定期的に、メモリアクセス検出部12が活性化率を検出するための実行信号checkをメモリアクセス検出部12に対し出力する。また、クロック制御回路14は、メモリアクセス検出部12から出力された要求信号psreq1やpsreq2に応じた分周制御信号divをクロック生成回路15に対し出力する。さらに、クロック制御回路14は、内部電源制御回路13から出力された要求信号cpuckreqに応じた停止制御信号stpをクロック生成回路15に対し出力する。つまり、内部電源制御回路13から要求信号ckreqが出力された場合、クロック制御回路14は、クロック信号cpuckの停止を解除する停止制御信号stpを出力する。これにより、クロック生成回路15はクロック信号cpuckの出力を開始する。
【0030】
クロック生成回路15は、マルチコアプロセッサ11に供給されるクロック信号cpuck、内部バスIBに供給されるクロック信号ibck、クロック制御回路14に供給されるクロック信号ccckを生成するための回路である。また、クロック生成回路15は、クロック制御回路14から出力された分周制御信号divに基づいて、マルチコアプロセッサ11へ供給されるクロック信号cpuckの周波数を変更することができる。さらに、クロック生成回路15は、クロック制御回路14から出力された停止制御信号stpに基づいて、各クロック信号の出力を停止もしくは開始する。なお、クロック制御回路14及びクロック生成回路15の詳細については後述する。
【0031】
周辺回路16は、マルチコアプロセッサ11により利用される回路である。周辺回路16としては、例えば、タイマユニット、ウォッチドッグタイマユニット、DMA(Direct Memory Access)ユニット、低電圧検出ユニット、パワーオンリセット(POR)ユニット等が挙げられる。周辺回路16は、内部バスIBを介して、マルチコアプロセッサ11と接続されている。
【0032】
このように、本実施の形態に係る半導体装置1は、各コアから各メモリ領域へのアクセス回数を検出し、マルチコアプロセッサ11の消費電流量を予想することができるメモリアクセス検出部12を備えている。そのため、この予想消費電流量もしくはその変化量が所定の基準値を超えた場合、自動的にマルチコアプロセッサ11へ供給されるクロック信号cpuckの周波数の低減することができる。従って、許容電流量を超えることによる誤動作を防止することができる。また、消費電流の急増に伴う電圧ドロップを効果的に抑制することができる。
【0033】
ここで、本実施の形態では、プロセッサが、マルチコアプロセッサであるが、実施の形態5において後述するように、本発明はシングルコアプロセッサに適用することも可能である。他方、マルチコアプロセッサでは、複数のコアの稼働率が同時に高くなるケースはまれである。そのため、このようなケースに合わせて許容電流量を大きくするのは、大型化やコストアップにつながり、好ましくない。
【0034】
本実施の形態では、許容電流量を大きくすることなく、複数のコアの稼働率が同時に高くなる場合にのみ、一時的にプロセッサへ供給するクロック信号の周波数の低減し、消費電流量を抑制することができる。すなわち、本発明は、マルチコアプロセッサ用途に好適であるといえる。
【0035】
次に、電源供給装置2について説明する。電源供給装置2は、レギュレータ21と電圧設定回路22とを有する。電源供給装置2は、例えば電源用のLSIである。レギュレータ21は、電圧設定回路22から出力された制御信号に応じて、端子23に出力する電圧を調整することができる。レギュレータ21から出力された電源電圧は、端子23を介して半導体装置1の端子17に供給される。
【0036】
電圧設定回路22は、例えば、半導体装置1からのフィードバック信号に応じて、レギュレータ21から出力される電圧を調整する(不図示)。また、半導体装置1の端子17と電源供給装置2の端子23との間には、バイパスコンデンサC1が設けられている。
【0037】
次に、図4を参照して、マルチコアプロセッサ11、メモリアクセス検出部12、クロック制御回路14及びクロック生成回路15について、より詳細に説明する。図4は、マルチコアプロセッサ11、メモリアクセス検出部12、クロック制御回路14及びクロック生成回路15の関係をより詳細に示した図である。
【0038】
まず、マルチコアプロセッサ11の内部構成について説明する。図4に示すように、マルチコアプロセッサ11は、2つのプロセッサエレメントPE0、PE1、メモリコントローラL2CC、2次キャッシュメモリL2Cを備えている。
【0039】
ここで、プロセッサエレメントPE0は、コアCPU0、メモリコントローラICC0、DCC0、命令キャッシュメモリIC0、データキャッシュメモリDC0を備えている。同様に、プロセッサエレメントPE1は、コアCPU1、メモリコントローラICC1、DCC1、命令キャッシュメモリIC1、データキャッシュメモリDC1を備えている。
【0040】
図4に示すように、マルチコアプロセッサ11内部の各構成要素(コアCPU0、CPU1、メモリコントローラICC0、ICC1、DCC0、DCC1、L2CC、命令キャッシュメモリIC0、IC1、データキャッシュメモリDC0、DC1、2次キャッシュメモリL2C)には、クロック生成回路15から出力されたCPUクロック信号cpuckが入力されている。つまり、各構成要素は、CPUクロック信号cpuckに応じて動作している。
【0041】
コアCPU0は、プロセッサエレメントPE0において核となる演算回路である。コアCPU0は、メモリコントローラICC0を介して、命令キャッシュメモリIC0に格納された命令を読み出す。具体的には、コアCPU0は、メモリコントローラICC0に対して、命令キャッシュメモリIC0へのアクセス要求を出力する。そして、メモリコントローラICC0により活性化された命令キャッシュメモリIC0にアクセスする。
【0042】
また、コアCPU0は、メモリコントローラDCC0を介して、データキャッシュメモリDC0に格納されたデータを読み出す。あるいは、データキャッシュメモリDC0に対してデータを書き込む。具体的には、コアCPU0は、メモリコントローラDCC0に対してデータキャッシュメモリDC0へのアクセス要求を出力する。そして、メモリコントローラDCC0により活性化されたデータキャッシュメモリDC0にアクセスする。
【0043】
さらに、コアCPU0は、メモリコントローラICC0、命令キャッシュメモリIC0、及びメモリコントローラL2CCを介して、2次キャッシュメモリL2Cへアクセスする。あるいは、メモリコントローラDCC0、データキャッシュメモリDC0、及びメモリコントローラL2CCを介して、2次キャッシュメモリL2Cへアクセスする。
【0044】
メモリコントローラICC0は、命令キャッシュメモリIC0へのアクセスを制御する制御回路である。メモリコントローラICC0は、コアCPU0のアクセス要求に応じて、命令キャッシュメモリIC0を活性化するためのイネーブル信号cen01の信号レベルをアクティブレベルへ切り換える。これにより、命令キャッシュメモリIC0が活性化される。
【0045】
メモリコントローラDCC0は、データキャッシュメモリDC0へのアクセスを制御する制御回路である。メモリコントローラDCC0は、コアCPU0のアクセス要求に応じて、データキャッシュメモリDC0を活性化するためのイネーブル信号cen02の信号レベルをアクティブレベルへ切り換える。これにより、データキャッシュメモリDC0が活性化される。
【0046】
命令キャッシュメモリIC0は、1次キャッシュメモリであって、コアCPU0が比較的頻繁に使用する命令が一時的に格納される揮発性半導体記憶回路である。データキャッシュメモリDC0は、1次キャッシュメモリであって、コアCPU0が比較的頻繁に使用するデータが一時的に格納される揮発性半導体記憶回路である。命令キャッシュメモリIC0やデータキャッシュメモリDC0などのキャッシュメモリ用途には、SRAM(Static Random Access Memory)が多用される。
【0047】
ここで、図5は、命令キャッシュメモリIC0の拡大図である。図5に示すように、本実施の形態では、命令キャッシュメモリIC0は、個別に選択(活性化)可能な4つのブロックBL0〜BL3から構成されている。ここで、ブロックBL0〜BL3は、それぞれイネーブル信号cen01[0]〜cen01[3]により制御されている。
【0048】
換言すると、イネーブル信号cen01は、ブロックBL0を選択するためのcen01[0]、ブロックBL1を選択するためのcen01[1]、ブロックBL2を選択するためのcen01[2]、及びブロックBL0を選択するためのcen01[3]から構成される4ビットの信号(cen01[3:0])である。このような構成により、必要な命令が格納されたブロックのみが活性化され、消費電力を低減することができる。一般化すると、命令キャッシュメモリIC0が、n(nは自然数)個のブロックから構成され、それらが個別に活性化される場合、イネーブル信号cen01もnビットとすればよい。なお、ブロック数nは任意に設計することができる。
【0049】
また、本実施の形態では、他のキャッシュメモリ(命令キャッシュメモリIC1、データキャッシュメモリDC0、DC1、2次キャッシュメモリL2C)についても、命令キャッシュメモリIC0と同様に、個別に選択可能な4つのブロックから構成されている。
【0050】
コアCPU1は、プロセッサエレメントPE1において核となる演算回路である。コアCPU1は、メモリコントローラICC1を介して、命令キャッシュメモリIC1に格納された命令を読み出す。具体的には、コアCPU1は、メモリコントローラICC1に対して、命令キャッシュメモリIC1へのアクセス要求を出力する。そして、メモリコントローラICC1により活性化された命令キャッシュメモリIC1にアクセスする。
【0051】
また、コアCPU1は、メモリコントローラDCC1を介して、データキャッシュメモリDC1に格納されたデータを読み出す。あるいは、データキャッシュメモリDC1に対してデータを書き込む。具体的には、コアCPU1は、メモリコントローラDCC1に対してデータキャッシュメモリDC1へのアクセス要求を出力する。そして、メモリコントローラDCC1により活性化されたデータキャッシュメモリDC1にアクセスする。
【0052】
さらに、コアCPU1は、メモリコントローラICC1、命令キャッシュメモリIC1、及びメモリコントローラL2CCを介して、2次キャッシュメモリL2Cへアクセスする。あるいは、メモリコントローラDCC1、データキャッシュメモリDC1、及びメモリコントローラL2CCを介して、2次キャッシュメモリL2Cへアクセスする。
【0053】
メモリコントローラICC1は、命令キャッシュメモリIC1へのアクセスを制御する制御回路である。メモリコントローラICC1は、コアCPU1のアクセス要求に応じて、命令キャッシュメモリIC1を活性化するためのイネーブル信号cen11の信号レベルをアクティブレベルへ切り換える。これにより、命令キャッシュメモリIC1が活性化される。
【0054】
メモリコントローラDCC1は、データキャッシュメモリDC1へのアクセスを制御する制御回路である。メモリコントローラDCC1は、コアCPU1のアクセス要求に応じて、データキャッシュメモリDC1を活性化するためのイネーブル信号cen12の信号レベルをアクティブレベルへ切り換える。これにより、データキャッシュメモリDC1が活性化される。
【0055】
命令キャッシュメモリIC1は、1次キャッシュメモリであって、コアCPU1が比較的頻繁に使用する命令が一時的に格納される揮発性半導体記憶回路である。データキャッシュメモリDC1は、1次キャッシュメモリであって、コアCPU1が比較的頻繁に使用するデータが一時的に格納される揮発性半導体記憶回路である。
【0056】
メモリコントローラL2CCは、2次キャッシュメモリL2Cへのアクセスを制御する制御回路である。メモリコントローラL2CCは、コアCPU1のアクセス要求に応じて、2次キャッシュメモリL2Cを活性化するためのイネーブル信号l2cenの信号レベルをアクティブレベルへ切り換える。これにより、2次キャッシュメモリL2Cが活性化される。
【0057】
2次キャッシュメモリL2Cは、1次キャッシュメモリよりもコアCPU0、CPU1による使用頻度が低い命令やデータが一時的に格納される揮発性半導体記憶回路である。命令キャッシュメモリIC0、IC1やデータキャッシュメモリDC0、DC1などの1次キャッシュメモリと同様に、2次キャッシュメモリL2CにもSRAMが多用される。
【0058】
次に、メモリアクセス検出部12について説明する。図4に示すように、メモリアクセス検出部12には、命令キャッシュメモリIC0、IC1、データキャッシュメモリDC0、DC1、2次キャッシュメモリL2Cを活性化するためのイネーブル信号cen01、cen02、cen11、cen12、l2cenが入力されている。メモリアクセス検出部12は、入力されたイネーブル信号cen01、cen02、cen11、cen12、l2cenの活性化回数(活性化率)、つまりアクセス回数を検出する。そして、メモリアクセス検出部12は、このアクセス回数に基づき、マルチコアプロセッサ11における予想消費電流量を算出する。このメモリアクセス検出部12における処理は、クロック制御回路14が出力する実行信号checkに応じて繰り返し実行される。
【0059】
ここで、図6を用いて、メモリアクセス検出部12について詳細に説明する。図6は、メモリアクセス検出部12の内部構成を示すブロック図である。図6に示すように、メモリアクセス検出部12は、ステートマシンSM、20個のカウンタCNT0〜CNT19、加算回路ADD、レジスタREG1、REG2、デジタル比較器CMP1、CMP2を備えている。
【0060】
ステートマシンSMは、実行信号check及びクロック信号cpuckから、ステート信号addst1、addst2、cmpst1、cmpst2を生成する。
【0061】
ここで、図7は、ステートマシンSMの回路図である。図7に示すように、ステートマシンSMは、5個のDフリップフロップDF1〜DF5、ANDゲートAN1を備えている。全てのDフリップフロップDF1〜DF5のクロック入力にはクロック信号cpuckが入力されている。DフリップフロップDF1のデータ入力には、実行信号checkが入力されている。
【0062】
ANDゲートAN1の一方入力には、実行信号checkが入力され、他方入力にはDフリップフロップDF1の非反転出力信号の反転信号(つまり、DフリップフロップDF1の反転出力信号に同じ)が入力される。ここで、実行信号checkは、クロック信号cpuckと同期した信号であって、クロック信号cpuckの整数倍の周期を有している。また、DフリップフロップDF1の非反転出力信号は、実行信号checkがクロック信号cpuckの周期分だけ遅延した信号である。そのため、ANDゲートAN1の出力信号として、実行信号checkの立ち上がりからクロック信号cpuckの周期分だけHレベルになる信号が得られる。
【0063】
DフリップフロップDF2のデータ入力には、ANDゲートAN1の出力信号が入力されている。DフリップフロップDF2の非反転出力信号は、ステート信号addst1である。ステート信号addst1は、ANDゲートAN1の出力信号がクロック信号cpuckの周期分だけ遅延した信号である。
【0064】
DフリップフロップDF3のデータ入力には、ステート信号addst1が入力されている。DフリップフロップDF3の非反転出力信号は、ステート信号addst2である。ステート信号addst2は、ステート信号addst1がクロック信号cpuckの周期分だけ遅延した信号である。
【0065】
DフリップフロップDF4のデータ入力には、ステート信号addst2が入力されている。DフリップフロップDF4の非反転出力信号は、ステート信号cmpst1である。ステート信号cmpst1は、ステート信号addst2がクロック信号cpuckの周期分だけ遅延した信号である。
【0066】
DフリップフロップDF5のデータ入力には、ステート信号cmpst1が入力されている。DフリップフロップDF5の非反転出力信号は、ステート信号cmpst2である。ステート信号cmpst2は、ステート信号cmpst1がクロック信号cpuckの周期分だけ遅延した信号である。
【0067】
図6に戻って、カウンタCNT0は、クロック信号cpuck及びステート信号addst1に応じて、イネーブル信号cen01[0]の活性化回数をカウントする。カウンタCNT1は、クロック信号cpuck及びステート信号addst1に応じて、イネーブル信号cen01[1]の活性化回数をカウントする。他のカウンタCNT2〜CNT19も同様に、クロック信号cpuck及びステート信号addst1に応じて、それぞれ入力されるイネーブル信号の活性化回数をカウントする。
【0068】
ここで、カウンタCNT0〜CNT3は、命令キャッシュメモリIC0の4つのブロックのそれぞれに入力されるイネーブル信号cen01[0]〜cen01[3]の活性化回数をカウントする。
カウンタCNT4〜CNT7は、データキャッシュメモリDC0の4つのブロックのそれぞれに入力されるイネーブル信号cen02[0]〜cen02[3]の活性化回数をカウントする。
【0069】
カウンタCNT8〜CNT11は、命令キャッシュメモリIC1の4つのブロックのそれぞれに入力されるイネーブル信号cen11[0]〜cen11[3]の活性化回数をカウントする。
カウンタCNT12〜CNT15は、データキャッシュメモリDC1の4つのブロックのそれぞれに入力されるイネーブル信号cen12[0]〜cen12[3]の活性化回数をカウントする。
【0070】
カウンタCNT16〜CNT19は、2次キャッシュメモリL2Cの4つのブロックのそれぞれに入力されるイネーブル信号l2cen[0]〜l2cen[3]の活性化回数をカウントする。
カウンタCNT0〜CNT19は、活性化回数に対してイネーブル信号毎に定められた重みを付加して、それぞれカウント値cnt0〜cnt19を出力する。この重みは、メモリアクセス1回毎の値である。この重みは、各キャッシュメモリのライブラリデータから得られるメモリアクセスに対する電流値に基づいて算出することができる。
【0071】
ここで、図8は、カウンタCNT0の回路図である。図8に示すように、カウンタCNT0は、2個のDフリップフロップDF11、DF12、ANDゲートAN2、ORゲートOR1、加算器AD1、2個のセレクタSL1、SL2を備えている。
【0072】
両方のDフリップフロップDF11、DF12のクロック入力にはクロック信号cpuckが入力されている。DフリップフロップDF11のデータ入力にはイネーブル信号cen01[0]が入力されている。ANDゲートAN2の一方入力にはDフリップフロップDF11の非反転出力信号が入力されている。ANDゲートAN2の他方入力にはステート信号addst1の反転信号が入力されている。
【0073】
ANDゲートAN2の出力はセレクタSL1の制御信号である。すなわち、ANDゲートAN2の出力値がHレベル(「1」)の場合、セレクタSL1の1入力が選択され、ANDゲートAN2の出力値がLレベル(「0」)の場合、セレクタSL1の0入力が選択される。ここで、セレクタSL1の0入力には11ビットのリセット値11'h000が入力されている。一方、セレクタSL1の1入力には加算器AD1の出力が接続されている。加算器AD1の一方入力には、11ビットの重み信号wt0[10:0]が入力されている。加算器AD1の他方入力には、カウンタCNT0のカウント値cnt0[10:0]が入力されている。つまり、加算器AD1は、重み信号wt0[10:0]とカウント値cnt0[10:0]とを加算した値を出力する。
【0074】
ORゲートOR1の一方入力にはDフリップフロップDF11の非反転出力信号が入力されている。ORゲートOR1の他方入力にはステート信号addst1が入力されている。ORゲートOR1の出力はセレクタSL2の制御信号である。すなわち、ORゲートOR1の出力値がHレベル(「1」)の場合、セレクタSL2の1入力が選択され、ORゲートOR1の出力値がLレベル(「0」)の場合、セレクタSL2の0入力が選択される。ここで、セレクタSL2の0入力には11ビットのカウンタCNT0のカウント値cnt0[10:0]が接続されている。一方、セレクタSL2の1入力にはセレクタSL1の出力信号が接続されている。
【0075】
次に、カウンタCNT0の動作について説明する。実行信号checkの立ち上がりに続いてステート信号addst1がHレベルになる毎に、カウント値cnt0はリセットされる。従って、ステート信号addst1がLレベルの期間がカウント期間である。ステート信号addst1がLレベルの場合、イネーブル信号cen01[0]もLレベルであれば、ORゲートOR1の出力値がLレベルとなる。そのため、セレクタSL2の0入力に接続されたカウンタCNT0のカウント値cnt0[10:0]が選択され、現状のカウント値cnt0[10:0]が保持される。
【0076】
ステート信号addst1がLレベルの場合に、イネーブル信号cen01[0]がHレベルとなると、ANDゲートAN2の出力値がHレベルとなる。そのため、セレクタSL1の1入力に接続された加算器AD1の出力信号が選択される。また、ORゲートOR1の出力値もHレベルとなる。そのため、セレクタSL2の1入力に接続されたセレクタSL1の出力信号が選択される。つまり、カウンタCNT0の出力である現状のカウント値cnt0[10:0]に重み信号wt0[10:0]を加算したものが新たなカウント値cnt0[10:0]として出力される。つまり、1カウント期間のアクセス回数分だけ重み信号wt0[10:0]が加算される。
【0077】
ステート信号addst1がHレベルになると、イネーブル信号cen01[0]の値に関わらず、ANDゲートAN2の出力値がLレベル、ORゲートOR1の出力値はHレベルとなる。そのため、セレクタSL1の0入力に接続されたリセット値11'h000が選択される。また、セレクタSL2の1入力に接続されたセレクタSL1の出力信号が選択される。つまり、カウント値cnt0[10:0]の値が、リセット値11'h000へリセットされる。その他のカウンタについても、カウンタCNT0と同様の構成を有し、同様に動作する。
【0078】
再び図6に戻って、加算回路ADDは、ステート信号addst1及びaddst2に応じて、カウンタCNT0〜CNT19のそれぞれのカウント値cnt0[10:0]〜cnt19[10:0]を合計し、その結果を合計値sum[15:0]として出力する。この合計値sum[15:0]が、予想消費電流量に相当する。
【0079】
ここで、図9を用いて、加算回路ADDの詳細について説明する。図9は、加算回路ADDの回路図である。図9に示すように、加算回路ADDは、21個の加算器AD10〜AD19、AD20〜AD24、AD30〜32、AD40、AD41、AD50、7個のDフリップフロップDF20〜DF24、DF30、DF31、7個のセレクタSL10〜SL14、SL20、SL21を備えている。全てのDフリップフロップDF20〜DF24、DF30、DF31のクロック入力にはクロック信号cpuckが入力されている。
【0080】
加算器AD10は、カウンタCNT0からの11ビットのカウント値cnt0[10:0]とカウンタCNT1からの11ビットのカウント値cnt1[10:0]とを加算する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
加算器AD11は、カウンタCNT2からの11ビットのカウント値cnt2[10:0]とカウンタCNT3からの11ビットのカウント値cnt3[10:0]とを加算する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
【0081】
加算器AD12は、カウンタCNT4からの11ビットのカウント値cnt4[10:0]とカウンタCNT5からの11ビットのカウント値cnt5[10:0]とを加算する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
加算器AD13は、カウンタCNT6からの11ビットのカウント値cnt6[10:0]とカウンタCNT7からの11ビットのカウント値cnt7[10:0]とを加算する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
【0082】
加算器AD14は、カウンタCNT8からの11ビットのカウント値cnt8[10:0]とカウンタCNT9からの11ビットのカウント値cnt9[10:0]とを加算する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
加算器AD15は、カウンタCNT10からの11ビットのカウント値cnt10[10:0]とカウンタCNT11からの11ビットのカウント値cnt11[10:0]する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
【0083】
加算器AD16は、カウンタCNT12からの11ビットのカウント値cnt12[10:0]とカウンタCNT13からの11ビットのカウント値cnt13[10:0]する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
加算器AD17は、カウンタCNT14からの11ビットのカウント値cnt14[10:0]とカウンタCNT15からの11ビットのカウント値cnt15[10:0]する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
【0084】
加算器AD18は、カウンタCNT16からの11ビットのカウント値cnt16[10:0]とカウンタCNT17からの11ビットのカウント値cnt17[10:0]する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
加算器AD19は、カウンタCNT18からの11ビットのカウント値cnt18[10:0]とカウンタCNT19からの11ビットのカウント値cnt19[10:0]する。ここで、桁上出力coutと合わせて12ビットの値を出力する。
【0085】
加算器AD20は、加算器AD10からの12ビットの出力値と加算器AD11からの12ビットの出力値とを加算する。ここで、桁上出力coutと合わせて13ビットの値を出力する。
加算器AD21は、加算器AD12からの12ビットの出力値と加算器AD13からの12ビットの出力値とを加算する。ここで、桁上出力coutと合わせて13ビットの値を出力する。
加算器AD22は、加算器AD14からの12ビットの出力値と加算器AD15からの12ビットの出力値とを加算する。ここで、桁上出力coutと合わせて13ビットの値を出力する。
加算器AD23は、加算器AD16からの12ビットの出力値と加算器AD17からの12ビットの出力値とを加算する。ここで、桁上出力coutと合わせて13ビットの値を出力する。
加算器AD24は、加算器AD18からの12ビットの出力値と加算器AD19からの12ビットの出力値とを加算する。ここで、桁上出力coutと合わせて13ビットの値を出力する。
【0086】
ステート信号addst1はセレクタSL10〜SL14の制御信号である。すなわち、ステート信号addst1がHレベル(「1」)の場合、セレクタSL10〜SL14の1入力が選択され、ステート信号addst1がLレベル(「0」)の場合、セレクタSL10〜SL14の0入力が選択される。ここで、セレクタSL10の1入力には、加算器AD20からの13ビットの出力値が入力されている。一方、セレクタSL10の0入力には、セレクタSL10の出力がデータ入力に接続されたDフリップフロップDF20からの非反転出力信号がフィードバックされている。
【0087】
同様に、セレクタSL11の1入力には、加算器AD21からの13ビットの出力値が入力されている。一方、セレクタSL11の0入力には、セレクタSL11の出力がデータ入力に接続されたDフリップフロップDF21からの非反転出力信号がフィードバックされている。
セレクタSL12の1入力には、加算器AD22からの13ビットの出力値が入力されている。一方、セレクタSL12の0入力には、セレクタSL12の出力がデータ入力に接続されたDフリップフロップDF22からの非反転出力信号がフィードバックされている。
【0088】
セレクタSL13の1入力には、加算器AD23からの13ビットの出力値が入力されている。一方、セレクタSL13の0入力には、セレクタSL13の出力がデータ入力に接続されたDフリップフロップDF23からの非反転出力信号がフィードバックされている。
セレクタSL14の1入力には、加算器AD24からの13ビットの出力値が入力されている。一方、セレクタSL14の0入力には、セレクタSL14の出力がデータ入力に接続されたDフリップフロップDF24からの非反転出力信号がフィードバックされている。
【0089】
加算器AD30は、DフリップフロップDF20からの13ビットの非反転出力信号とDフリップフロップDF21からの13ビットの非反転出力信号とを加算する。ここで、桁上出力coutと合わせて14ビットの値を出力する。
加算器AD31は、DフリップフロップDF22からの13ビットの非反転出力信号とDフリップフロップDF23からの13ビットの非反転出力信号とを加算する。ここで、桁上出力coutと合わせて14ビットの値を出力する。
加算器AD32は、DフリップフロップDF24からの13ビットの非反転出力信号と13ビットの0値13'h0000とを加算する。ここで、桁上出力coutと合わせて14ビットの値を出力する。
【0090】
加算器AD40は、加算器AD30からの14ビットの出力値と加算器AD31からの14ビットの出力値とを加算する。ここで、桁上出力coutと合わせて15ビットの値を出力する。
加算器AD41は、加算器AD32からの14ビットの出力値と14ビットの0値14'h0000とを加算ここで、桁上出力coutと合わせて15ビットの値を出力する。
【0091】
ステート信号addst2はセレクタSL20、SL21の制御信号である。すなわち、ステート信号addst2がHレベル(「1」)の場合、セレクタSL20、SL21の1入力が選択され、ステート信号addst2がLレベル(「0」)の場合、セレクタSL20、SL21の0入力が選択される。
【0092】
ここで、セレクタSL20の1入力には、加算器AD40からの15ビットの出力値が入力されている。一方、セレクタSL20の0入力には、セレクタSL20の出力がデータ入力に接続されたDフリップフロップDF30からの非反転出力信号がフィードバックされている。
同様に、セレクタSL21の1入力には、加算器AD41からの15ビットの出力値が入力されている。一方、セレクタSL21の0入力には、セレクタSL21の出力がデータ入力に接続されたDフリップフロップDF31からの非反転出力信号がフィードバックされている。
【0093】
最終的に、加算器AD50は、DフリップフロップDF30からの15ビットの非反転出力信号とDフリップフロップDF31からの15ビットの非反転出力信号とを加算する。ここで、桁上出力coutと合わせて16ビットの合計値sum[15:0]を出力する。この合計値sum[15:0]が、予想消費電流量に相当する。
【0094】
次に、加算回路ADDの動作について説明する。実行信号checkの立ち上がりに続いてステート信号addst1がHレベルになる毎に、DフリップフロップDF20〜DF24がそれよりも前段の加算器による加算値を取り込む。ステート信号addst1に続いてステート信号addst2がHレベルになる毎に、DフリップフロップDF30、DF31がそれよりも前段の加算器による加算値を取り込む。すなわち、このタイミングでこの合計値sum[15:0]が更新される。他方、ステート信号addst1、addst2がLレベルの場合、DフリップフロップDF20〜DF24、DF30、DF31からの出力値は変化しないため、加算器AD50から出力される合計値sum[15:0]も保持される。
【0095】
再び図6に戻って、デジタル比較器CMP1は、ステート信号cmpst1及びcmpst2に応じて、加算回路ADDから出力された合計値sum[15:0]と、レジスタREG1に格納された合計値sumの許容最大値thmax[15:0]とを比較する。そして、合計値sum[15:0]が、許容最大値thmax[15:0]を超えた場合、デジタル比較器CMP1は、マルチコアプロセッサ11に供給されるクロック信号cpuckの周波数の低減を要求するための要求信号psreq1をクロック制御回路14に対し出力する。
【0096】
デジタル比較器CMP2は、ステート信号cmpst1及びcmpst2に応じて、加算回路ADDから出力された合計値sum[15:0]の変化量と、レジスタREG2に格納された合計値sumの許容変化量thdel[15:0]とを比較する。そして、合計値sum[15:0]の変化量が、許容変化量thdel[15:0]を超えた場合、デジタル比較器CMP1は、マルチコアプロセッサ11に供給されるクロック信号cpuckの周波数の低減を要求するための要求信号psreq2をクロック制御回路14に対し出力する。
【0097】
ここで、図10、11を用いて、デジタル比較器CMP1、CMP2の詳細について説明する。まず、図10を用いてデジタル比較器CMP1について説明する。図10は、デジタル比較器CMP1の回路図である。図10に示すように、デジタル比較器CMP1は、1個の減算器SB1、3個のDフリップフロップDF40〜DF42、3個のセレクタSL30〜SL32を備えている。全てのDフリップフロップDF40〜DF42のクロック入力にはクロック信号cpuckが入力されている。
【0098】
ステート信号cmpst1はセレクタSL30、SL31の制御信号である。すなわち、ステート信号cmpst1がHレベル(「1」)の場合、セレクタSL30、SL31の1入力が選択され、ステート信号cmpst1がLレベル(「0」)の場合、セレクタSL30、SL31の0入力が選択される。
【0099】
ここで、セレクタSL30の1入力には、許容最大値thmax[15:0]が入力されている。一方、セレクタSL30の0入力には、セレクタSL30の出力がデータ入力に接続されたDフリップフロップDF40からの非反転出力信号がフィードバックされている。
同様に、セレクタSL31の1入力には、加算回路ADDから出力された合計値sum[15:0]が入力されている。一方、セレクタSL31の0入力には、セレクタSL31の出力がデータ入力に接続されたDフリップフロップDF41からの非反転出力信号がフィードバックされている。
【0100】
減算器SB1は、DフリップフロップDF40の非反転出力信号からDフリップフロップDF41の非反転出力信号を減算する。つまり、許容最大値thmax[15:0]から合計値sum[15:0]を減算する。ここで、減算結果がマイナスになる場合(すなわち、合計値sum[15:0]が許容最大値thmax[15:0]を超える場合)、桁借出力boutがHレベルとなる。一方、減算結果がプラスになる場合、桁借出力boutがLレベルとなる。
【0101】
ステート信号cmpst2はセレクタSL32の制御信号である。すなわち、ステート信号cmpst2がHレベル(「1」)の場合、セレクタSL32の1入力が選択され、ステート信号cmpst2がLレベル(「0」)の場合、セレクタSL32の0入力が選択される。
【0102】
ここで、セレクタSL32の1入力には、減算器SB1の桁借出力boutが入力されている。一方、セレクタSL32の0入力には、セレクタSL32の出力がデータ入力に接続されたDフリップフロップDF42からの非反転出力信号がフィードバックされている。そして、DフリップフロップDF42からの非反転出力信号が、要求信号psreq1である。
【0103】
次に、デジタル比較器CMP1の動作について説明する。上述の通り実行信号checkの立ち上がりに続いてステート信号addst2がHレベルになる毎に、加算回路ADDから出力される合計値sum[15:0]が更新される。
【0104】
ステート信号addst2に続いてステート信号cmpst1がHレベルになる毎に、DフリップフロップDF40が許容最大値thmax[15:0]を、DフリップフロップDF41が更新された合計値sum[15:0]を取り込む。同時に、減算器SB1が、取り込まれた許容最大値thmax[15:0]から取り込まれた合計値sum[15:0]を減算する。
【0105】
ステート信号cmpst1に続いてステート信号cmpst2がHレベルになる毎に、DフリップフロップDF42が減算器SB1からの桁借出力boutの値を取り込む。ここで、桁借出力boutがHレベルであれば(すなわち、合計値sum[15:0]が許容最大値thmax[15:0]を超えていれば)、要求信号psreq1もHレベルになる。一方、桁借出力boutがLレベルであれば(すなわち、合計値sum[15:0]が許容最大値thmax[15:0]を超えなければ)、要求信号psreq1もLレベルになる。
【0106】
なお、ステート信号cmpst1、cmpst2がLレベルの場合、DフリップフロップDF40〜DF42からの出力値は変化しないため、要求信号psreq1の値も保持される。
【0107】
次に、図11を用いて、デジタル比較器CMP2について説明する。図11は、デジタル比較器CMP2の回路図である。図11に示すように、デジタル比較器CMP2は、2個の減算器SB2、SB3、4個のDフリップフロップDF50〜DF53、4個のセレクタSL40〜SL43を備えている。全てのDフリップフロップDF50〜DF53のクロック入力にはクロック信号cpuckが入力されている。
【0108】
ステート信号cmpst1はセレクタSL40〜SL42の制御信号である。すなわち、ステート信号cmpst1がHレベル(「1」)の場合、セレクタSL40〜SL42の1入力が選択され、ステート信号cmpst1がLレベル(「0」)の場合、セレクタSL40〜SL42の0入力が選択される。
【0109】
ここで、セレクタSL40の1入力には、加算回路ADDから出力された合計値sum[15:0]が入力されている。一方、セレクタSL40の0入力には、セレクタSL40の出力がデータ入力に接続されたDフリップフロップDF50からの非反転出力信号がフィードバックされている。
【0110】
減算器SB2は、加算回路ADDから出力された合計値sum[15:0]からDフリップフロップDF50の非反転出力信号を減算し、変化量del[15:0]を出力する。ここで、DフリップフロップDF50の非反転出力信号は、加算回路ADDから前回出力された合計値lastsum[15:0]である。従って、変化量del[15:0]は、合計値sum[15:0]の変化量となる。
【0111】
セレクタSL41の1入力には、変化量del[15:0]が入力されている。一方、セレクタSL41の0入力には、セレクタSL41の出力がデータ入力に接続されたDフリップフロップDF51からの非反転出力信号がフィードバックされている。
【0112】
セレクタSL42の1入力には、許容変化量thdel[15:0]が入力されている。一方、セレクタSL42の0入力には、セレクタSL42の出力がデータ入力に接続されたDフリップフロップDF52からの非反転出力信号がフィードバックされている。
【0113】
減算器SB3は、DフリップフロップDF52の非反転出力信号からDフリップフロップDF51の非反転出力信号を減算する。つまり、許容変化量thdel[15:0]から変化量del[15:0]を減算する。ここで、減算結果がマイナスになる場合(すなわち、変化量del[15:0]が許容変化量thdel[15:0]を超える場合)、桁借出力boutがHレベルとなる。一方、減算結果がプラスになる場合、桁借出力boutがLレベルとなる。
【0114】
ステート信号cmpst2はセレクタSL43の制御信号である。すなわち、ステート信号cmpst2がHレベル(「1」)の場合、セレクタSL43の1入力が選択され、ステート信号cmpst2がLレベル(「0」)の場合、セレクタSL43の0入力が選択される。
【0115】
ここで、セレクタSL43の1入力には、減算器SB3の桁借出力boutが入力されている。一方、セレクタSL43の0入力には、セレクタSL43の出力がデータ入力に接続されたDフリップフロップDF53からの非反転出力信号がフィードバックされている。そして、DフリップフロップDF53からの非反転出力信号が、要求信号psreq2である。
【0116】
次に、デジタル比較器CMP2の動作について説明する。上述の通り実行信号checkの立ち上がりに続いてステート信号addst2がHレベルになる毎に、加算回路ADDから出力される合計値sum[15:0]が更新される。そのため、このタイミングで、減算器SB2から変化量del[15:0]が出力される。
【0117】
ステート信号addst2に続いてステート信号cmpst1がHレベルになる毎に、DフリップフロップDF52が許容変化量thdel[15:0]を、DフリップフロップDF51が減算器SB2から出力された変化量del[15:0]を取り込む。同時に、減算器SB3が、取り込まれた許容変化量thdel[15:0]から取り込まれた変化量del[15:0]を減算する。なお、このタイミングで、減算器SB2から出力される変化量del[15:0]は0にリセットされる。
【0118】
ステート信号cmpst1に続いてステート信号cmpst2がHレベルになる毎に、DフリップフロップDF53が減算器SB3からの桁借出力boutの値を取り込む。ここで、桁借出力boutがHレベルであれば(すなわち、変化量del[15:0]が許容変化量thdel[15:0]を超えていれば)、要求信号psreq2もHレベルになる。一方、桁借出力boutがLレベルであれば(すなわち、変化量del[15:0]が許容変化量thdel[15:0]を超えなければ)、要求信号psreq2もLレベルになる。
【0119】
なお、ステート信号cmpst1、cmpst2がLレベルの場合、DフリップフロップDF50〜DF53からの出力値は変化しないため、要求信号psreq2の値も保持される。
【0120】
図4へ戻り、クロック制御回路14の内部構成について説明する。図4に示すように、クロック制御回路14は、レジスタREG、デコーダDEC1、DEC2、第1クロック調整部31、第2クロック調整部32、タイミング生成回路33を備えている。
【0121】
レジスタREGは、クロック信号cpuckの分周比がデジタル信号として格納された記憶回路である。分周比は、内部バスIBを介して、マルチコアプロセッサ11により設定される。分周比は、例えば、通常動作モード、スタンバイモード(低消費電力モード)その他の動作モードに応じて変更され得る。
デコーダDEC1は、レジスタREGに格納された分周比のデジタル信号をデコードする。
【0122】
第1クロック調整部31は、メモリアクセス検出部12からの要求信号psreq1に応じて、デコーダDEC1から出力された分周比のデジタル信号値を調整する。具体的には、予想消費電流量が所定の基準値を超えたことを意味する要求信号psreq1がアクティブになった場合、第1クロック調整部31は、デコーダDEC1から出力された分周比のデジタル信号値を1だけ変更し、出力されるクロック数(つまりクロック周波数)を1段階小さくする。
【0123】
第2クロック調整部32は、メモリアクセス検出部12からの要求信号psreq2に応じて、第1クロック調整部31から出力された分周比のデジタル信号値を調整する。具体的には、予想消費電流量の変化量が所定の基準値を超えたことを意味する要求信号psreq2がアクティブになった場合、第2クロック調整部32は、第1クロック調整部31から出力された分周比のデジタル信号値を、出力されるクロック数(つまりクロック周波数)が設定可能な限り小さくなるように変更する。
デコーダDEC2は、第2クロック調整部32から出力された分周比のデジタル信号値をデコードし、分周制御信号divとしてクロック生成回路15の周波数設定回路DIVに対し出力する。
【0124】
ここで、図12は、クロック制御回路14の拡大図である。図12を用いて、クロック制御回路14の具体例についてより詳細に説明する。
タイミング生成回路33は、クロック信号ccckから実行信号checkを生成している。実行信号checkは、クロック信号ccckを整数倍することにより得られる長周期のクロック信号である。実行信号checkの立ち上がりや立ち下がりに合わせて、本発明に係るクロック周期制御に関する一連の処理が繰り返し実行される。実行信号checkの周期は、電流変動を平滑化するためのバイパスコンデンサC1の時定数内に、クロック周期をフィードバック制御できるように、決定される必要がある。
【0125】
レジスタREGには分周比を示す3ビットのデジタル信号d[2:0]が格納されている。図13Aは、デジタル信号d[2:0]と後述するデジタル信号div0[4:0]との対応表である。図13Aには、デジタル信号d[2:0]の値と分周比との対応も示されている。本実施の形態では、分周比として1、2、4、8、16が設定可能であり、それぞれが3ビットのデジタル信号d[2:0]の値として、3'h0、3'h1、3'h2、3'h3、3'h4に対応している。
【0126】
デコーダDEC1は、レジスタREGに格納された分周比を示す3ビットのデジタル信号d[2:0]を5ビットのデジタル信号div0[4:0]へ変換する。図13Aに示すように、分周比1の場合、クロック数が16/16となるため、5ビットのデジタル信号としては5'h10が割り当てられている。分周比2の場合、クロック数が8/16となるため、5ビットのデジタル信号としては5'h08が割り当てられている。分周比4の場合、クロック数が4/16となるため、5ビットのデジタル信号としては5'h04が割り当てられている。分周比8の場合、クロック数が2/16となるため、5ビットのデジタル信号としては5'h02が割り当てられている。そして、分周比16の場合、クロック数が1/16となるため、5ビットのデジタル信号としては5'h01が割り当てられている。
【0127】
第1クロック調整部31は、要求信号psreq1がアクティブになった場合、入力されたデジタル信号div0[4:0]の値を1だけ小さくしたデジタル信号div1[4:0]を出力する。図13Bは、5ビットのデジタル信号div1[4:0]が取り得る値を示す表である。図13Bに示すように、デジタル信号div1[4:0]は、17通りのクロック数0/16〜16/16に対応するデジタル値5'h00〜5'h10を取り得る。
【0128】
ここで、図14Aは、第1クロック調整部31によるクロック周波数制御を示すグラフである。図14Aでは、設定分周比が1の場合を示している。そのため、図12におけるデコーダDEC1から出力された5ビットのデジタル信号div0[4:0]の値は、5'h10である。図14Aに示すように、要求信号psreq1がアクティブになった場合、第1クロック調整部31は、5'h10よりも値が1小さい5'h0Fをデジタル信号div1[4:0]として出力する。要求信号psreq1がアクティブの状態が続けば、第1クロック調整部31は、前回よりも1小さい値のデジタル信号div1[4:0]を出力し続ける。但し、下限値は5'h00である。
【0129】
他方、要求信号psreq1がインアクティブの場合、第1クロック調整部31は、前回よりも1大きい値のデジタル信号div1[4:0]を出力する。但し、上限は設定分周比に対応するデジタル信号div0[4:0]である。そのため、図14Aに示すように、デジタル信号div1[4:0]が上限値(5'h10)の状態において、要求信号psreq1がインアクティブの場合、デジタル信号div1[4:0]の値は、上限値(5'h10)に維持される。
【0130】
第2クロック調整部32は、要求信号psreq2がアクティブになった場合、入力されたデジタル信号div1[4:0]の値を設定可能な範囲で最小としたデジタル信号div2[4:0]を出力する。図13Bは、5ビットのデジタル信号div2[4:0]が取り得る値も、デジタル信号div1[4:0]とともに示している。図13Bに示すように、デジタル信号div2[4:0]は、17通りのクロック数0/16〜16/16に対応するデジタル値5'h00〜5'h10を取り得る。
【0131】
ここで、図14Bは、第2クロック調整部32によるクロック周波数制御を示すグラフである。図14Bでは、設定分周比が1の場合を示している。そのため、図12におけるデコーダDEC1から出力された5ビットのデジタル信号div0[4:0]の値は、5'h10である。要求信号psreq2がアクティブになった場合、第2クロック調整部32は、デジタル信号div2[4:0]が取り得る最小値5'h00を5ビットのデジタル信号div2[4:0]として出力する。
【0132】
他方、要求信号psreq2がインアクティブの場合、第2クロック調整部32は、前回よりも1大きい値のデジタル信号div2[4:0]を出力する。但し、上限は設定分周比に対応するデジタル信号div0[4:0]である。そのため、図14Bに示すように、デジタル信号div2[4:0]が上限値(5'h10)の状態において、要求信号psreq2がインアクティブの場合、デジタル信号div2[4:0]の値は、上限値(5'h10)に維持される。
【0133】
図12に示すように、デコーダDEC2は、入力された5ビットのデジタル信号div2[4:0]から、16ビットのパルス有効信号cpvld[15:0]及びモード信号ckmode[1:0]を生成し、出力する。また、デジタル信号div2[4:0]の値の変更に応じて、クロック周波数の変更を要求する要求信号chgreqを出力する。要求信号chgreqは、デジタル信号div2[4:0]の値が変更される度に出力レベルが切り換わるトグル信号である。ここで、上述した分周制御信号divは、パルス有効信号cpvld[15:0]、モード信号ckmode[1:0]、要求信号chgreqから構成される。
【0134】
図13Cは、デジタル信号div2[4:0]とパルス有効信号cpvld[15:0]及びモード信号ckmode[1:0]との対応表である。図13Cに示すように、デジタル信号div2[4:0]=5'h10の場合、クロック数が16/16である。そのため、16ビットのパルス有効信号cpvld[15:0]の値として、全てのビットがHレベル(「1」)となる16'hFFFFが割り当てられる。
【0135】
デジタル信号div2[4:0]=5'h0Fの場合、クロック数が15/16である。つまり、16個に1個の割合でクロックが出力されない。そのため、16ビットのパルス有効信号cpvld[15:0]の値として、1つのビットのみがLレベル(「0」)となる16'hFFFEが割り当てられる。
【0136】
デジタル信号div2[4:0]=5'h0Eの場合、クロック数が14/16である。つまり、16個に2個(8個に1個)の割合でクロックが出力されない。そのため、16ビットのパルス有効信号cpvld[15:0]の値として、2進数表記をした場合に8個に1個の割合でLレベル(「0」)となる16'hFFFEが割り当てられる。
【0137】
このように、クロック数が15/16であるデジタル信号div2[4:0]=5'h0Fからクロック数が9/16であるデジタル信号div2[4:0]=5'h09までについては、16ビットのパルス有効信号cpvld[15:0]の値として、16個のうち出力されないクロックを均等に配置したような信号パターンが割り当てられる。具体的には、図13Cに示す通りである。
【0138】
クロック数が8/16以下のデジタル信号div2[4:0]については、以下の通りである。まず、クロック数が8/16であるデジタル信号div2[4:0]=5'h08は分周比が2であるから、Lレベル(「0」)とHレベル(「1」)とが交互に配置される16'hAAAAが割り当てられている。クロック数が4/16であるデジタル信号div2[4:0]=5'h04は分周比が4であるから、2つのLレベル(「0」)と2つのHレベル(「1」)とが交互に配置される16'hCCCCが割り当てられている。クロック数が2/16であるデジタル信号div2[4:0]=5'h02は分周比が8であるから、4つのLレベル(「0」)と4つのHレベル(「1」)とが交互に配置される16'hF0F0が割り当てられている。クロック数が1/16であるデジタル信号div2[4:0]=5'h01は分周比が16であるから、8つのLレベル(「0」)と8つのHレベル(「1」)とが交互に配置される16'hFF00が割り当てられている。
【0139】
その他のデジタル信号div2[4:0]については、図13Cに示す通りである。なお、当然のことながら、クロック数に対するパルス有効信号cpvld[15:0]の信号パターンの割り当ては、上記に限定されるものではない。モード信号ckmode[1:0]については後述する。
【0140】
再び図4へ戻り、クロック生成回路15の内部構成について説明する。図4に示すように、クロック生成回路15は、位相同期回路PLL、周波数設定回路DIVを備えている。
位相同期回路PLLは、入力クロック信号ckinを逓倍したクロック信号plloutを出力する。
周波数設定回路DIVは、クロック制御回路14から出力された分周制御信号divに基づいて、位相同期回路PLLから出力されたクロック信号plloutを分周し、クロック信号cpuckを出力する。ここで、
【0141】
ここで、図15を用いて、周波数設定回路DIVの詳細について説明する。図15は、周波数設定回路DIVの回路図である。図15に示すように、周波数設定回路DIVは、18個のDフリップフロップF0〜F17、17個のANDゲート0〜16、1個のORゲートO1、1個のXORゲートX1、2個のセレクタS1、S2、及び遅延回路D1を備えている。
【0142】
上述の通り、要求信号chgreqは、デジタル信号div2[4:0]の値が変更される度に出力レベルが切り換わるトグル信号である。遅延回路D1は、後述するクロック信号ck2bに応じて、要求信号chgreqの出力レベルの切り換わりから所定の期間遅延させて、DフリップフロップF9がモード信号ckmode[1:0]を、DフリップフロップF10がパルス有効信号cpvld[15:0]取り込むためのトリガ信号を生成する。
【0143】
そのため、DフリップフロップF9、F10のクロック入力には遅延回路D1の出力が接続されている。また、DフリップフロップF9のデータ入力にはモード信号ckmode[1:0]が入力されている。DフリップフロップF10のデータ入力にはパルス有効信号cpvld[15:0]が入力されている。
【0144】
DフリップフロップF8のクロック入力には位相同期回路PLLが出力したクロック信号plloutが入力されている。また、DフリップフロップF8のデータ入力にはDフリップフロップF8の非反転出力から出力されるクロック信号ck2を反転したクロック信号ck2bがフィードバックされている。
【0145】
DフリップフロップF0〜F7、F11〜F15のクロック入力には、このクロック信号ck2bが入力されている。DフリップフロップF0のデータ入力には、DフリップフロップF7の非反転出力信号の反転信号(つまり、DフリップフロップF7の反転出力信号)がフィードバックされている。
【0146】
DフリップフロップF0の非反転出力信号f0は、隣接するDフリップフロップF1のデータ入力に入力されるともに、ANDゲート8、15に入力される。また、DフリップフロップF0の非反転出力信号f0の反転信号f0n(つまり、DフリップフロップF0の反転出力信号)は、ANDゲート0、7に入力される。
【0147】
DフリップフロップF1の非反転出力信号f1は、隣接するDフリップフロップF2のデータ入力に入力されるともに、ANDゲート7、14に入力される。また、DフリップフロップF1の非反転出力信号f1の反転信号f1n(つまり、DフリップフロップF1の反転出力信号)は、ANDゲート6、15に入力される。
【0148】
DフリップフロップF2の非反転出力信号f2は、隣接するDフリップフロップF3のデータ入力に入力されるともに、ANDゲート6、13に入力される。また、DフリップフロップF2の非反転出力信号f2の反転信号f2n(つまり、DフリップフロップF2の反転出力信号)は、ANDゲート5、14に入力される。
【0149】
DフリップフロップF3の非反転出力信号f3は、隣接するDフリップフロップF4のデータ入力に入力されるともに、ANDゲート5、12に入力される。また、DフリップフロップF3の非反転出力信号f3の反転信号f3n(つまり、DフリップフロップF3の反転出力信号)は、ANDゲート4、13に入力される。
【0150】
DフリップフロップF4の非反転出力信号f4は、隣接するDフリップフロップF5のデータ入力に入力されるともに、ANDゲート4、11に入力される。また、DフリップフロップF4の非反転出力信号f4の反転信号f4n(つまり、DフリップフロップF4の反転出力信号)は、ANDゲート3、12に入力される。
【0151】
DフリップフロップF5の非反転出力信号f5は、隣接するDフリップフロップF6のデータ入力に入力されるともに、ANDゲート3、10に入力される。また、DフリップフロップF5の非反転出力信号f5の反転信号f5n(つまり、DフリップフロップF5の反転出力信号)は、ANDゲート2、11に入力される。
【0152】
DフリップフロップF6の非反転出力信号f6は、隣接するDフリップフロップF7のデータ入力に入力されるともに、ANDゲート2、9に入力される。また、DフリップフロップF6の非反転出力信号f6の反転信号f6n(つまり、DフリップフロップF6の反転出力信号)は、ANDゲート1、10に入力される。
【0153】
そして、DフリップフロップF7の非反転出力信号f7は、ANDゲート1、8に入力される。また、DフリップフロップF7の非反転出力信号f7の反転信号f7n(つまり、DフリップフロップF7の反転出力信号)は、上述の通り隣接するDフリップフロップF0のデータ入力にフィードバックされるともに、ANDゲート0、9に入力される。
【0154】
以上のことから、ANDゲート0には、DフリップフロップF0の反転出力信号f0nとDフリップフロップF7の反転出力信号f7nとが入力される。さらに、ANDゲート0には、パルス有効信号cpvld[0]が入力される。そして、ANDゲート0から有効信号ck00vldが出力される。詳細には後述するように、DフリップフロップF0の反転出力信号f0nとDフリップフロップF7の反転出力信号f7nとからパルス信号が形成される。このパルス信号の出力の有効・無効がパルス有効信号cpvld[0]により決定される。すなわち、パルス有効信号cpvld[0]がHレベルであれば、当該パルス信号は出力される。一方、パルス有効信号cpvld[0]がLレベルであれば、当該パルス信号は出力されない。他のANDゲートにより生成されるパルス信号についても同様である。
【0155】
ANDゲート1には、DフリップフロップF6の反転出力信号f6nとDフリップフロップF7の非反転出力信号f7とが入力される。さらに、ANDゲート1には、パルス有効信号cpvld[1]が入力される。そして、ANDゲート1から有効信号ck01vldが出力される。
ANDゲート2には、DフリップフロップF5の反転出力信号f5nとDフリップフロップF6の非反転出力信号f6とが入力される。さらに、ANDゲート2には、パルス有効信号cpvld[2]が入力される。そして、ANDゲート2から有効信号ck02vldが出力される。
ANDゲート3には、DフリップフロップF4の反転出力信号f4nとDフリップフロップF5の非反転出力信号f5とが入力される。さらに、ANDゲート3には、パルス有効信号cpvld[3]が入力される。そして、ANDゲート3から有効信号ck03vldが出力される。
【0156】
ANDゲート4には、DフリップフロップF3の反転出力信号f3nとDフリップフロップF4の非反転出力信号f4とが入力される。さらに、ANDゲート4には、パルス有効信号cpvld[4]が入力される。そして、ANDゲート4から有効信号ck04vldが出力される。
ANDゲート5には、DフリップフロップF2の反転出力信号f2nとDフリップフロップF3の非反転出力信号f3とが入力される。さらに、ANDゲート5には、パルス有効信号cpvld[5]が入力される。そして、ANDゲート5から有効信号ck05vldが出力される。
ANDゲート6には、DフリップフロップF1の反転出力信号f1nとDフリップフロップF2の非反転出力信号f2とが入力される。さらに、ANDゲート6には、パルス有効信号cpvld[6]が入力される。そして、ANDゲート6から有効信号ck06vldが出力される。
【0157】
ANDゲート7には、DフリップフロップF0の反転出力信号f0nとDフリップフロップF1の非反転出力信号f1とが入力される。さらに、ANDゲート7には、パルス有効信号cpvld[7]が入力される。そして、ANDゲート7から有効信号ck07vldが出力される。
ANDゲート8には、DフリップフロップF0の非反転出力信号f0とDフリップフロップF7の非反転出力信号f7とが入力される。さらに、ANDゲート8には、パルス有効信号cpvld[8]が入力される。そして、ANDゲート8から有効信号ck08vldが出力される。
ANDゲート9には、DフリップフロップF6の非反転出力信号f6とDフリップフロップF7の反転出力信号f7nとが入力される。さらに、ANDゲート9には、パルス有効信号cpvld[9]が入力される。そして、ANDゲート9から有効信号ck09vldが出力される。
【0158】
ANDゲート10には、DフリップフロップF5の非反転出力信号f5とDフリップフロップF6の反転出力信号f6nとが入力される。さらに、ANDゲート10には、パルス有効信号cpvld[10]が入力される。そして、ANDゲート10から有効信号ck10vldが出力される。
ANDゲート11には、DフリップフロップF4の非反転出力信号f4とDフリップフロップF5の反転出力信号f5nとが入力される。さらに、ANDゲート11には、パルス有効信号cpvld[11]が入力される。そして、ANDゲート11から有効信号ck11vldが出力される。
ANDゲート12には、DフリップフロップF3の非反転出力信号f3とDフリップフロップF4の反転出力信号f4nとが入力される。さらに、ANDゲート12には、パルス有効信号cpvld[12]が入力される。そして、ANDゲート12から有効信号ck12vldが出力される。
【0159】
ANDゲート13には、DフリップフロップF2の非反転出力信号f2とDフリップフロップF3の反転出力信号f3nとが入力される。さらに、ANDゲート13には、パルス有効信号cpvld[13]が入力される。そして、ANDゲート13から有効信号ck13vldが出力される。
ANDゲート14には、DフリップフロップF1の非反転出力信号f1とDフリップフロップF2の反転出力信号f2nとが入力される。さらに、ANDゲート14には、パルス有効信号cpvld[14]が入力される。そして、ANDゲート14から有効信号ck14vldが出力される。
ANDゲート15には、DフリップフロップF0の非反転出力信号f0とDフリップフロップF1の反転出力信号f1nとが入力される。さらに、ANDゲート15には、パルス有効信号cpvld[15]が入力される。そして、ANDゲート15から有効信号ck15vldが出力される。
【0160】
ANDゲート0〜15から出力される有効信号ck00vld〜ck15vldは、ORゲートO1に入力される。ORゲートO1の出力はDフリップフロップF14のデータ入力に接続されており、クロック信号ck2bに応じてDフリップフロップF14に取り込まれる。そして、DフリップフロップF14からウェーブフォームモードのクロック信号ckwとして出力される。このクロック信号ckwは、セレクタS1の0入力、XORゲートX1及びANDゲート16の一方入力に入力される。つまり、このクロック信号ckwに基づいて他のモードのクロック信号が生成される。
【0161】
ANDゲート16の他方入力には、クロック信号ck2が入力される。従って、ANDゲート16からはクロックゲーティングモードのクロック信号ckgが出力される。一方、XORゲートX1の他方入力には、XORゲートX1の出力がデータ入力に接続されたDフリップフロップF15からの非反転出力信号がフィードバックされている。このDフリップフロップF15からの非反転出力信号が、トグルモードのクロック信号cktである。このクロック信号cktがセレクタS1の1入力に入力される。
【0162】
セレクタS1はモード信号ckmode[1]により制御される。すなわち、モード信号ckmode[1]がHレベル(「1」)の場合、セレクタS1の1入力に入力されているトグルモードのクロック信号cktが選択され、ckmode[1]がLレベル(「0」)の場合、セレクタS1の0入力に入力されているウェーブフォームモードのクロック信号ckwが選択される。セレクタS1の出力は、DフリップフロップF16のデータ入力に入力される。そして、DフリップフロップF16の非反転出力からクロック信号cks0が出力される。このクロック信号cks0は、セレクタS2の1入力に入力されている。セレクタS2の0入力には、クロックゲーティングモードのクロック信号ckgが入力されている。なお、モード信号ckmode[1]は、上述のDフリップフロップF9に加え、DフリップフロップF12を介してセレクタS1に入力される。
【0163】
セレクタS2はモード信号ckmode[0]により制御される。すなわち、モード信号ckmode[0]がHレベル(「1」)の場合、セレクタS2の1入力に入力されているクロック信号cks0が選択され、ckmode[0]がLレベル(「0」)の場合、セレクタS2の0入力に入力されているクロックゲーティングモードのクロック信号ckgが選択される。セレクタS2から出力されるクロック信号cks1は、DフリップフロップF17のデータ入力に入力される。ここで、DフリップフロップF17のクロック入力には、クロック信号plloutが入力されている。そして、DフリップフロップF17の非反転出力から周波数設定回路DIVの出力クロック信号cpuckが出力される。なお、モード信号ckmode[0]は、上述のDフリップフロップF9に加え、DフリップフロップF11、F13を介してセレクタS2に入力される。
【0164】
次に、図16のタイミングチャートを用いて、周波数設定回路DIVの動作について説明する。図16は、周波数設定回路DIVの動作を説明するためのタイミングチャートの一例である。
最上段には、パルス有効信号cpvld[15:0]を示している。図16の例では、図13Cに示した一覧表におけるパルス有効信号cpvld[15:0]=16'hAAAA=16'b1010_1010_1010_1010であって、クロック数が8/16である。
2段目には、モード信号ckmode[1:0]を示している。図13Cに示すように、本実施の形態では、クロック数が0/16〜8/16の場合、モード信号ckmode[1:0]=2'b01とし、ウェーブフォームモードのクロック信号ckwを採用する。
【0165】
3段目には、クロック信号plloutを示している。
4段目には、クロック信号ck2を示している。
5段目には、クロック信号ck2bを示している。クロック信号ck2はクロック信号plloutと同期し、2分周されたクロック信号である。クロック信号ck2bはクロック信号ck2の反転信号である。このクロック信号ck2が周波数設定回路DIVから出力される最大周波数のクロック信号である。
【0166】
6段目から21段目までには、ANDゲート0〜15からそれぞれ出力される有効信号ck00vld〜ck15vldを示している。本実施の形態では、パルス有効信号cpvld[15:0]=16'b1010_1010_1010_1010であるため、有効信号ck00vld、ck02vld、ck04vld、ck06vld、ck08vld、ck10vld、ck12vld、ck14vldはLレベルとなっている。一方、有効信号ck01vld、ck03vld、ck05vld、ck07vld、ck09vld、ck11vld、ck13vld、ck15vldはHレベルとなっている。
【0167】
22段目(下から6段目)には、DフリップフロップF14の非反転出力から出力されるウェーブフォームモードのクロック信号ckwを示す。このクロック信号ckwは、ORゲートO1の出力信号が、クロック信号ck2bの1周期分遅延した信号である。
下から5段目には、クロック信号ckwとクロック信号ck2とを入力とするANDゲート16から出力されるクロックゲーティングモードのクロック信号ckgを示す。
下から4段目には、DフリップフロップF15の非反転出力から出力されるトグルモードのクロック信号cktを示す。このクロック信号cktは、クロック信号ckwとクロック信号ckt自身とを入力とするXORゲートX1の出力信号が、クロック信号ck2bの1周期分遅延した信号である。
【0168】
下から3段目には、DフリップフロップF16の非反転出力から出力されるクロック信号cks0を示す。ここで、ckmode[1]=0であるから、セレクタS1の出力としては、クロック信号ckwが選択される。そして、クロック信号cks0は、クロック信号ckwが、クロック信号ck2bの1周期分遅延した信号である。
下から2段目には、セレクタS2から出力されるクロック信号cks1を示す。ここで、ckmode[0]=1であるから、セレクタS2の出力としては、クロック信号cks0が選択される。つまり、下から3段目のクロック信号cks0と下から2段目のクロック信号cks1は、同一信号である。
最下段には、周波数設定回路DIVから出力されるクロック信号cpuckを示す。クロック信号cpuckは、クロック信号cks1が、クロック信号plloutの1周期分遅延した信号である。
【0169】
次に、図17のタイミングチャートを用いて、クロックゲーティングモードについて説明する。図17は、周波数設定回路DIVの動作を説明するためのタイミングチャートの他の例である。2段目に示したモード信号ckmode[1:0]、下から2段目に示したクロック信号cks1、最下段に示したクロック信号cpuck以外の信号は、図16と同一信号であるため、説明を省略する。
クロックゲーティングモードの場合、2段目に示したモード信号ckmode[1:0]=2'b00となる。
【0170】
下から2段目には、セレクタS2から出力されるクロック信号cks1を示す。ここで、ckmode[0]=0であるから、セレクタS2の出力としては、クロック信号ckwとクロック信号ck2とを入力とするANDゲート16から出力されるクロックゲーティングモードのクロック信号ckgが選択される。つまり、このクロック信号cks1は、下から5段目のクロック信号ckgと同一信号である。
最下段には、周波数設定回路DIVから出力されるクロック信号cpuckを示す。クロック信号cpuckは、クロック信号cks1が、クロック信号plloutの1周期分遅延した信号である。
【0171】
次に、図18のタイミングチャートを用いて、トグルモードについて説明する。図18は、周波数設定回路DIVの動作を説明するためのタイミングチャートの他の例である。2段目に示したモード信号ckmode[1:0]、下から3段目に示したクロック信号cks0、下から2段目に示したクロック信号cks1、最下段に示したクロック信号cpuck以外の信号は、図16と同一信号であるため、説明を省略する。
トグルモードの場合、2段目に示したモード信号ckmode[1:0]=2'b11となる。
【0172】
下から3段目には、DフリップフロップF16の非反転出力から出力されるクロック信号cks0を示す。ここで、ckmode[1]=1であるから、セレクタS1の出力としては、下から4段目のクロック信号cktが選択される。そして、クロック信号cks0は、クロック信号cktが、クロック信号ck2bの1周期分遅延した信号である。
下から2段目には、セレクタS2から出力されるクロック信号cks1を示す。ここで、ckmode[0]=1であるから、セレクタS2の出力としては、クロック信号cks0が選択される。つまり、下から3段目のクロック信号cks0と下から2段目のクロック信号cks1は、同一信号である。
最下段には、周波数設定回路DIVから出力されるクロック信号cpuckを示す。クロック信号cpuckは、クロック信号cks1が、クロック信号plloutの1周期分遅延した信号である。
【0173】
図13Cに示したモード信号ckmode[1:0]は、あくまで一例であるので、必要に応じ適宜上記3つのモードを使い分けることができる。
【0174】
次に、図19のタイミングチャートを用いて、周波数設定回路DIVの動作について説明する。図19は、周波数設定回路DIVの動作を説明するためのタイミングチャートの他の例である。最上段には、パルス有効信号cpvld[15:0]を示している。図19の例は、図13Cに示した一覧表におけるパルス有効信号cpvld[15:0]=16'hEEEE=16'b1110_1110_1110_1110であって、クロック数が12/16の場合である。
2段目には、モード信号ckmode[1:0]を示している。図13Cに示すように、本実施の形態では、クロック数が9/16〜16/16の場合、モード信号ckmode[1:0]=2'b00とし、クロックゲーティングモードのクロック信号ckgを採用する。
【0175】
3段目のクロック信号pllout、4段目のクロック信号ck2、5段目のクロック信号ck2bは、図16と同じであるから説明を省略する。
6段目から21段目までには、ANDゲート0〜15からそれぞれ出力される有効信号ck00vld〜ck15vldを示している。本実施の形態では、パルス有効信号cpvld[15:0]=16'b1110_1110_1110_1110であるため、有効信号ck00vld、ck04vld、ck08vld、ck12vldはLレベルとなっている。一方、有効信号ck01vld、ck02vld、ck03vld、ck05vld、ck06vld、ck07vld、ck09vld、ck10vld、ck11vld、ck13vld、ck14vld、ck15vldはHレベルとなっている。
【0176】
下から3段目には、DフリップフロップF14の非反転出力から出力されるウェーブフォームモードのクロック信号ckwを示す。このクロック信号ckwは、ORゲートO1の出力信号が、クロック信号ck2bの1周期分遅延した信号である。
下から2段目には、クロック信号ckwとクロック信号ck2とを入力とするANDゲート16から出力されるクロックゲーティングモードのクロック信号ckgを示す。ここで、ckmode[0]=0であるから、セレクタS2から出力されるクロック信号cks1は、クロック信号ckgである。
最下段には、周波数設定回路DIVから出力されるクロック信号cpuckを示す。クロック信号cpuckは、クロック信号cks1が、クロック信号plloutの1周期分遅延した信号である。
【0177】
分周比は2、4、8、16など2(nは整数)で設定されることが多い。そのため、マルチコアプロセッサ11が、最大周波数のクロック信号cpuckで動作している場合、一時的に周波数を下げるにしても、最大周波数の1/2倍、1/4倍、1/8倍、1/16倍などしか選択することができなかった。本実施の形態に係る周波数設定回路DIVでは、より小刻みに周波数を調整することができる。
【0178】
次に、図20のタイミングチャートを用いて、クロック周波数制御全体の動作について説明する。図20は、クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
最上段には、クロック制御回路14に供給されるクロック信号ccckを示している。
2段目には、実行信号checkを示している。
3段目には、許容最大値thmax[15:0]を示している。ここでは、thmax[15:0]=3000である。
【0179】
4段目には、許容変化量thdel[15:0]を示している。ここでは、thdel[15:0]=800である。
5段目には、合計値sum[15:0]を示している。実行信号checkの立ち上がりに応じて、値が更新されている。
6段目には、変化量del[15:0]を示している。実行信号checkの立ち上がりに応じて、値が更新されている。
【0180】
7段目には、要求信号psreq1を示している。合計値sum[15:0]=4000となって、thmax[15:0]=3000を超えた期間で、要求信号psreq1がHレベルとなっている。その他の期間では、要求信号psreq1がLレベルとなっている。
8段目には、要求信号psreq2を示している。変化量[15:0]=1300となって、thdel[15:0]=800を超えた期間で、要求信号psreq2がHレベルとなっている。その他の期間では、要求信号psreq2がLレベルとなっている。ここで、要求信号psreq2がHレベルとなっている期間は、要求信号psreq1がHレベルとなっている期間に一致している。
【0181】
9段目には、分周比を示す3ビットのデジタル信号d[2:0]を示している。ここでは、デジタル信号d[2:0]=3'h0であり、分周比=1である。
10段目には、分周比を示す5ビットのデジタル信号div0[4:0]を示している。ここでは、デジタル信号div0[4:0]=5'h10であり、出力されるクロック数(周波数)=16/16である。
【0182】
11段目には、第1クロック調整部31から出力される5ビットのデジタル信号div1[4:0]を示している。第1クロック調整部31は、実行信号checkの立下りエッジで、要求信号psreq1の出力レベルを確認し、デジタル信号div1[4:0]の値を更新する。ここで、要求信号psreq1が1期間だけHレベルになったことを受けて、デジタル信号div1[4:0]=5'h10からdiv1[4:0]=5'h0Fへ値が変更されている。そして、次の期間で、再度デジタル信号div0[4:0]=5'h10に戻っている。
【0183】
12段目には、第2クロック調整部32から出力される5ビットのデジタル信号div2[4:0]を示している。第2クロック調整部32は、実行信号checkの立下りエッジで、要求信号psreq2の出力レベルを確認し、デジタル信号div2[4:0]の値を更新する。ここで、要求信号psreq2が1期間だけHレベルになったことを受けて、デジタル信号div2[4:0]=5'h10からdiv2[4:0]=5'h00へ値が変更されている。そして、次の期間以降で、デジタル信号div2[4:0]の値は1ずつ増え、最終的にデジタル信号div2[4:0]=5'h10に戻っている。
【0184】
13段目(下から4段目)には、16ビットのクロック有効信号ckvld[15:0]を示している。
下から3段目には、モード信号ckmode[1:0]を示している。図13Cに示したデジタル信号div2[4:0]との対応表の通り、デジタル信号div2[4:0]の変化に応じて、クロック有効信号ckvld[15:0]及びモード信号ckmode[1:0]の値も変化している。
【0185】
下から2段目には、要求信号chgreqを示している。要求信号chgreqは、デジタル信号div2[4:0]の値が変更される度に出力レベルが切り換わるトグル信号である。
最下段には、周波数設定回路DIVから出力されるクロック信号cpuckを示している。クロック有効信号ckvld[15:0]及びモード信号ckmode[1:0]の値に応じたクロック信号cpuckが出力されている。
【0186】
図20の例のように、要求信号psreq1、psreq2の両方がHレベルになった場合、要求信号psreq2が優先される。
【0187】
<発明の実施の形態2>
次に、図21〜23を用いて、実施の形態2に係る半導体装置について説明する。
図21は、実施の形態2に係るメモリアクセス検出部12の回路図である。図6に示した実施の形態1に係るメモリアクセス検出部12と比較して、図21に示した本実施の形態に係るメモリアクセス検出部12は、デジタル比較器CMP2及びレジスタREG2を備えていない。
図22は、実施の形態2に係るクロック制御回路14の拡大図である。図12に示した実施の形態1に係るクロック制御回路14と比較して、図22に示した本実施の形態に係るクロック制御回路14は第2クロック調整部32を備えていない。
その他の構成は実施の形態1と同様であるため、説明を省略する。
本実施の形態に係る半導体装置も、実施の形態1に係る半導体装置と同様に各コアから各メモリ領域へのアクセス回数を検出し、マルチコアプロセッサ11の消費電流量を予想することができるメモリアクセス検出部12を備えている。そのため、この予想消費電流量が所定の基準値を超えた場合、自動的にマルチコアプロセッサ11へ供給されるクロック信号cpuckの周波数の低減することができる。従って、許容電流量を超えることによる誤動作を防止することができる。
【0188】
次に、図23のタイミングチャートを用いて、第2のクロック周波数制御全体の動作について説明する。図23は、クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
最上段には、クロック制御回路14に供給されるクロック信号ccckを示している。
2段目には、実行信号checkを示している。
3段目には、許容最大値thmax[15:0]を示している。ここでは、thmax[15:0]=4000である。
4段目には、合計値sum[15:0]を示している。実行信号checkの立ち上がりに応じて、値が更新されている。
【0189】
5段目には、要求信号psreq1を示している。連続した4期間で、合計値sum[15:0]が許容最大値thmax[15:0]=4000を超え、要求信号psreq1がHレベルとなっている。その他の期間では、要求信号psreq1がLレベルとなっている。
【0190】
6段目には、分周比を示す3ビットのデジタル信号d[2:0]を示している。ここでは、デジタル信号d[2:0]=3'h0であり、分周比=1である。
7段目には、分周比を示す5ビットのデジタル信号div0[4:0]を示している。ここでは、デジタル信号div0[4:0]=5'h10であり、出力されるクロック数(周波数)=16/16である。
【0191】
8段目には、第1クロック調整部31から出力される5ビットのデジタル信号div1[4:0]を示している。第1クロック調整部31は、実行信号checkの立下りエッジで、要求信号psreq1の出力レベルを確認し、デジタル信号div1[4:0]の値を更新する。ここで、要求信号psreq1が4期間連続してHレベルになったことを受けて、デジタル信号div1[4:0]=5'h10から5'h0Cまで4回続けて1ずつ値が減っている。その後、4回続けて1ずつ値が増えてデジタル信号div0[4:0]=5'h10に戻っている。
【0192】
9段目(下から5段目)には、16ビットのクロック有効信号ckvld[15:0]を示している
下から4段目には、モード信号ckmode[1:0]を示している。
ここで、図13Cに示したデジタル信号div2[4:0]とクロック有効信号ckvld[15:0]及びモード信号ckmode[1:0]との対応表において、本実施の形態では、デジタル信号div2[4:0]をデジタル信号div1[4:0]と読み替えればよい。下から5段目のクロック有効信号ckvld[15:0]及び下から4段目のモード信号ckmode[1:0]は、図13Cに示した対応表の通りとなっている。
【0193】
下から3段目には、要求信号chgreqを示している。本実施の形態では、要求信号chgreqは、デジタル信号div1[4:0]の値が変更される度に出力レベルが切り換わるトグル信号である。
下から2段目には、周波数設定回路DIVから出力されるクロック信号cpuckを示している。クロック有効信号ckvld[15:0]及びモード信号ckmode[1:0]の値に応じたクロック信号cpuckが出力されている。
最下段には、下から2段目のクロック信号cpuckの拡大図を示している。クロック数12/16〜15/16について示すように、クロック数16/16の最大周波数から略等間隔にクロックパルスを間引くことにより(つまり上述のクロックゲーティングモードにより)、出力されるクロック数(クロック周波数)が調整されている。
【0194】
<発明の実施の形態3>
次に、図24〜26を用いて、実施の形態3に係る半導体装置について説明する。
図24は、実施の形態3に係るメモリアクセス検出部12の回路図である。図6に示した実施の形態1に係るメモリアクセス検出部12と比較して、図24に示した本実施の形態に係るメモリアクセス検出部12は、デジタル比較器CMP1及びレジスタREG1を備えていない。
図25は、実施の形態3に係るクロック制御回路14の拡大図である。図12に示した実施の形態1に係るクロック制御回路14と比較して、図25に示した本実施の形態に係るクロック制御回路14は第1クロック調整部31を備えていない。
その他の構成は実施の形態1と同様であるため、説明を省略する。
本実施の形態に係る半導体装置も、実施の形態1に係る半導体装置と同様に各コアから各メモリ領域へのアクセス回数を検出し、マルチコアプロセッサ11の消費電流量を予想することができるメモリアクセス検出部12を備えている。そのため、この予想消費電流量の変化量が所定の基準値を超えた場合、自動的にマルチコアプロセッサ11へ供給されるクロック信号cpuckの周波数の低減することができる。従って、消費電流の急増に伴う電圧ドロップを効果的に抑制することができる。
【0195】
次に、図26のタイミングチャートを用いて、第3のクロック周波数制御全体の動作について説明する。図26は、クロック周波数制御全体の動作を説明するためのタイミングチャートの一例である。
最上段には、クロック制御回路14に供給されるクロック信号ccckを示している。
2段目には、実行信号checkを示している。
3段目には、許容変化量thdel[15:0]を示している。ここでは、thdel[15:0]=800である。
4段目には、合計値sum[15:0]を示している。実行信号checkの立ち上がりに応じて、値が更新されている。
5段目には、変化量del[15:0]を示している。実行信号checkの立ち上がりに応じて、値が更新されている。
【0196】
6段目には、要求信号psreq2を示している。変化量[15:0]=1300となって、thdel[15:0]=800を超えた期間で、要求信号psreq2がHレベルとなっている。その他の期間では、要求信号psreq2がLレベルとなっている。
【0197】
7段目には、分周比を示す3ビットのデジタル信号d[2:0]を示している。ここでは、デジタル信号d[2:0]=3'h0であり、分周比=1である。
8段目には、分周比を示す5ビットのデジタル信号div0[4:0]を示している。ここでは、デジタル信号div0[4:0]=5'h10であり、出力されるクロック数(周波数)=16/16である。
【0198】
9段目には、第2クロック調整部32から出力される5ビットのデジタル信号div2[4:0]を示している。第2クロック調整部32は、実行信号checkの立下りエッジで、要求信号psreq2の出力レベルを確認し、デジタル信号div2[4:0]の値を更新する。ここで、要求信号psreq2が1期間だけHレベルになったことを受けて、デジタル信号div2[4:0]=5'h10からdiv2[4:0]=5'h00へ値が変更されている。そして、次の期間以降で、デジタル信号div2[4:0]の値は1ずつ増え、最終的にデジタル信号div2[4:0]=5'h10に戻っている。
【0199】
10段目(下から4段目)には、16ビットのクロック有効信号ckvld[15:0]を示している。
下から3段目には、モード信号ckmode[1:0]を示している。図13Cに示したデジタル信号div2[4:0]との対応表の通り、デジタル信号div2[4:0]の変化に応じて、クロック有効信号ckvld[15:0]及びモード信号ckmode[1:0]の値も変化している。
【0200】
下から2段目には、要求信号chgreqを示している。要求信号chgreqは、デジタル信号div2[4:0]の値が変更される度に出力レベルが切り換わるトグル信号である。
最下段には、周波数設定回路DIVから出力されるクロック信号cpuckを示している。クロック有効信号ckvld[15:0]及びモード信号ckmode[1:0]の値に応じたクロック信号cpuckが出力されている。
<発明の実施の形態4>
次に、図27を用いて、実施の形態4に係る半導体装置について説明する。
図27は、実施の形態4に係るクロック制御回路14の拡大図である。図12に示した実施の形態1に係るクロック制御回路14と比較して、図27に示した本実施の形態に係るクロック制御回路14では、レジスタREGから第1クロック調整部31へ5ビットのクロック数の下限値min0[4:0]が設定される。また、レジスタREGから第2クロック調整部32へ5ビットのクロック数の下限値min1[4:0]が設定される。
【0201】
下限値min0[4:0]は、第1クロック調整部31におけるクロック周波数調整の下限値である。実施の形態1では特に設定されていないため、第1クロック調整部31から出力されるデジタル信号div1[4:0]として、クロック数0/16にあたる5'h00まで設定することができた。本実施の形態では、例えばmin0[4:0]=5'h08とすると、第1クロック調整部31から出力されるデジタル信号div1[4:0]として、5'h08より小さい値は設定されないことになる。
【0202】
下限値min1[4:0]は、第2クロック調整部32におけるクロック周波数調整の下限値である。実施の形態1では特に設定されていないため、第1クロック調整部31から出力されるデジタル信号div2[4:0]として、クロック数0/16にあたる5'h00まで設定することができた。本実施の形態では、例えばmin1[4:0]=5'h08とすると、第2クロック調整部32から出力されるデジタル信号div2[4:0]として、5'h08より小さい値は設定されないことになる。
その他の構成は実施の形態1と同様であるため、説明を省略する。
【0203】
このように、第1クロック調整部31におけるクロック周波数調整の下限値min0[4:0]及び第2クロック調整部32におけるクロック周波数調整の下限値min1[4:0]を設けることにより、用途等に応じてクロック周波数調整幅を自由に調整することができるようになる。
【0204】
<発明の実施の形態5>
次に、図28を用いて、実施の形態5に係る半導体装置について説明する。
図28は、実施の形態5に係るシングルコアプロセッサ111、メモリアクセス検出部12、クロック制御回路14及びクロック生成回路15の関係を詳細に示した図である。実施の形態5に係る半導体装置は、図4に示した実施の形態1に係るマルチコアプロセッサ11がシングルコアプロセッサ111に置換されたものである。
【0205】
本実施の形態に係るメモリアクセス検出部12には、命令キャッシュメモリIC0、データキャッシュメモリDC0、2次キャッシュメモリL2Cを活性化するためのイネーブル信号cen01、cen02、l2cenが入力されている。メモリアクセス検出部12は、入力されたイネーブル信号cen01、cen02、l2cenの活性化回数(活性化率)、つまりアクセス回数を検出する。そして、メモリアクセス検出部12は、このアクセス回数に基づき、シングルコアプロセッサ111における予想消費電流量を算出する。その他の構成については実施の形態1と同様であるため、説明を省略する。
【0206】
本実施の形態に係る半導体装置も、コアからメモリ領域へのアクセス回数を検出し、シングルコアプロセッサ111の消費電流量を予想することができるメモリアクセス検出部12を備えている。そのため、この予想消費電流量もしくはその変化量が所定の基準値を超えた場合、自動的にシングルコアプロセッサ111へ供給されるクロック信号cpuckの周波数の低減することができる。従って、許容電流量を超えることによる誤動作を防止することができる。また、消費電流の急増に伴う電圧ドロップを効果的に抑制することができる。
【0207】
上述した発明の実施の形態1〜5は、適宜組み合わせることも可能である。
また、上述した発明の実施の形態では、携帯電話端末を主要な例として説明した。しかしながら、本発明は、スマートフォン、携帯ゲーム端末、タブレットPC、ノートPC等のその他の無線通信端末にも適用でき、無線通信機能を有していない他の電子機器にも適用できる。また、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【0208】
1 半導体装置
2 電源供給装置
11 マルチコアプロセッサ
111 シングルコアプロセッサ
12 メモリアクセス検出部
13 内部電源制御回路
14 クロック制御回路
15 クロック生成回路
16 周辺回路
17、23 端子
20A ディスプレイデバイス
20B カメラデバイス
21 レギュレータ
22 電圧設定回路
30A ディスプレイデバイス
30B カメラデバイス
31 第1クロック調整部
32 第2クロック調整部
33 タイミング生成回路
90 CPU電源領域
500 無線通信端末
501、502 筐体
503 ヒンジ
600 電子装置
601 アプリケーションプロセッサ
602 ベースバンドプロセッサ
603 RFサブシステム
604 メモリ
605 バッテリ
606 パワーマネジメントIC
607 表示部
608 カメラ部
609 操作入力部
610 オーディオIC
611 マイク
612 スピーカ
AD1、AD10〜AD19、AD20〜AD24 加算器
AD30〜AD32、AD40、AD41、AD50 加算器
ADD 加算回路
0〜16、AN1、AN2 ANDゲート
BL0〜BL3 ブロック
C1 バイパスコンデンサ
CMP1、CMP2 デジタル比較器
CNT0〜CNT19 カウンタ
CPU0、CPU1 コア
DC0、DC1 データキャッシュメモリ
D1 遅延回路
DCC0、DCC1、ICC0、ICC1、L2CC メモリコントローラ
DEC1、DEC2 デコーダ
F0〜F17、DF1〜DF5、DF11、DF12 Dフリップフロップ
DF20〜DF24、DF30、DF31 Dフリップフロップ
DF40〜DF42、DF50〜DF53 Dフリップフロップ
DIV 周波数設定回路
IB 内部バス
IC0、IC1 命令キャッシュメモリ
L2C 2次キャッシュメモリ
O1、OR1 ORゲート
PE0、PE1 プロセッサエレメント
PLL 位相同期回路
REG、REG1、REG2 レジスタ
SB1、SB2、SB3 減算器
S1、S2、SL1、SL2、SL10〜SL14 セレクタ
SL20、SL21、SL30〜SL32、SL40〜SL43 セレクタ
SM ステートマシン
TR トランジスタ
X1 XORゲート

【特許請求の範囲】
【請求項1】
制御信号に応じて、出力するクロック信号の周波数を変化させるクロック生成回路と、
前記クロック信号に応じて動作する演算回路と、
前記演算回路からのアクセスに応じ、活性化される記憶回路と、
前記記憶回路に対する前記演算回路のアクセス回数を検出し、前記アクセス回数が増えた場合に要求信号を出力するメモリアクセス検出部と、
前記要求信号に応じて、前記クロック信号の周波数を下げるための前記制御信号を生成するクロック制御回路と、を備える半導体装置。
【請求項2】
前記メモリアクセス検出部は、
前記アクセス回数から計算される指数と、第1の基準値とを比較し、前記指数の値が、前記第1の基準値を超えた場合、前記要求信号として第1の要求信号を出力する第1の比較器を備えることを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記クロック制御回路は、
前記第1の要求信号に応じて、所定の期間に出力されるクロック数を段階的に減らすための第1の制御信号を前記制御信号として生成する第1のクロック調整部を備えることを特徴とする請求項2に記載の半導体装置。
【請求項4】
前記第1の制御信号は、
前記所定の期間に出力されるクロック数を1つずつ減らすためのものであることを特徴とする請求項3に記載の半導体装置。
【請求項5】
前記メモリアクセス検出部は、
前記アクセス回数から計算される指数の変化量と、第2の基準値とを比較し、前記指数の変化量の値が、前記第2の基準値を超えた場合、前記要求信号として第2の要求信号を出力する第2の比較器を備えることを特徴とする請求項1に記載の半導体装置。
【請求項6】
前記クロック制御回路は、
前記第2の要求信号に応じて、所定の期間に出力されるクロック数を下限値まで減らすための第2の制御信号を前記制御信号として生成する第2のクロック調整部を備えることを特徴とする請求項5に記載の半導体装置。
【請求項7】
前記下限値が設定可能であることを特徴とする請求項6に記載の半導体装置。
【請求項8】
前記メモリアクセス検出部は、
前記アクセス回数から計算される指数と、第1の基準値とを比較し、前記指数の値が、前記第1の基準値を超えた場合、前記要求信号として第1の要求信号を出力する第1の比較器と、
前記指数の変化量と、第2の基準値とを比較し、前記指数の変化量の値が、前記第2の基準値を超えた場合、前記要求信号として第2の要求信号を出力する第2の比較器と、を備え、
前記クロック制御回路は、
前記第1の要求信号に応じて、所定の期間に出力されるクロック数を段階的に減らすための第1の制御信号を前記制御信号として生成する第1のクロック調整部と、
前記第2の要求信号に応じて、前記所定の期間に出力されるクロック数を下限値まで減らすための第2の制御信号を前記制御信号として生成する第2のクロック調整部と、を備えることを特徴とする請求項1に記載の半導体装置。
【請求項9】
前記第1の要求信号と、前記第2の要求信号とが、前記メモリアクセス検出部から同時に出力された場合、
前記クロック制御回路は、前記第2の要求信号を優先することを特徴とする請求項8に記載の半導体装置。
【請求項10】
前記記憶回路として第1及び第2の記憶回路を備え、
前記指数は、前記第1の記憶回路へのアクセス回数と前記第1の記憶回路に対して定められた重みとの積と、前記第2の記憶回路へのアクセス回数と前記第2の記憶回路に対して定められた重みとの積と、に基づいて定められることを特徴とする請求項2〜9のいずれか一項に記載の半導体装置。
【請求項11】
前記第1及び第2の記憶回路は、それぞれ複数のブロックを備え、
前記メモリアクセス検出部は、前記複数のブロックのそれぞれへのアクセス回数を検出することを特徴とする請求項10に記載の半導体装置。
【請求項12】
前記重みは、前記複数のブロックのそれぞれへの1回のアクセスに要する電流値に応じた値であることを特徴とする請求項11に記載の半導体装置。
【請求項13】
前記演算回路を複数備えることを特徴とする請求項1〜12のいずれか一項に記載の半導体装置。
【請求項14】
前記記憶回路は、キャッシュメモリであることを特徴とする請求項1〜13のいずれか一項に記載の半導体装置。
【請求項15】
請求項1〜14のいずれか一項に記載の半導体装置を備えた無線通信端末。
【請求項16】
クロック信号に応じて動作する演算回路と、
前記演算回路からのアクセスに応じ活性化される記憶回路と、を備える半導体装置へ供給する前記クロック信号のクロック周波数制御方法であって、
前記記憶回路に対する前記演算回路のアクセス回数を検出し、
前記アクセス回数が増えた場合に、前記クロック信号の周波数を下げるクロック周波数制御方法。
【請求項17】
前記アクセス回数から計算される指数と、第1の基準値とを比較し、
前記アクセス回数が増えることにより、前記指数の値が、前記第1の基準値を超えた場合に、前記クロック信号の周波数を下げることを特徴とする請求項16に記載のクロック周波数制御方法。
【請求項18】
前記クロック信号の周波数を下げる際、
所定の期間に出力されるクロック数を段階的に減らすことを特徴とする請求項17に記載のクロック周波数制御方法。
【請求項19】
前記所定の期間に出力されるクロック数を1つずつ減らすことを特徴とする請求項18に記載のクロック周波数制御方法。
【請求項20】
前記アクセス回数から計算される指数の変化量と、第2の基準値とを比較し、
前記アクセス回数が増えることにより、前記指数の変化量の値が、前記第2の基準値を超えた場合に、前記クロック信号の周波数を下げることを特徴とする請求項16に記載のクロック周波数制御方法。
【請求項21】
前記クロック信号の周波数を下げる際、
所定の期間に出力されるクロック数を下限値まで減らすことを特徴とする請求項20に記載のクロック周波数制御方法。
【請求項22】
所定の期間に出力されるクロック数を下限値まで減らした後、前記指数の変化量の値が前記第2の基準値以内であれば、前記所定の期間に出力されるクロック数を段階的に増やすことを特徴とする請求項21に記載のクロック周波数制御方法。
【請求項23】
前記所定の期間に出力されるクロック数を1つずつ増やすことを特徴とする請求項22に記載のクロック周波数制御方法。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図13C】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate


【公開番号】特開2013−16104(P2013−16104A)
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願番号】特願2011−149874(P2011−149874)
【出願日】平成23年7月6日(2011.7.6)
【出願人】(311005884)ルネサスモバイル株式会社 (11)
【Fターム(参考)】