(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、具体的な実施の形態について、図面を参照しながら詳細に説明する。尚、説明を明確にするために、以下の記載及び図面は、適宜、簡略化されている。
【0011】
<比較例にかかる半導体装置の構成>
はじめに、
図1を参照して、発明者らが検討した比較例にかかる半導体装置の構成を説明する。比較例にかかる半導体装置は、CPU90及びクロック周波数制御回路CFCCを備える。
【0012】
<比較例にかかる半導体装置の動作>
次に、比較例にかかる半導体装置の動作を説明する。クロック周波数制御回路CFCCは、CPU90のコア9にクロックCKを供給する。コア9は、クロックCKに基づいて処理を実行する。コア9は、コア9のアイドル状態を示すアイドル状態信号ISSを生成する。CPU90は、OS(Operating System)制御に従って、アイドル状態信号ISSに基づいて周波数制御信号FCSを生成する。周波数制御信号FCSは、クロックCKの設定周波数を示す。クロック周波数制御回路CFCCは、周波数制御信号FCSに基づいてクロックCKの周波数を制御する。
【0013】
図2を参照して、比較例にかかる半導体装置の動作を詳細に説明する。CPU90は、OS制御に従って、一定の周波数制御インターバルごとにクロックCKの周波数を制御する。具体的には、CPU90は、アイドル状態信号ISSに基づいて、周波数制御インターバルごとのコア9の動作率を計算する。動作率は、周波数制御インターバルにおけるアクティブ状態時間の割合である。CPU90は、動作率に基づいて、クロックCKの設定周波数を示す周波数制御信号FCSを生成する。クロック周波数制御回路CFCCは、周波数制御信号FCSに基づいてクロックCKの周波数を制御する。
【0014】
以下に、OS制御により計算したコア9の動作率に基づいてクロックCKの周波数を制御する方法の問題点を説明する。
【0015】
動作率に基づいてクロックCKの周波数を制御する方法では、周波数制御インターバルが長くなってしまう。そのため、コア9に要求されるパフォーマンスがダイナミックに変化する場合に、コア9が実行するパフォーマンスを要求パフォーマンスに追従させることができない。具体的には、時刻T0から時刻T5までの周波数制御インターバルにおいてクロックCKの周波数が一定であるため、実行パフォーマンスがその周波数に対応したレベルに制限される。クロックCKの周波数が要求パフォーマンスに対して不足する場合、要求パフォーマンスがゼロに立ち下がった後もコア9のアクティブ状態が継続する。例えば、要求パフォーマンスが時刻T1でゼロに立ち下がるが、時刻T1までに処理できなかったタスクを処理するために時刻T0に始まったアクティブ状態が時刻T2まで引き延ばされる。要求パフォーマンスが時刻T4でゼロに立ち下がるが、時刻T4までに処理できなかったタスクを処理するために時刻T3に始まったアクティブ状態が時刻T5まで引き延ばされる。
【0016】
ここで、コア9の消費電力は、ベース部分及び有効部分から構成される。ベース部分は、コア9がアクティブ状態であるだけで必要とされる電力である。有効部分は、コア9の実行パフォーマンスに応じた電力である。アクティブ状態が引き延ばされる結果、消費電力のベース部分が大きくなってしまう。更に、制御がソフトウェア的に破たんするおそれがある。尚、クロックCKの設定周波数の下限を高い値に設定することでアクティブ状態が引き延ばされることを回避できるが、その場合、要求パフォーマンスが低い値で一定の場合における消費電力が大きくなってしまう。
【0017】
更に、周波数制御インターバルごとに、CPU90がOS制御により動作率を計算するオーバーヘッドが発生してしまう。そのため、周波数制御インターバルを短くすることが困難である。尚、オーバーヘッドは
図2において省略されている。
【0018】
(実施の形態1)
<無線通信端末の概要>
まず、
図3A、3Bを参照して、実施の形態1に係る半導体装置が適用される電子装置として好適な無線通信端末の概要について説明する。
図3A及び3Bは、無線通信端末500の構成例を示す外観図である。
【0019】
なお、
図3A、3Bでは、無線通信端末500がスマートフォンである場合について示している。しかしながら、無線通信端末500は、フィーチャーフォン(例えば、折り畳み式の携帯電話端末)、携帯ゲーム端末、タブレットPC(Personal Computer)、ノートPC、カーナビゲーション装置等のその他の無線通信端末であってもよい。また、当然のことながら、本実施の形態に係る半導体装置は、無線通信端末以外に適用することも可能である。
【0020】
図3Aは、無線通信端末500を形成する筐体501の一方の主面(前面)を示している。筐体501の前面には、ディスプレイデバイス502と、タッチパネル503と、幾つかの操作ボタン504と、カメラデバイス505とが配置されている。一方、
図3Bは、筐体501の他方の主面(背面)を示している。筐体501の背面には、カメラデバイス506が配置されている。
【0021】
ディスプレイデバイス502は、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機ELディスプレイ(OLED:Organic Light-Emitting Diode)等の表示装置である。ディスプレイデバイス502は、表示面が筐体501の前面に位置するように配置されている。
【0022】
タッチパネル503は、ディスプレイデバイス502の表示面を覆うように配置されるか、或いはディスプレイデバイス502の裏面側に配置され、ユーザーによる表示面への接触位置を検知する。つまり、ユーザーは、指や専用のペン(一般に、スタイラスと呼称される)等でディスプレイデバイス502の表示面に触れることで、無線通信端末500を直感的に操作することができる。
【0023】
操作ボタン504は、無線通信端末500に対する補助的な操作に用いられる。なお、無線通信端末によっては、このような操作ボタンが設けられないこともある。
【0024】
カメラデバイス505は、そのレンズユニットが筐体501の前面に位置するように配置されたサブカメラである。なお、無線通信端末によっては、このようなサブカメラが設けられないこともある。
【0025】
カメラデバイス506は、そのレンズユニットが筐体501の背面に位置するように配置されたメインカメラである。
【0026】
<無線通信装置の構成>
図4を参照して、本実施の形態に係る半導体装置が搭載される無線通信装置600の構成について説明する。
図4は、実施の形態1に係る無線通信装置600の構成例を示すブロック図である。無線通信装置600は、例えば、
図3A、3Bに示した無線通信端末500の内部構成である。
図4に示すように、無線通信装置600は、アプリケーションプロセッサ(ホストIC)601、ベースバンドプロセッサ602、RFIC(Radio Frequency Integrated Circuit)603、メインメモリ604、バッテリ605、電源制御回路PMC、表示部607、カメラ部608、操作入力部609、オーディオIC610、マイク611、スピーカ612、GPU(Graphics Processor Unit)613を含む。電源制御回路PMCは、例えば、パワーマネジメントIC(PMIC:Power Management Integrated Circuit)606である。
【0027】
アプリケーションプロセッサ(ホストIC)601は、メインメモリ604に格納されたプログラムを読み出して、無線通信装置600の各種機能を実現するための処理を行う半導体集積回路である。例えば、アプリケーションプロセッサ601は、メインメモリ604からOS(Operating System)プログラムを読み出して実行すると共に、このOSプログラムを動作基盤とするアプリケーションプログラムを実行する。
【0028】
ベースバンドプロセッサ602は、携帯通信端末が送受信するデータに対して符号化(例えば、畳み込み符号やターボ符号等の誤り訂正符号化)処理又は復号化処理等を含むベースバンド処理を行う。
【0029】
特に音声データについては、ベースバンドプロセッサ602は、送信音声データをオーディオIC610から受け取り、受け取った送信音声データに対して符号化処理を施して、RFIC603に送信する。より具体的には、ベースバンドプロセッサ602は、オーディオIC610から受け取ったPCM(Pulse Code Modulation)データを符号化処理し、RFIC603が受信できるAMR(Adaptive Multi Rate)データへ変換する。
【0030】
他方、ベースバンドプロセッサ602は、RFIC603から受信音声データを受け取り、受け取った受信音声データに対して復号化処理を施してオーディオIC610に送信する。より具体的には、ベースバンドプロセッサ602は、RFIC603により復調された受信音声データであるAMRデータを復号化処理し、PCMデータへ変換する。なお、AMRデータは圧縮データであり、PCMデータは非圧縮データである。
【0031】
RFIC603は、アナログRF信号処理を行う。アナログRF信号処理は、周波数アップコンバージョン、周波数ダウンコンバージョン、増幅などを含む。
特に音声データについては、RFIC603は、ベースバンドプロセッサ602によって変調された送信音声データから送信RF信号を生成し、アンテナを介してこの送信RF信号を無線送信する(Up Link)。
他方、RFIC603は、アンテナを介して受信RF信号を無線受信し、受信RF信号から受信音声データを生成し、この受信音声データをベースバンドプロセッサ602に送信する(Down Link)。
【0032】
メインメモリ(外部メモリ)604は、アプリケーションプロセッサ601により利用されるプログラム及びデータを格納している。また、メインメモリ604は、オーディオIC610によるボコーダ処理に利用されるプログラムすなわちコーデック(Codec)を格納している。メインメモリ604としては、電源が遮断された場合に記憶したデータがクリアされる揮発性メモリであるDRAM(Dynamic Random Access Memory)が用いる場合が多い。もちろん、メインメモリ604として、電源が遮断されても記憶したデータを保持する不揮発性メモリを用いてもよい。
【0033】
バッテリ605は、電池であり、無線通信装置600が外部電源によらずに動作する場合に利用される。なお、無線通信装置600は、外部電源が接続されている場合においてもバッテリ605の電源を利用してもよい。また、バッテリ605としては、二次電池を利用することが好ましい。
【0034】
電源制御回路PMCは、バッテリ605又は外部電源から内部電源を生成する。この内部電源は、無線通信装置600の各ブロックに与えられる。このとき、電源制御回路PMCは、内部電源の供給を受けるブロック毎に内部電源の電圧を制御する。電源制御回路PMCは、アプリケーションプロセッサ601からの指示に基づき内部電源の電圧制御を行う。さらに、電源制御回路PMCは、ブロック毎に内部電源の供給と遮断とを制御することもできる。また、電源制御回路PMCは、外部電源の供給がある場合、バッテリ605への充電制御も行う。
【0035】
表示部607は、
図3A、3Bにおけるディスプレイデバイス502に相当するものであって、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機ELディスプレイ(OLED:Organic Light-Emitting Diode)等の表示装置である。表示部607は、アプリケーションプロセッサ601及びGPU613における処理に従い様々な画像を表示する。表示部607において表示される画像には、ユーザーが無線通信装置600に動作指示を与えるユーザーインタフェース画像、カメラ画像、動画等が含まれる。
【0036】
カメラ部608は、アプリケーションプロセッサ601からの指示に従い、画像を取得する。カメラ部608は、
図3A、3Bにおけるカメラデバイス505、506に相当するものである。
【0037】
操作入力部609は、ユーザーが操作して無線通信装置600に操作指示を与えるユーザーインタフェースである。操作入力部609は、
図3A、3Bにおけるタッチパネル503、操作ボタン504に相当するものである。
【0038】
オーディオIC610は、ベースバンドプロセッサ602から受け取ったデジタル信号である受信音声データをアナログ信号に変換し、スピーカ612を駆動する。これにより、スピーカ612から音声が出力される。
他方、オーディオIC610は、マイク611で検出したアナログ信号である音声をアナログ/デジタル(A/D)変換して、ベースバンドプロセッサ602に出力する。より具体的には、オーディオIC610は、アナログ信号である音声からデジタル信号であるPCMデータを生成する。
【0039】
<実施の形態1にかかる半導体装置の構成>
図5を参照して、本実施の形態にかかる半導体装置であるアプリケーションプロセッサ601の構成について説明する。アプリケーションプロセッサ601は、例えば、LSI(Large Scale Integration)である。アプリケーションプロセッサ601は、CPU10、周波数調整回路(Frequency Regulating Circuit)FRC1、クロック周波数制御回路CFCC1を含む。CPU10は、コア1を含む。周波数調整回路FRC1は、テーブルT1を備える。テーブルT1は、コア1のパフォーマンス値とクロックCK1の周波数値を対応付けている。
【0040】
<実施の形態1にかかる半導体装置の動作>
次に、本実施の形態にかかる半導体装置であるアプリケーションプロセッサ601の動作を説明する。クロック周波数制御回路CFCC1は、CPU10のコア1にクロックCK1を供給する。コア1は、クロックCK1に基づいて処理を実行する。コア1は、コア1の動作状態を示す動作状態信号(Operation State Signal)OSS1を出力する。ここでは、動作状態信号OSS1は、コア1のパフォーマンスを示すパフォーマンスモニタ信号である。動作状態信号OSS1が示すパフォーマンスは、絶対値でもコア1の最大パフォーマンスに対する相対値でもよい。例えば、パフォーマンスの単位はMIPS(Million Instructions per Second)である。周波数調整回路FRC1は、テーブルT1及び動作状態信号OSS1に基づいて、クロックCK1の周波数を制御する。具体的には、周波数調整回路FRC1は、テーブルT1及び動作状態信号OSS1に基づいて、周波数制御信号FCS1を出力する。周波数制御信号FCS1は、クロックCK1の設定周波数を示す。クロック周波数制御回路CFCC1は、周波数制御信号FCS1に基づいてクロックCK1の周波数を制御する。
【0041】
図6を参照して、本実施形態にかかる半導体装置であるアプリケーションプロセッサ601の動作を詳細に説明する。周波数調整回路FRC1は、一定の周波数制御インターバルごとにクロックCK1の周波数を制御する。具体的には、周波数調整回路FRC1は、テーブルT1を参照して、動作状態信号OSS1が示すコア1のパフォーマンスに対応する周波数を決定する。周波数調整回路FRC1は、決定した周波数を示す周波数制御信号FCS1を出力する。クロック周波数制御回路CFCC1は、周波数制御信号FCS1に基づいてクロックCK1の周波数を制御する。本実施形態にかかる周波数制御インターバルは短い。そのため、コア1が実行するパフォーマンスをコア1に要求されるパフォーマンスに追従させることができる。コア1の消費電力は、ベース部分及び有効部分から構成される。ベース部分は、コア1がアクティブ状態であるだけで必要とされる電力である。有効部分は、コア1の実行パフォーマンスに応じた電力である。
【0042】
<実施の形態1にかかる半導体装置と比較例にかかる半導体装置の対比>
本実施形態によれば、周波数調整回路FRC1は、動作状態信号OSS1が示すコア1のパフォーマンスに基づいてクロックCK1の周波数を制御する。そのため、比較例に比べて周波数制御インターバルを短くすることができる。そのため、要求パフォーマンス(負荷)がダイナミックに変化する場合であっても、実行パフォーマンスを要求パフォーマンスに追従させることができる。その結果、コア1のアクティブ状態が引き延ばされない。アクティブ状態が引き延ばされないため、コア1の消費電力のベース部分が大きくなってしまうことが防がれる。したがって、消費電力を低減することができる。更に、実行パフォーマンスをダイナミックに変化する要求パフォーマンスに追従させることができるため、クロックCK1の設定周波数の下限を低い値に設定できる。
【0043】
更に、本実施形態によれば、クロックCK1の周波数を制御するための専用回路としての周波数調整回路FRC1が設けられ、周波数調整回路FRC1はテーブルT1を備える。そのため、周波数調整回路FRC1は、OSに依存しないでクロックCK1の周波数を制御することができる。したがって、本実施形態によれば、比較例の場合とは異なり、オーバーヘッドが発生しない。
【0044】
以上、アプリケーションプロセッサ601が単一のCPUコア1を含む場合を説明したが、アプリケーションプロセッサ601が複数のCPUコア1を含んでいてもよい。この場合、CPUコア1ごとに周波数調整回路FRC1及びクロック周波数制御回路CFCC1が設けられる。
【0045】
<実施の形態1にかかるクロック周波数制御に用いられるテーブルの詳細な説明>
図7を参照して、テーブルT1は、レジスタ11、比較器12を含む。比較器12は、計算器13、パラメータテーブル14を含む。
【0046】
図8を参照して、レジスタ11に格納された値を説明する。レジスタ11は、ポイントP0〜P5として、第1のパラメータとしてのパフォーマンスの値と第2のパラメータとしての周波数の値の組合せを格納している。具体的には、レジスタ11は、パフォーマンス値「0」と周波数値「10%」の組合せとしてのポイントP0、パフォーマンス値「10」と周波数値「40%」の組合せとしてのポイントP1、パフォーマンス値「20」と周波数値「65%」の組合せとしてのポイントP2、パフォーマンス値「30」と周波数値「80%」の組合せとしてのポイントP3を格納する。レジスタ11は、パフォーマンス値「50」と周波数値「90%」の組合せとしてのポイントP4、パフォーマンス値「85」と周波数値「90%」の組合せとしてのポイントP5を格納する。尚、パフォーマンス値及び周波数値がそれぞれ最大値に対する相対値である場合が
図8に示されているが、パフォーマンス値及び周波数値は絶対値であってもよい。
【0047】
計算器13は、レジスタ11に格納されたポイントP0〜P5に基づいて、ポイントP0及びP1を補間するポイントP0−A、ポイントP1及びP2を補間するポイントP1−A、ポイントP2及びP3を補間するポイントP2−A、ポイントP3及びP4を補間するポイントP3−A〜P3−C、ポイントP4及びP5を補間するポイントP4−A〜P4−Dを計算する。
【0048】
図9を参照して、ポイントテーブル14は、ポイントP0〜P5、ポイントP0−A、P1−A、P2−A、P3−A〜P3−C、P4−A〜P4−Dを格納する。ポイントP0−Aは、パフォーマンス値「5」と周波数値「25%」の組合せである。ポイントP1−Aは、パフォーマンス値「15」と周波数値「52%」の組合せである。ポイントP2−Aは、パフォーマンス値「25」と周波数値「72%」の組合せである。ポイントP3−Aは、パフォーマンス値「35」と周波数値「82%」の組合せである。ポイントP3−Bは、パフォーマンス値「40」と周波数値「85%」の組合せである。ポイントP3−Cは、パフォーマンス値「45」と周波数値「87%」の組合せである。ポイントP4−Aは、パフォーマンス値「55」と周波数値「90%」の組合せである。ポイントP4−Bは、パフォーマンス値「60」と周波数値「90%」の組合せである。ポイントP4−Cは、パフォーマンス値「65」と周波数値「90%」の組合せである。ポイントP4−Dは、パフォーマンス値「70」と周波数値「90%」の組合せである。
【0049】
図10は、パラメータテーブル14に格納されたパフォーマンス値と周波数値の対応関係を示すグラフである。ポインントP0〜P5が塗りつぶされた円で示され、ポイントP0−A、P1−A、P2−A、P3−A〜P3−C、P4−A〜P4−Dが塗りつぶされない円で示される。
【0050】
比較器12は、パラメータテーブル14を参照して、動作状態信号OSS1が示すコア1のパフォーマンス値に対応する周波数値FRQ1を決定する。周波数調整回路FRC1は、周波数値FRQ1を示す周波数制御信号FCS1を出力する。
【0051】
計算器13がレジスタ11に格納されたポイントP0〜P5に基づいて補間ポイントP0−A、P1−A、P2−A、P3−A〜P3−C、P4−A〜P4−Dを計算しているため、レジスタ11に格納された少数のポイントP0〜P5を変更するだけでパラメータテーブル14の内容を変更することができる。そのため、無線通信端末600の使用状況に応じてパラメータテーブル14の内容を変更することが容易である。また、これらのポイントは自由に設定できるため、曲線的な周波数軌道を定義することも可能である。
【0052】
<実施の形態1におけるテーブルの設定例>
次に、本実施の形態におけるテーブルT1の設定例を説明する。
【0053】
図11Aは、音楽再生モードに適合したパラメータテーブル14の内容を示すグラフである。音楽再生モードではCPU10に要求されるパフォーマンスが小さいため、ポイントP1〜P5の周波数値を低く抑えている。
【0054】
図11Bは、タッチパネル入力操作モードに適合したパラメータテーブル14の内容を示すグラフである。タッチパネル入力操作モードではユーザーのタッチパネル503に対するタッチ操作に対して素早く反応するため、ポイントP0〜P2における周波数値の立ち上がりを急傾斜にしている。
【0055】
図11Cは、3D(Three dimensional)グラフィックスモードに適合したパラメータテーブル14の内容を示すグラフである。3DグラフィックスモードではGPU613からCPU10への要求に対して素早く反応するためにポイントP0〜P2における周波数値の立ち上がりを急傾斜にしているが、電流的な観点から周波数の上限値(ポイントP2〜P5の周波数値)をタッチパネル入力操作モードの場合よりも低い値に制限している。
【0056】
図11Dは、省電力モードに適合したパラメータテーブル14の内容を示すグラフである。ここでは、パフォーマンス値がある閾値(ポイントP4のパフォーマンス値)以下の場合は消費電流を抑えるために周波数値を低く設定しているが、パフォーマンス値が閾値より大きい場合の周波数値を高く設定している。
【0057】
<実施の形態1の変形例>
次に、実施の形態1の変形例を説明する。本変形例では、コア1が出力する動作状態信号OSS1は、コア1のアイドル状態を示す。そのため、周波数調整回路FRC1の構成及び動作が上述した構成及び動作と異なっている。
【0058】
図12を参照して、本変形例にかかる周波数調整回路FRC1は、テーブルT1、計算器15を備える。計算器15は、動作状態信号OSS1が示すコア1のアイドル状態に基づいて、コア1の動作率ATR1を計算する。動作率ATR1は、コア1の単位時間当たりの動作期間を示す。例えば、動作率ATR1は、周波数制御インターバルにおけるアクティブ状態時間の割合である。周波数調整回路FRC1は、テーブルT1及び動作率ATR1に基づいて、周波数制御信号FCS1を出力する。
【0059】
図13を参照して、本変形例にかかるテーブルT1は、コア1の動作率とクロックCK1の周波数値を対応付けている。尚、本変形例にかかるテーブルT1は、コア1の単位時間当たりのアイドル期間と周波数値を対応付けていてもよい。例えば、コア1の単位時間当たりのアイドル期間は、周波数制御インターバルにおけるアイドル状態時間の割合である。この場合、計算器15は、動作状態信号OSS1が示すコア1のアイドル状態に基づいて、コア1の単位時間当たりのアイドル期間を計算する。周波数調整回路FRC1は、テーブルT1及びコア1の単位時間当たりのアイドル期間に基づいて、周波数制御信号FCS1を出力する。
【0060】
本変形例においても実施の形態1の場合と同様に、クロックCK1の周波数を制御するための専用回路としての周波数調整回路FRC1が設けられ、周波数調整回路FRC1はテーブルT1を備える。そのため、周波数調整回路FRC1は、OSに依存しないでクロックCK1の周波数を制御することができる。したがって、本変形例によれば、比較例の場合とは異なり、オーバーヘッドが発生しない。オーバーヘッドが発生しないため、周波数制御インターバルを比較例の場合よりも短くすることができる。そのため、要求パフォーマンス(負荷)がダイナミックに変化する場合であっても、実行パフォーマンスを要求パフォーマンスに追従させることができる。その結果、コア1のアクティブ状態が引き延ばされない。アクティブ状態が引き延ばされないため、コア1の消費電力のベース部分が大きくなってしまうことが防がれる。したがって、消費電力を低減することができる。尚、動作状態信号OSS1がコア1のパフォーマンスを示す場合、周波数制御インターバルを更に短くすることができる
【0061】
(実施の形態2)
次に、実施の形態2にかかる半導体装置であるアプリケーションプロセッサ601を説明する。実施の形態2にかかるアプリケーションプロセッサ601は、複数のCPUコアを含む。以下において、実施の形態1と共通する事項の説明は省略される場合がある。
【0062】
<実施の形態2にかかる半導体装置の構成>
図14を参照して、実施の形態2にかかる半導体装置であるアプリケーションプロセッサ601の構成について説明する。アプリケーションプロセッサ601は、CPU10及び20を含む。CPU10は、動作周波数とパフォーマンスが低い省電力CPUである。CPU20は、動作周波数とパフォーマンスが高い高性能CPUである。CPU10は、コア1及び2を含む。CPU20は、コア3及び4を含む。コア1〜4は、それぞれ、クロックCK1〜4に基づいて処理を実行する。
【0063】
アプリケーションプロセッサ601は、周波数調整回路FRC1〜FRC4、クロック周波数制御回路CFCC1〜CFCC4を含む。周波数調整回路FRC1は、クロックCK1の周波数を制御するためのテーブルT1、切り替え回路SC1を含む。テーブルT1は、コア1のパフォーマンス値とクロックCK1の周波数値を対応付けている。周波数調整回路FRC2は、クロックCK2の周波数を制御するためのテーブルT2、切り替え回路SC2を含む。テーブルT2は、コア2のパフォーマンス値とクロックCK2の周波数値を対応付けている。周波数調整回路FRC3は、クロックCK3の周波数を制御するためのテーブルT3、切り替え回路SC3を含む。テーブルT3は、コア3のパフォーマンス値とクロックCK3の周波数値を対応付けている。周波数調整回路FRC4は、クロックCK4の周波数を制御するためのテーブルT4、切り替え回路SC4を含む。テーブルT4は、コア4のパフォーマンス値とクロックCK4の周波数値を対応付けている。
【0064】
本実施の形態にかかるテーブルT1〜T4の構成は、実施の形態1にかかるテーブルT1と同様である。本実施の形態にかかるテーブルT1〜T4の各々において、ポイントP0〜P5が設定されている。ただし、本実施の形態にかかるテーブルT1〜T4におけるパフォーマンス値と周波数値の対応関係は、後述するように設定されている。パフォーマンス値と周波数値の対応関係は、消費電力を低減するために制御対象であるCPUコアごとに異なっている。パフォーマンス値と周波数値の対応関係は、制御対象であるコア1〜4の特性(省電力タイプ又は高性能タイプ)にマッチしていることが好ましい。
【0065】
<実施の形態2にかかる半導体装置の動作>
次に、本実施の形態にかかる半導体装置であるアプリケーションプロセッサ601の動作を説明する。
【0066】
クロック周波数制御回路CFCC1は、CPU10のコア1にクロックCK1を供給する。コア1は、クロックCK1に基づいて処理を実行する。コア1は、コア1の動作状態を示す動作状態信号OSS1を出力する。動作状態信号OSS1は、コア1のパフォーマンスを示すパフォーマンスモニタ信号である。周波数調整回路FRC1は、テーブルT1及び動作状態信号OSS1に基づいて、クロックCK1の周波数を制御する。具体的には、周波数調整回路FRC1は、テーブルT1及び動作状態信号OSS1に基づいて、周波数制御信号FCS1を出力する。周波数制御信号FCS1は、クロックCK1の設定周波数を示す。クロック周波数制御回路CFCC1は、周波数制御信号FCS1に基づいてクロックCK1の周波数を制御する。切り替え回路SC1は、テーブルT1及び動作状態信号OSS1に基づいて、切り替え要求(スイッチ要求)SW11を出力する。周波数調整回路FRC1は、切り替え要求SW21に基づいて、制御状態を切り替える。
【0067】
クロック周波数制御回路CFCC2は、CPU10のコア2にクロックCK2を供給する。コア2は、クロックCK2に基づいて処理を実行する。コア2は、コア2の動作状態を示す動作状態信号OSS2を出力する。動作状態信号OSS2は、コア2のパフォーマンスを示すパフォーマンスモニタ信号である。周波数調整回路FRC2は、テーブルT2及び動作状態信号OSS2に基づいて、クロックCK2の周波数を制御する。具体的には、周波数調整回路FRC2は、テーブルT2及び動作状態信号OSS2に基づいて、周波数制御信号FCS2を出力する。周波数制御信号FCS2は、クロックCK2の設定周波数を示す。クロック周波数制御回路CFCC2は、周波数制御信号FCS2に基づいてクロックCK2の周波数を制御する。切り替え回路SC2は、テーブルT2及び動作状態信号OSS2に基づいて、切り替え要求SW12、SW21を出力する。周波数調整回路FRC2は、切り替え要求SW11、SW22に基づいて、制御状態を切り替える。
【0068】
クロック周波数制御回路CFCC3は、CPU20のコア3にクロックCK3を供給する。コア3は、クロックCK3に基づいて処理を実行する。コア3は、コア3の動作状態を示す動作状態信号OSS3を出力する。動作状態信号OSS3は、コア3のパフォーマンスを示すパフォーマンスモニタ信号である。周波数調整回路FRC3は、テーブルT3及び動作状態信号OSS3に基づいて、クロックCK3の周波数を制御する。具体的には、周波数調整回路FRC3は、テーブルT3及び動作状態信号OSS3に基づいて、周波数制御信号FCS3を出力する。周波数制御信号FC3は、クロックCK3の設定周波数を示す。クロック周波数制御回路CFCC3は、周波数制御信号FCS3に基づいてクロックCK3の周波数を制御する。切り替え回路SC3は、テーブルT3及び動作状態信号OSS3に基づいて、切り替え要求SW13、SW22を出力する。周波数調整回路FRC3は、切り替え要求SW12、SW23に基づいて、制御状態を切り替える。
【0069】
クロック周波数制御回路CFCC4は、CPU20のコア4にクロックCK4を供給する。コア4は、クロックCK4に基づいて処理を実行する。コア4は、コア4の動作状態を示す動作状態信号OSS4を出力する。動作状態信号OSS4は、コア4のパフォーマンスを示すパフォーマンスモニタ信号である。周波数調整回路FRC4は、テーブルT4及び動作状態信号OSS4に基づいて、クロックCK4の周波数を制御する。具体的には、周波数調整回路FRC4は、テーブルT4及び動作状態信号OSS4に基づいて、周波数制御信号FCS4を出力する。周波数制御信号FC4は、クロックCK4の設定周波数を示す。クロック周波数制御回路CFCC4は、周波数制御信号FCS4に基づいてクロックCK4の周波数を制御する。切り替え回路SC4は、テーブルT4及び動作状態信号OSS4に基づいて、切り替え要求SW23を出力する。周波数調整回路FRC4は、切り替え要求SW13に基づいて、制御状態を切り替える。
【0070】
図15を参照して、コア1〜4におけるクロック制御の連携を説明する。
図15は、実施の形態2にかかる半導体装置の制御方法のフローチャートである。半導体装置の制御方法は、ステップS100〜S103、S105。S111〜S115、S121〜S125、S131、S132、S134、S135を含む。
【0071】
ステップS100において、テーブルT1を設定する。具体的には、テーブルT1の計算器13がテーブルT1のレジスタ11に格納されたポイントP0〜P5に基づいて、ポイントP0〜P5を補間する補間ポイントを計算する。テーブルT1のパラメータテーブル14は、ポイントP0〜P5及び補間ポイントを格納する。更に、テーブルT1と同様に、テーブルT2〜T4を設定する。
【0072】
周波数調整回路FRC1は、動作状態信号OSS1が示すパフォーマンス値をチェックする(S101)。周波数調整回路FRC1は、動作状態信号OSS1が示すパフォーマンス値とテーブルT1とを比較する(S102)。動作状態信号OSS1が示すパフォーマンス値がテーブルT1におけるパフォーマンス値の最大値(ポイントP5のパフォーマンス値)より大きい場合(S103においてYES)、ステップS111に進む。動作状態信号OSS1が示すパフォーマンス値がテーブルT1におけるパフォーマンス値の最大値より大きくない場合(S103においてNO)、周波数調整回路FRC1は、テーブルT1及び動作状態信号OSS1が示すパフォーマンス値に基づいてクロックCK1の周波数を設定する(S105)。ステップS105の後、ステップS101に戻る。
【0073】
周波数調整回路FRC2は、動作状態信号OSS2が示すパフォーマンス値をチェックする(S111)。周波数調整回路FRC2は、動作状態信号OSS2が示すパフォーマンス値とテーブルT2とを比較する(S112)。動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最大値(ポイントP5のパフォーマンス値)より大きい場合(S113においてYES)、ステップS121に進む。動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最大値より大きくない場合(S113においてNO)、ステップS114に進む。動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最小値(ポイントP0のパフォーマンス値)より小さい場合(S114においてYES)、ステップS101に戻る。動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最小値より小さくない場合(S114においてNO)、周波数調整回路FRC2は、テーブルT2及び動作状態信号OSS2が示すパフォーマンス値に基づいてクロックCK2の周波数を設定する(S115)。ステップS115の後、ステップS111に戻る。
【0074】
周波数調整回路FRC3は、動作状態信号OSS3が示すパフォーマンス値をチェックする(S121)。周波数調整回路FRC3は、動作状態信号OSS3が示すパフォーマンス値とテーブルT3とを比較する(S121)。動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最大値(ポイントP5のパフォーマンス値)より大きい場合(S123においてYES)、ステップS131に進む。動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最大値より大きくない場合(S123においてNO)、ステップS124に進む。動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最小値(ポイントP0のパフォーマンス値)より小さい場合(S124においてYES)、ステップS111に戻る。動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最小値より小さくない場合(S124においてNO)、周波数調整回路FRC3は、テーブルT3及び動作状態信号OSS3が示すパフォーマンス値に基づいてクロックCK3の周波数を設定する(S125)。ステップS125の後、ステップS121に戻る。
【0075】
周波数調整回路FRC4は、動作状態信号OSS4が示すパフォーマンス値をチェックする(S131)。周波数調整回路FRC4は、動作状態信号OSS4が示すパフォーマンス値とテーブルT4とを比較する(S131)。動作状態信号OSS4が示すパフォーマンス値がテーブルT4におけるパフォーマンス値の最小値(ポイントP0のパフォーマンス値)より小さい場合(S134においてYES)、ステップS121に戻る。動作状態信号OSS4が示すパフォーマンス値がテーブルT4におけるパフォーマンス値の最小値より小さくない場合(S134においてNO)、周波数調整回路FRC4は、テーブルT4及び動作状態信号OSS4が示すパフォーマンス値に基づいてクロックCK4の周波数を設定する(S135)。ステップS135の後、ステップS131に戻る。
【0076】
図16A〜16Dを参照して、コア1〜4におけるクロック制御の連携を更に説明する。
【0077】
図16Aは、周波数調整回路FRC1の状態遷移図である。周波数調整回路FRC1は、状態S10、S11、S12をとることができる。初期状態である状態S10において、周波数調整回路FRC1は、ステップS100で説明したようにテーブルT1を設定する。テーブルT1の設定が終了すると、周波数調整回路FRC1は、状態S10から状態S11に切り替わる。
【0078】
状態11において、周波数調整回路FRC1は、ステップS101〜S105を繰り返し実行して、クロックCK1の周波数をテーブルT1及び動作状態信号OSS1に基づいて制御する。状態11では、クロックCK1の周波数は、動作状態信号OSS1が示すパフォーマンス値の変化に従って変動する。ここで、アプリケーションプロセッサ601の負荷が増大すると動作状態信号OSS1が示すパフォーマンス値が大きくなる。動作状態信号OSS1が示すパフォーマンス値がテーブルT1におけるパフォーマンス値の最大値(設定の上限であるポイントP5のパフォーマンス値)より大きい場合、コア1だけでは処理が追いつかないほどに負荷が増大していると判断できる。したがって、動作状態信号OSS1が示すパフォーマンス値がテーブルT1におけるパフォーマンス値の最大値より大きいことを検出すると(S103においてYES)、周波数調整回路FRC1は、切り替え要求SW11を周波数調整回路FRC2に出力し、状態S11から状態S12に切り替わる。
【0079】
状態12において、周波数調整回路FRC1は、クロックCK1の周波数をテーブルT1における周波数値の最大値(ポイントP5の周波数値)に固定する。周波数調整回路FRC2から切り替え要求SW21を受信すると、周波数調整回路FRC1は、状態S12から状態S11に切り替わる。
【0080】
図16Bは、周波数調整回路FRC2の状態遷移図である。周波数調整回路FRC2は、状態S20、S29、S21、S22をとることができる。初期状態である状態S20において、周波数調整回路FRC2は、ステップS100で説明したようにテーブルT2を設定する。テーブルT2の設定が終了すると、周波数調整回路FRC2は、状態S20から状態S29に切り替わる。状態S29において、周波数調整回路FRC2は、クロック周波数制御回路CFCC2にクロックCK2を供給させない。周波数調整回路FRC1から切り替え要求SW11を受信すると、周波数調整回路FRC2は、クロック周波数制御回路CFCC2にコア2へのクロックCK2の供給を開始させ、状態S29から状態S21に切り替わる。
【0081】
状態21において、周波数調整回路FRC2は、ステップS111〜S115を繰り返し実行して、クロックCK2の周波数をテーブルT2及び動作状態信号OSS2に基づいて制御する。状態21では、クロックCK2の周波数は、動作状態信号OSS2が示すパフォーマンス値の変化に従って変動する。ここで、アプリケーションプロセッサ601の負荷が増大すると動作状態信号OSS2が示すパフォーマンス値が大きくなる。動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最大値(設定の上限であるポイントP5のパフォーマンス値)より大きい場合、コア1及び2だけでは処理が追いつかないほどに負荷が増大していると判断できる。したがって、動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最大値より大きいことを検出すると(S113においてYES)、周波数調整回路FRC2は、切り替え要求SW12を周波数調整回路FRC3に出力し、状態S21から状態S22に切り替わる。
【0082】
一方、アプリケーションプロセッサ601の負荷が低下すると動作状態信号OSS2が示すパフォーマンス値が小さくなる。動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最小値(設定の下限であるポイントP0のパフォーマンス値)より小さい場合、コア1だけで処理が可能な程度に負荷が低下していると判断できる。したがって、動作状態信号OSS2が示すパフォーマンス値がテーブルT2におけるパフォーマンス値の最小値より小さいことを検出すると(S114においてYES)、周波数調整回路FRC2は、切り替え要求SW21を周波数調整回路FRC1に出力し、状態S21から状態S29に切り替わる。
【0083】
状態22において、周波数調整回路FRC2は、クロックCK2の周波数をテーブルT2における周波数値の最大値(ポイントP5の周波数値)に固定する。周波数調整回路FRC3から切り替え要求SW22を受信すると、周波数調整回路FRC2は、状態S22から状態S21に切り替わる。
【0084】
図16Cは、周波数調整回路FRC3の状態遷移図である。周波数調整回路FRC3は、状態S30、S39、S31、S32をとることができる。初期状態である状態S30において、周波数調整回路FRC3は、ステップS100で説明したようにテーブルT3を設定する。テーブルT3の設定が終了すると、周波数調整回路FRC3は、状態S30から状態S39に切り替わる。状態S39において、周波数調整回路FRC3は、クロック周波数制御回路CFCC3にクロックCK3を供給させない。周波数調整回路FRC2から切り替え要求SW12を受信すると、周波数調整回路FRC3は、クロック周波数制御回路CFCC3にコア3へのクロックCK3の供給を開始させ、状態S39から状態S31に切り替わる。
【0085】
状態31において、周波数調整回路FRC3は、ステップS121〜S125を繰り返し実行して、クロックCK3の周波数をテーブルT3及び動作状態信号OSS3に基づいて制御する。状態31では、クロックCK3の周波数は、動作状態信号OSS3が示すパフォーマンス値の変化に従って変動する。ここで、アプリケーションプロセッサ601の負荷が増大すると動作状態信号OSS3が示すパフォーマンス値が大きくなる。動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最大値(設定の上限であるポイントP5のパフォーマンス値)より大きい場合、コア1〜3だけでは処理が追いつかないほどに負荷が増大していると判断できる。したがって、動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最大値より大きいことを検出すると(S123においてYES)、周波数調整回路FRC3は、切り替え要求SW13を周波数調整回路FRC4に出力し、状態S31から状態S32に切り替わる。
【0086】
一方、アプリケーションプロセッサ601の負荷が低下すると動作状態信号OSS3が示すパフォーマンス値が小さくなる。動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最小値(設定の下限であるポイントP0のパフォーマンス値)より小さい場合、コア1及び2だけで処理が可能な程度に負荷が低下していると判断できる。したがって、動作状態信号OSS3が示すパフォーマンス値がテーブルT3におけるパフォーマンス値の最小値より小さいことを検出すると(S124においてYES)、周波数調整回路FRC3は、切り替え要求SW22を周波数調整回路FRC2に出力し、状態S31から状態S39に切り替わる。
【0087】
状態32において、周波数調整回路FRC3は、クロックCK3の周波数をテーブルT3における周波数値の最大値(ポイントP5の周波数値)に固定する。周波数調整回路FRC4から切り替え要求SW23を受信すると、周波数調整回路FRC3は、状態S32から状態S31に切り替わる。
【0088】
図16Dは、周波数調整回路FRC4の状態遷移図である。周波数調整回路FRC4は、状態S40、S49、S41をとることができる。初期状態である状態S40において、周波数調整回路FRC4は、ステップS100で説明したようにテーブルT4を設定する。テーブルT4の設定が終了すると、周波数調整回路FRC4は、状態S40から状態S49に切り替わる。状態S49において、周波数調整回路FRC4は、クロック周波数制御回路CFCC4にクロックCK4を供給させない。周波数調整回路FRC3から切り替え要求SW13を受信すると、周波数調整回路FRC4は、クロック周波数制御回路CFCC4にコア3へのクロックCK4の供給を開始させ、状態S49から状態S41に切り替わる。
【0089】
状態41において、周波数調整回路FRC4は、ステップS131〜S135を繰り返し実行して、クロックCK4の周波数をテーブルT4及び動作状態信号OSS4に基づいて制御する。状態41では、クロックCK4の周波数は、動作状態信号OSS4が示すパフォーマンス値の変化に従って変動する。ここで、アプリケーションプロセッサ601の負荷が低下すると動作状態信号OSS4が示すパフォーマンス値が小さくなる。動作状態信号OSS4が示すパフォーマンス値がテーブルT4におけるパフォーマンス値の最小値(設定の下限であるポイントP0のパフォーマンス値)より小さい場合、コア1〜3だけで処理が可能な程度に負荷が低下していると判断できる。したがって、動作状態信号OSS4が示すパフォーマンス値がテーブルT4におけるパフォーマンス値の最小値より小さいことを検出すると(S134においてYES)、周波数調整回路FRC4は、切り替え要求SW23を周波数調整回路FRC3に出力し、状態S41から状態S49に切り替わる。
【0090】
<実施の形態2におけるテーブルの設定例>
次に、本実施の形態におけるテーブルT1〜T4の設定例を説明する。
【0091】
図17Aは、テーブルT1に設定されたパフォーマンス値と周波数値の対応関係を示すグラフである。ポイントP0〜P5が塗りつぶされた円で示されている。軽い負荷を省電力タイプのコア1だけで処理できるように、テーブルT1はクロックCK1の周波数が上がりやすいように設定されている。
【0092】
図17Bは、テーブルT2におけるパフォーマンス値と周波数値の対応関係を示すグラフである。ポイントP0〜P5が塗りつぶされた円で示されている。ポイントP0からポイントP4までの区間において、周波数値はパフォーマンス値の増加に対してリニアに増加する。このように、テーブルT2は、クロックCK2の周波数が上がりやすいように設定されている。ただし、可能な限り省電力タイプのコア1及び2だけで負荷を処理できるように、ポイントP5のパフォーマンス値を大きい値に設定して切り替え要求SW12の発生を抑制している。
【0093】
図17Cは、テーブルT3に設定されたパフォーマンス値と周波数値の対応関係を示すグラフである。ポイントP0〜P5が塗りつぶされた円で示されている。高性能ではあるが消費電力が大きいコア3及び省電力タイプのコア1、2だけで負荷を処理する目的で、クロックCK3の設定周波数の上限(ポイントP2〜P5の周波数値)を制限し、切り替え要求SW13の発生を抑制している。
【0094】
図17Dは、テーブルT4に設定されたパフォーマンス値と周波数値の対応関係を示すグラフである。ポイントP0〜P5が塗りつぶされた円で示されている。コア4の動作時間を可能な限り短縮する目的で、テーブルT4はクロックCK4の周波数が上がりやすいように設定されている。
【0095】
このように、特性が互いに異なるCPU10及び20について、消費電力低下を目的としたクロック周波数制御を実行することができる。
【0096】
尚、本実施の形態において、動作状態信号OSS1〜OSS4は、コア1〜4のアイドル状態を示してもよい。この場合、周波数調整回路FRC1〜FRC4は、実施の形態1の変形例にかかる周波数調整回路FRC1と同様の処理により周波数制御信号FCS1〜FCS4を出力する。
【0097】
本実施の形態によれば、コア1〜4のクロック制御を連携させることができる。言い換えると、アプリケーションプロセッサ601の負荷の変化に応じて処理を実行するCPUコアを増減することができる。したがって、アプリケーションプロセッサ601全体のパフォーマンスをダイナミックに変動する負荷に良好に追従させることができる。更に、アプリケーションプロセッサ601に含まれるCPUコアが増加しても増加したCPUコアに対応した周波数調整回路及びクロック周波数制御回路を追加するだけでよいので、本実施の形態にかかる半導体装置であるアプリケーションプロセッサ601は拡張性に優れている。更に、省電力タイプのコア1及び2と高性能タイプのコア3及び4の役割分担が適正化されるため、アプリケーションプロセッサ601全体のパフォーマンスをダイナミックに変動する負荷に良好に追従させながら、アプリケーションプロセッサ601全体の消費電力を抑制することができる。
【0098】
図18を参照して、本実施の形態による他の効果を説明する。
図18は、本実施の形態にかかる半導体装置であるアプリケーションプロセッサ601全体におけるパフォーマンスとパワーの関係を示すグラフである。状態S11、S29、S39、S49に対応する処理モード、状態S12、S21、S39、S49に対応する処理モード、状態S12、S22、S31、S49に対応する処理モード、状態S12、S22、S32、S51に対応する処理モード、処理モード間の切り替えが示されている。アプリケーションプロセッサ601全体の電流限界としてのパワーリミットがある場合、パワーリミットに対応するパフォーマンスリミットをテーブルに設定してパフォーマンスリミットに対応する周波数値以上にクロックの周波数が上がらないようにすることが可能である。これにより、定義することが難しいアプリケーションプロセッサ601全体の電流上限を数値的に定義することができる。
【0099】
(実施の形態3)
次に、実施の形態3にかかる半導体装置であるアプリケーションプロセッサ601を説明する。実施の形態3では、CPU20のコア3、4の動作電圧の制御が追加される。以下において、実施の形態2と共通する事項の説明は省略される場合がある。
【0100】
<実施の形態3にかかる半導体装置の構成>
図19を参照して、実施の形態3にかかる半導体装置であるアプリケーションプロセッサ601の構成について説明する。アプリケーションプロセッサ601は、CPU10及び20を含む。CPU10及び20の構成は実施の形態2と同様である。
【0101】
アプリケーションプロセッサ601は、周波数調整回路FRC1〜FRC4、クロック周波数制御回路CFCC1〜CFCC4を含む。周波数調整回路FRC1、FRC2の構成は、実施の形態2と同様である。クロック周波数制御回路CFCC1〜CFCC4の構成は、実施の形態2と同様である。周波数調整回路FRC3、FRC4の構成は、実施の形態2と異なる。電源制御回路PMCは、コア3に動作電圧を供給する電源制御部5、コア4に動作電圧を供給する電源制御部6を含む。
【0102】
図20Aを参照して、周波数調整回路FRC3の構成を説明する。周波数調整回路FRC3は、クロックCK3の周波数を制御するためのテーブルT3及びT30、切り替え回路SC3を含む。テーブルT3及びT30は、それぞれ、コア3のパフォーマンス値とクロックCK3の周波数値を対応付けている。テーブルT3におけるパフォーマンス値と周波数値の対応関係は、テーブルT30におけるパフォーマンス値と周波数値の対応関係と異なっている。テーブル3は、後述する通常電圧NVに対応している。テーブルT30は、後述するオーバードライブ電圧ODVに対応している。
【0103】
図20Bを参照して、周波数調整回路FRC4の構成を説明する。周波数調整回路FRC4は、クロックCK4の周波数を制御するためのテーブルT4及びT40、切り替え回路SC4を含む。テーブルT4及びT40は、それぞれ、コア4のパフォーマンス値とクロックCK4の周波数値を対応付けている。テーブルT4におけるパフォーマンス値と周波数値の対応関係は、テーブルT40におけるパフォーマンス値と周波数値の対応関係と異なっている。テーブル4は、後述する通常電圧NVに対応している。テーブルT40は、後述するオーバードライブ電圧ODVに対応している。
【0104】
<実施の形態3にかかる半導体装置の動作>
次に、本実施の形態にかかる半導体装置であるアプリケーションプロセッサ601の動作を説明する。
【0105】
CPU10、周波数調整回路FRC1及びFRC2、クロック周波数制御回路CFCC1及びCFCC2の動作は実施の形態2と同様である。
【0106】
図19及び
図20Aを参照して、クロック周波数制御回路CFCC3は、CPU20のコア3にクロックCK3を供給する。コア3は、クロックCK3に基づいて処理を実行する。コア3は、コア3の動作状態を示す動作状態信号OSS3を出力する。動作状態信号OSS3は、コア3のパフォーマンスを示すパフォーマンスモニタ信号である。周波数調整回路FRC3は、一の制御状態において、テーブルT3及び動作状態信号OSS3に基づいて、クロックCK3の周波数を制御する。具体的には、周波数調整回路FRC3は、テーブルT3及び動作状態信号OSS3に基づいて、周波数制御信号FCS3を出力する。周波数調整回路FRC3は、他の制御状態において、テーブルT30及び動作状態信号OSS3に基づいて、クロックCK3の周波数を制御する。具体的には、周波数調整回路FRC3は、テーブルT30及び動作状態信号OSS3に基づいて、周波数制御信号FCS3を出力する。周波数制御信号FC3は、クロックCK3の設定周波数を示す。クロック周波数制御回路CFCC3は、周波数制御信号FCS3に基づいてクロックCK3の周波数を制御する。切り替え回路SC3は、テーブルT3及び動作状態信号OSS3に基づいて、切り替え要求SW13、SW22を出力する。切り替え回路SC3は、テーブルT30及び動作状態信号OSS3に基づいて、切り替え要求SW15、SW24、電圧ダウン要求DW3を出力する。周波数調整回路FRC3は、切り替え要求SW12、SW23、SW25に基づいて、制御状態を切り替える。周波数調整回路FRC3は、切り替え要求SW14に基づいて、制御状態を切り替え、電圧アップ要求UP3を出力する。
【0107】
図19及び
図20Bを参照して、クロック周波数制御回路CFCC4は、CPU20のコア4にクロックCK4を供給する。コア4は、クロックCK4に基づいて処理を実行する。コア4は、コア4の動作状態を示す動作状態信号OSS4を出力する。動作状態信号OSS4は、コア4のパフォーマンスを示すパフォーマンスモニタ信号である。周波数調整回路FRC4は、一の制御状態において、テーブルT4及び動作状態信号OSS4に基づいて、クロックCK4の周波数を制御する。具体的には、周波数調整回路FRC4は、テーブルT4及び動作状態信号OSS4に基づいて、周波数制御信号FCS4を出力する。周波数調整回路FRC4は、他の制御状態において、テーブルT40及び動作状態信号OSS4に基づいて、クロックCK4の周波数を制御する。具体的には、周波数調整回路FRC4は、テーブルT40及び動作状態信号OSS4に基づいて、周波数制御信号FCS4を出力する。周波数制御信号FC4は、クロックCK4の設定周波数を示す。クロック周波数制御回路CFCC4は、周波数制御信号FCS4に基づいてクロックCK4の周波数を制御する。切り替え回路SC4は、テーブルT4及び動作状態信号OSS4に基づいて、切り替え要求SW14、SW23を出力する。切り替え回路SC4は、テーブルT40及び動作状態信号OSS4に基づいて、切り替え要求SW25、電圧ダウン要求DW4を出力する。周波数調整回路FRC4は、切り替え要求SW13、SW24に基づいて、制御状態を切り替える。周波数調整回路FRC4は、切り替え要求SW15に基づいて、制御状態を切り替え、電圧アップ要求UP4を出力する。
【0108】
図19を参照して、電源制御部5は、電圧アップ要求UP3に基づいて、コア3に供給する動作電圧を通常電圧NVに制御する状態からオーバードライブ電圧ODVに制御する状態に切り替わる。ここで、オーバードライブ電圧ODVは通常電圧NVより高い。電源制御部5は、電圧ダウン要求DW3に基づいて、コア3に供給する動作電圧をオーバードライブ電圧ODVに制御する状態から通常電圧NVに制御する状態に切り替わる。
【0109】
図19を参照して、電源制御部6は、電圧アップ要求UP4に基づいて、コア4に供給する動作電圧を通常電圧NVに制御する状態からオーバードライブ電圧ODVに制御する状態に切り替わる。ここで、オーバードライブ電圧ODVは通常電圧NVより高い。電源制御部6は、電圧ダウン要求DW4に基づいて、コア4に供給する動作電圧をオーバードライブ電圧ODVに制御する状態から通常電圧NVに制御する状態に切り替わる。
【0110】
図21Aを参照して、周波数調整回路FRC3の動作を更に説明する。
図21Aは、周波数調整回路FRC3の状態遷移図である。周波数調整回路FRC3は、状態S30、S39、S31〜S34をとることができる。初期状態である状態S30において、周波数調整回路FRC3は、テーブルT3及びT30を設定する。状態S39、S31、S32、状態S30と状態S39の間の切り替え、状態S39と状態S31の間の切り替え、状態S31と状態S32の間の切り替えは、実施の形態2と同様である。周波数調整回路FRC4から切り替え要求SW14を受信すると、周波数調整回路FRC3は、電圧アップ要求UP3を電源制御部5に出力し、状態S32から状態S33に切り替わる。
【0111】
状態S33において、周波数調整回路FRC3は、クロックCK3の周波数をテーブルT30及び動作状態信号OSS3に基づいて制御する。状態33では、クロックCK3の周波数は、動作状態信号OSS3が示すパフォーマンス値の変化に従って変動する。周波数調整回路FRC3が状態S33の場合のコア3の処理能力は、周波数調整回路FRC3が状態S31の場合のコア3の処理能力より高い。ここで、アプリケーションプロセッサ601の負荷が増大すると動作状態信号OSS3が示すパフォーマンス値が大きくなる。動作状態信号OSS3が示すパフォーマンス値がテーブルT30におけるパフォーマンス値の最大値より大きい場合、アプリケーションプロセッサ601の現在の処理能力では処理が追いつかないほどに負荷が増大していると判断できる。したがって、動作状態信号OSS3が示すパフォーマンス値がテーブルT30におけるパフォーマンス値の最大値より大きいことを検出すると、周波数調整回路FRC3は、切り替え要求SW15を周波数調整回路FRC4に出力し、状態S33から状態S34に切り替わる。
【0112】
一方、アプリケーションプロセッサ601の負荷が低下すると動作状態信号OSS3が示すパフォーマンス値が小さくなる。動作状態信号OSS3が示すパフォーマンス値がテーブルT30におけるパフォーマンス値の最小値より小さい場合、アプリケーションプロセッサ601の現在の処理能力が負荷に対して過剰になっていると判断できる。したがって、動作状態信号OSS3が示すパフォーマンス値がテーブルT30におけるパフォーマンス値の最小値より小さいことを検出すると、周波数調整回路FRC3は、切り替え要求SW24を周波数調整回路FRC4に出力し、電圧ダウン要求DW3を電源制御部5に出力し、状態S33から状態S32に切り替わる。
【0113】
状態34において、周波数調整回路FRC3は、クロックCK3の周波数をテーブルT30における周波数値の最大値に固定する。周波数調整回路FRC3が状態S34の場合のコア3の処理能力は、周波数調整回路FRC3が状態S32の場合のコア3の処理能力より高い。波数調整回路FRC4から切り替え要求SW25を受信すると、周波数調整回路FRC3は、状態S34から状態S33に切り替わる。
【0114】
図21Bを参照して、周波数調整回路FRC4の動作を更に説明する。
図21Bは、周波数調整回路FRC4の状態遷移図である。周波数調整回路FRC4は、状態S40、S49、S41〜S43をとることができる。初期状態である状態S40において、周波数調整回路FRC4は、テーブルT4及びT40を設定する。状態S49、S41、状態S40と状態S49の間の切り替え、状態S49と状態S41の間の切り替えは、実施の形態2と同様である。
【0115】
状態S41において、アプリケーションプロセッサ601の負荷が増大すると動作状態信号OSS4が示すパフォーマンス値が大きくなる。動作状態信号OSS4が示すパフォーマンス値がテーブルT4におけるパフォーマンス値の最大値より大きい場合、アプリケーションプロセッサ601の現在の処理能力では処理が追いつかないほどに負荷が増大していると判断できる。したがって、動作状態信号OSS4が示すパフォーマンス値がテーブルT4におけるパフォーマンス値の最大値より大きいことを検出すると、周波数調整回路FRC4は、切り替え要求SW14を周波数調整回路FRC3に出力し、状態S41から状態S42に切り替わる。
【0116】
状態42において、周波数調整回路FRC4は、クロックCK4の周波数をテーブルT4における周波数値の最大値に固定する。波数調整回路FRC3から切り替え要求SW15を受信すると、周波数調整回路FRC4は、電圧アップ要求UP4を電源制御部6に出力し、状態S42から状態S43に切り替わる。波数調整回路FRC3から切り替え要求SW24を受信すると、周波数調整回路FRC4は、状態S42から状態S41に切り替わる。
【0117】
状態S43において、周波数調整回路FRC4は、クロックCK4の周波数をテーブルT40及び動作状態信号OSS4に基づいて制御する。状態43では、クロックCK4の周波数は、動作状態信号OSS4が示すパフォーマンス値の変化に従って変動する。周波数調整回路FRC4が状態S43の場合のコア4の処理能力は、周波数調整回路FRC4が状態S41の場合のコア4の処理能力より高い。ここで、アプリケーションプロセッサ601の負荷が低下すると動作状態信号OSS4が示すパフォーマンス値が小さくなる。動作状態信号OSS4が示すパフォーマンス値がテーブルT40におけるパフォーマンス値の最小値より小さい場合、アプリケーションプロセッサ601の現在の処理能力が負荷に対して過剰になっていると判断できる。したがって、動作状態信号OSS4が示すパフォーマンス値がテーブルT40におけるパフォーマンス値の最小値より小さいことを検出すると、周波数調整回路FRC4は、切り替え要求SW25を周波数調整回路FRC3に出力し、電圧ダウン要求DW4を電源制御部6に出力し、状態S43から状態S42に切り替わる。
【0118】
図21Cを参照して、電源制御部5の動作を更に説明する。
図21Cは、電源制御部5の状態遷移図である。電源制御部5は、状態S51、S52をとることができる。初期状態である状態S51において、電源制御部5は、コア3に供給する動作電圧を通常電圧NVに制御する。周波数調整回路FRC3から電圧アップ要求UP3を受信すると、電源制御部5は、状態S51から状態S52に切り替わる。状態S52において、電源制御部5は、コア3に供給する動作電圧をオーバードライブ電圧ODVに制御する。周波数調整回路FRC3から電圧ダウン要求DW3を受信すると、電源制御部5は、状態S52から状態S51に切り替わる。したがって、周波数調整回路FRC3が状態31の場合と状態32の場合の両方において、電源制御部5は状態S51である。周波数調整回路FRC3が状態33の場合と状態34の場合の両方において、電源制御部5は状態S52である。
【0119】
図21Dを参照して、電源制御部6の動作を更に説明する。
図21Dは、電源制御部6の状態遷移図である。電源制御部6は、状態S61、S62をとることができる。初期状態である状態S61において、電源制御部6は、コア4に供給する動作電圧を通常電圧NVに制御する。周波数調整回路FRC4から電圧アップ要求UP4を受信すると、電源制御部6は、状態S61から状態S62に切り替わる。状態S62において、電源制御部6は、コア4に供給する動作電圧をオーバードライブ電圧ODVに制御する。周波数調整回路FRC4から電圧ダウン要求DW4を受信すると、電源制御部6は、状態S62から状態S61に切り替わる。したがって、周波数調整回路FRC4が状態41の場合と状態42の場合の両方において、電源制御部6は状態S61である。周波数調整回路FRC4が状態43の場合において、電源制御部6は状態S62である。
【0120】
尚、本実施の形態において、動作状態信号OSS1〜OSS4は、コア1〜4のアイドル状態を示してもよい。この場合、周波数調整回路FRC1〜FRC4は、実施の形態1の変形例にかかる周波数調整回路FRC1と同様の処理により周波数制御信号FCS1〜FCS4を出力する。
【0121】
本実施の形態によれば、複数のCPUコアについてのクロック制御及び動作電圧制御を連携させることで、アプリケーションプロセッサ601全体のパフォーマンスをダイナミックに変動する負荷に更に良好に追従させることができる。
【0122】
<変更例等>
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。例えば、テーブルT1〜T4、T30、T40とは別の閾値と動作状態信号OSS1〜OSS4との比較に基づいて制御状態の切り替えを行ってもよい。