【解決手段】実施態様の半導体集積回路では、演算処理回路10は、演算処理を行う第1プロセッサコアと、データ及びプログラムを記憶するキャッシュメモリを含む共通部とを備え、第1プロセッサコア及び共通部の少なくともいずれか一方が第1回路と第2回路に分割されている。第1クロックゲーティング回路は、第1回路へクロック信号を供給あるいは停止する。第1パワースイッチは、第1回路へ電源電圧を供給あるいは遮断する。第2クロックゲーティング回路は、第2回路へ前記クロック信号を供給あるいは停止する。第2パワースイッチは、第2回路へ前記電源電圧を供給あるいは遮断する。省電力コントローラ20は、第1及び第2クロックゲーティング回路、及び第1及び第2パワースイッチを制御する。
演算処理を行う第1プロセッサコアと、データ及びプログラムを記憶するキャッシュメモリを含む共通部とを備え、前記第1プロセッサコア及び前記共通部の少なくともいずれか一方が第1回路と第2回路に分割された演算処理回路と、
前記第1回路へクロック信号を供給あるいは停止する第1クロックゲーティング回路と、
前記第1回路へ電源電圧を供給あるいは遮断する第1パワースイッチと、
前記第2回路へ前記クロック信号を供給あるいは停止する第2クロックゲーティング回路と、
前記第2回路へ前記電源電圧を供給あるいは遮断する第2パワースイッチと、
前記第1及び第2クロックゲーティング回路、及び前記第1及び第2パワースイッチを制御するコントローラと、
を具備する半導体集積回路。
前記共通部へ前記クロック信号を供給あるいは停止する第3クロックゲーティング回路と、前記共通部へ前記電源電圧を供給あるいは遮断する第3パワースイッチと、前記第1プロセッサコアへ前記クロック信号を供給あるいは停止する第4クロックゲーティング回路と、前記第1プロセッサコアへ前記電源電圧を供給あるいは遮断する第4パワースイッチとのうち、前記第3クロックゲーティング回路及び第3パワースイッチ、あるいは前記第4クロックゲーティング回路及び第4パワースイッチの少なくともいずれか一方をさらに備え、
前記コントローラは、前記第3クロックゲーティング回路及び第3パワースイッチ、あるいは前記第4クロックゲーティング回路及び第4パワースイッチの前記少なくともいずれか一方を制御する請求項1に記載の半導体集積回路。
前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つは、前記電源電圧の供給が遮断されるときに直前の処理データを保持するデータ保持部を有する請求項1または2に記載の半導体集積回路。
前記第1プロセッサコアが前記第1回路及び第2回路を含む場合、前記第1の機能単位及び第2の機能単位の少なくともいずれか一方は、演算処理部、命令処理部、データ処理部、及びメモリシステムの少なくともいずれか1つを含む請求項4に記載の半導体集積回路。
前記共通部が前記第1回路及び第2回路を含む場合、前記第1の機能単位及び第2の機能単位の少なくともいずれか一方は、キャッシュメモリ及び前記キャッシュメモリを制御するメモリ制御部の少なくともいずれか1つを含む請求項4に記載の半導体集積回路。
前記コントローラは、前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つを省電力状態に制御する複数の省電力モードを有し、
前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つを稼働状態に起動する要因となるウェイクアップ信号の入力頻度に応じて、前記コントローラは前記少なくともいずれか1つに対する省電力モードを、前記複数の省電力モードから選択する請求項1乃至7のいずれかに記載の半導体集積回路。
前記第1省電力状態は、前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つに前記クロック信号の供給を停止することを含み、
前記第2省電力状態は、前記少なくともいずれか1つに前記電源電圧の供給を遮断することを含む請求項10に記載の半導体集積回路。
前記第1省電力状態は、前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つの領域のうち、第1の割合の領域に対して前記クロック信号の供給を停止し、前記第2省電力状態は、前記少なくともいずれか1つの領域のうち、前記第1の割合より大きな第2の割合の領域に対して前記クロック信号の供給を停止することを含む請求項10に記載の半導体集積回路。
前記第1省電力状態は、前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つの領域のうち、第1の割合の領域に対して前記電源電圧の供給を遮断し、前記第2省電力状態は、前記少なくともいずれか1つの領域のうち、前記第1の割合より大きな第2の割合の領域に対して前記電源電圧の供給を遮断することを含む請求項10に記載の半導体集積回路。
前記演算処理回路は、演算処理を行う第2プロセッサコアをさらに備え、前記第2プロセッサコアは第3回路及び第4回路に分割され、前記第1及び第2プロセッサコアは前記共通部が含む前記キャッシュメモリを共有し、
前記第3回路へ前記クロック信号を供給あるいは停止する第5クロックゲーティング回路と、
前記第3回路へ前記電源電圧を供給あるいは遮断する第5パワースイッチと、
前記第4回路へ前記クロック信号を供給あるいは停止する第6クロックゲーティング回路と、
前記第4回路へ前記電源電圧を供給あるいは遮断する第6パワースイッチとをさらに備え、
前記コントローラは、前記第5及び第6クロックゲーティング回路、及び前記第5及び第6パワースイッチを制御する請求項1乃至13のいずれかに記載の半導体集積回路。
【発明を実施するための形態】
【0009】
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【0010】
[実施形態]
本実施形態の低消費電力制御が可能な半導体集積回路について説明する。
【0011】
1. 半導体集積回路の構成
図1は、実施形態の半導体集積回路の構成を示すブロック図である。半導体集積回路1は、CPU(central processing unit)10、省電力コントローラ20、RAM(random access memory)30、周辺インターフェース(周辺IF)40、及び割込みコントローラ50を備える。バス60は、CPU10、省電力コントローラ20、RAM30、周辺インターフェース(周辺IF)40、及び割込みコントローラ50を接続している。省電力制御の対象はCPU10であり、省電力コントローラ20はCPU10内の制御対象領域に対して省電力制御を行う。ここでは、CPU10を例に挙げ説明するが、3次元グラフィックスプロセッサやビデオグラフィックスプロセッサ等にも適用できる。
【0012】
CPU10は、データに演算操作など何らかの処理を施す機能をもった装置であり、複数の回路を備える。CPU10の詳細な構成は後述する。
【0013】
省電力コントローラ20は、CPU10内の制御対象領域(電源ドメイン)を省電力状態に設定する省電力制御を行う。省電力コントローラ20は、省電力制御を行うために、クロック制御信号CC1,CC2、制御信号PC1,PC2,RC1,RC2,RC3をCPU10に出力する。RAM30は、CPU10が実行するプログラムやCPU10内の制御対象領域を制御するためのファームウエア等を記憶する。さらに、RAM30はCPU10の作業領域として使用される。
【0014】
周辺インターフェース40は、外部から入力される各種のイベントに応じて、割り込み指令を割込みコントローラ50へ出力する。割り込みコントローラ50は割込み指令を省電力コントローラ20へウェイクアップ要因信号として出力する。CPU10もウェイクアップ要因信号またはスリープ要因信号を省電力コントローラ20へ出力する。ウェイクアップ要因信号は、CPU10内の制御対象領域が動作を停止している時に動作を再開する要因となる信号である。スリープ要因信号SPは、CPU10内の制御対象領域が動作を停止し待機状態に入ることが可能なことを示す信号である。
【0015】
以下に、本実施形態におけるCPU10の構成を詳細に説明する。
【0016】
図2は、CPU10の詳細な構成を示す図である。CPU10は、プロセッサコアP0、プロセッサコアP1、及び共通部COを備える。プロセッサコア(以下、コアと記す)P0,P1の各々は、独立して演算処理回路として働く回路部分である。
図3に、コアP0またはP1の構成を示す。コアP0は、機能単位として演算処理部I1、命令処理部I2、データ処理部I3、及びメモリシステムI4を有する。コアP1も同様に、機能単位として演算処理部I1、命令処理部I2、データ処理部I3、及びメモリシステムI4を有する。共通部COは、コアP0,P1によって共通に利用される部分である。
図4に、共通部COの構成を示す。共通部COは、機能単位としてメモリシステム(キャッシュメモリを制御するメモリ制御部)I5,I6、キャッシュメモリI7、及びその他の回路部I8を有する。キャッシュメモリI7は、CPU10外部との間で送受信するデータ及びプログラム等を記憶する。メモリシステムI5,I6は、キャッシュメモリI7を制御するメモリ制御部等を含む。
【0017】
次に、本実施形態のCPU10における省電力制御可能な単位について説明する。
【0018】
図5は、CPU10における省電力制御可能な単位を示す図である。例えば、コアP0を省電力制御単位毎に2つに分割し、サブコアP0−1,P0−2とする。また、コアP1を省電力制御単位毎に2つに分割し、サブコアP1−1,P1−2とする。
【0019】
サブコアP0−1,P0−2,P1−1,P1−2の各々は、1つの機能単位あるいは複数の機能単位を有する。
図6(a)、
図6(b)に、サブコアP0−1,P0−2の構成例を示す。例えば、
図6(a)に示すように、サブコアP0−1は命令処理部I2、データ処理部I3、及びメモリシステムI4を含み、サブコアP0−2は演算処理部I1を含む。サブコアP1−1,P1−2も同様に
図6(a)に示す構成を含む。
【0020】
また、
図6(b)に示すように、サブコアP0−1はデータ処理部I3及びメモリシステムI4を含み、サブコアP0−2は演算処理部I1及び命令処理部I2を含む。サブコアP1−1,P1−2も同様に
図6(b)に示す構成を含む。
【0021】
ここでは、コアP0,P1の各々を2つに分割する例を示したが、これに限るわけではなく、コアP0,P1の各々を3つ以上に分割してもよい。
図6(c)に、コアP0をサブコアP0−1,P0−2,P0−3に分割した例を示す。サブコアP0−1はデータ処理部I3及びメモリシステムI4を含み、サブコアP0−2は命令処理部I2を含み、サブコアP0−3は演算処理部I1を含む。サブコアP1−1,P1−2,P1−3も同様に
図6(c)に示す構成を含む。
【0022】
また、
図5に示したように、共通部COを省電力制御単位毎に2つに分割し、サブ共通部CO−1,CO−2とする。サブ共通部CO−1,CO−2の各々は、1つの機能単位あるいは複数の機能単位を有する。
図7(a)、
図7(b)、
図7(c)に、サブ共通部CO−1,CO−2の構成例を示す。例えば、
図7(a)に示すように、サブ共通部CO−1はメモリシステムI6、キャッシュメモリI7、及びその他の回路部I8を含み、サブ共通部CO−2はメモリシステムI5を含む。
【0023】
また、
図7(b)に示すように、サブ共通部CO−1はキャッシュメモリI7を含み、サブ共通部CO−2はメモリシステムI5,I6、及びその他の回路部I8を含む。また、
図7(c)に示すように、サブ共通部CO−1はメモリシステムI6を含み、サブ共通部CO−2はメモリシステムI5、キャッシュメモリI7、及びその他の回路部I8を含む。ここでは、共通部COを2つに分割する例を示したが、これに限るわけではなく、3つ以上に分割してもよい。
【0024】
また、コアP0,P1、共通部COの各々を機能単位に関係なく、所定の面積または形状、省電力処理時間、回路容量毎に分割し、省電力制御単位としてもよい。前記所定の面積とは、例えば半導体基板上のコアP0,P1、共通部COの各々が占める領域を一定面積毎に分割したものである。前記省電力処理時間とは、例えば半導体基板上のコアP0,P1、共通部COの各々が占める領域を、省電力制御に掛る時間が一定の領域毎に分割したものである。
【0025】
また、コアP0,P1の各々を省電力制御単位としてもよい。また、共通部COを省電力制御単位としてもよい。
【0026】
図8(a)、
図8(b)に、コアP0を所定の面積毎に分割した例を示す。例えば、
図8(a)に示すように、コアP0が占める領域を斜めに分割し、一方をサブコアP0−1とし、他方をサブコアP0−2とする。また、
図8(b)に示すように、コアP0が占める領域を複数(ここでは3つ)に分割し、左側からサブコアP0−1,P0−2,P0−3としてもよい。
【0027】
図9(a)、
図9(b)に、共通部COを所定の面積毎に分割した例を示す。例えば、
図9(a)に示すように、共通部COが占める領域を斜めに分割し、一方をサブ共通部CO−1とし、他方をサブ共通部CO−2とする。また、
図9(b)に示すように、共通部COが占める領域を複数(ここでは3つ)に分割し、左側からサブ共通部CO−1,CO−2,CO−3としてもよい。
【0028】
次に、サブコアP0−1,P0−2,P1−1,P1−2、サブ共通部CO−1,CO−2の各々が有する構成について説明する。サブコアP0−1,P0−2,P1−1,P1−2、サブ共通部CO−1,CO−2の各々は
図10に示すような構成を含む。以下に、サブコアP0−1を例に挙げその構成を示す。
【0029】
図10は、サブコアP0−1が含む機能ブロックを示す図である。
【0030】
サブコアP0−1は、クロックゲーティング回路11、リテンションFF(flip-flop)12,13、組み合わせ回路14,15、及びリテンションSRAM(static random access memory)16を備える。さらに、サブコアP0−1の外部に、クロックゲーティング回路17、パワースイッチ18、パワースイッチ18A、及びアイソレーションセル19を備える。
【0031】
クロックゲーティング回路17は、クロック制御信号CC1に応じて、サブコアP0−1に対してクロックCKを供給あるいは停止する。クロックゲーティング回路11は、クロック制御信号CC2に応じて、リテンションFF12,13、リテンションSRAM16に対してクロックCKを供給あるいは停止する。パワースイッチ18には電源電圧VDDが供給されている。パワースイッチ18は、制御信号PC1に応じて、サブコアP0−1に対して電源電圧VDDを供給あるいは遮断する。パワースイッチ18Aには電源電圧VDDAが供給されている。パワースイッチ18Aは、制御信号PC2に応じて、サブコアP0−1に対して電源電圧VDDAを供給あるいは遮断する。
【0032】
リテンションFF12には、データ及び制御信号が入力される。リテンションFF12は、制御信号RC1に応じて、入力されたデータ及び制御信号を一時的に記憶する。組み合わせ回路14,15は、入力されたデータ等を処理する。リテンションSRAM16は、制御信号RC2に応じて、サブコアP0−1への電源電圧の供給を停止する際に、バッファなどに保持していたデータを記憶する。リテンションFF13は、組み合わせ回路15等にて処理されたデータを一時的に記憶する。サブコアP0−1への電源電圧の供給を停止する際に、アイソレーションセル19は、制御信号RC3に応じて停止前の値を保持する、すなわちサブコアP0−1の出力信号を0または1のどちらかの値に固定する。これにより、電源電圧の供給を停止した時も、サブコアP0−2またはサブ共通部CO−1,CO−2への出力信号の値が確定される。また、サブコアP0−1とサブコアP0−2との間には、アイソレーションセル19が設けられている。サブコアP1−1とサブコアP1−2との間にはアイソレーションセル19が設けられている。さらに、サブ共通部CO−1とサブ共通部CO−2との間には、アイソレーションセル19が設けられている。
【0033】
また、コアP0,P1、共通部COの各々を省電力制御単位とした場合は、コアP0,P1、共通部COの各々が
図10に示すような構成を含む。
【0034】
以下に、本実施形態における省電力コントローラ20の構成を詳細に説明する。
【0035】
図11は、実施形態の半導体集積回路1内の省電力コントローラ20の構成を示すブロック図である。省電力コントローラ20は、省電力制御投入器21、省電力モード切替器22、及び省電力制御シーケンサ23を有する。
【0036】
省電力制御投入器21は、省電力モード切替器22から出力された省電力モード信号LMにより、省電力モード信号LMに応じて所定の省電力モードに設定される。省電力制御投入器21は、設定された省電力モードにおいて、割込みコントローラ50及びCPU10からウェイクアップ要因信号WUまたはスリープ要因信号SPを受け取り、これら信号に応じてCPU10内の複数の制御対象領域に対して省電力制御の実行及び解除を指令する。省電力制御投入器21は、省電力状態の種類及びそれへの移行タイミングを決定し、必要な制御要求信号LDを省電力制御シーケンサ23に出力する。
【0037】
省電力制御シーケンサ23は、制御要求信号LDに応じて省電力制御の実行及び解除を行う。すなわち、省電力制御シーケンサ23は、CPU10内の複数の制御対象領域に対してクロックゲーティングの実行あるいは解除、及び電源電圧の供給あるいは遮断等を制御する省電力制御信号LCを出力する。省電力制御シーケンサ23の構成については後で詳述する。
【0038】
CPU10内の制御対象領域は、複数の電力状態を取ることが可能である。例えば、(1)稼働状態、(2)クロック供給が停止されたクロックゲーティング状態、(3)電源電圧の供給が遮断されたリテンション状態、(4)一切のリテンションを行わない電源完全オフ状態の4状態の電力状態の場合、省電力状態は(2)、(3)の2種類である。この(2)、(3)のどちらを使用するかを判断し、適した省電力モードの設定を指示する省電力モード信号LMを出力するのが省電力モード切替器22である。省電力モード切替器22は、(3)リテンション状態を使用することを判断した場合、さらに、どの制御対象領域をリテンション状態にするかを判断する。省電力モード切替器22の構成については後で詳述する。
【0039】
以下に、本実施形態における省電力制御投入器21の構成を詳細に説明する。
【0040】
図12は、実施形態における省電力コントローラ20内の省電力制御投入器21の構成を示すブロック図である。省電力制御投入器21は、ステートマシン211及び省電力状態保持回路212を有する。
【0041】
ステートマシン211は、省電力状態保持回路212との間で状態信号STを送受信する。状態信号STは、CPU10内の制御対象領域の現状の電力状態を示す信号である。ステートマシン211は、省電力状態保持回路212から出力された状態信号STに基づいて、CPU10内の制御対象領域の電力状態を認知する。さらに、ステートマシン211は、省電力モード切替器22から出力された省電力モード信号LMに基づいて最適な省電力モードを設定する。
【0042】
ステートマシン211は、ウェイクアップ要因信号WUあるいはスリープ要因信号SPを受け取ると、設定された省電力モードに従って制御対象領域がどの電力状態に遷移すべきかを判断する。そして、その電力状態に遷移させるための制御要求信号LDを省電力制御シーケンサ23に出力する。
【0043】
以下に、本実施形態における省電力制御シーケンサ23の構成を詳細に説明する。
【0044】
図13は、実施形態における省電力コントローラ20内の省電力制御シーケンサ23の構成を示すブロック図である。省電力制御シーケンサ23は、ステートマシン231、パワースイッチ制御部232、データ保持回路制御部233、クロック制御部234、及びアイソレーションセル制御部235を有する。
【0045】
ステートマシン231は、制御要求信号LDに基づいてパワースイッチ制御部232、データ保持回路制御部233、クロック制御部234、及びアイソレーションセル制御部235を制御する。
【0046】
パワースイッチ制御部232は、CPU10内の複数の制御対象領域への電源電圧VDDの供給あるいは遮断を制御する制御信号PC1を、パワースイッチ18に出力する。パワースイッチ18は、組み合わせ回路15、リテンションFF12,13内部のデータ保持部以外の部分、あるいはリテンションSRAM16内部のデータ保持部以外の部分への電源電圧VDDの供給あるいは遮断を制御する。
【0047】
パワースイッチ制御部232は、またCPU10内の複数の制御対象領域への電源電圧VDDAの供給あるいは遮断を制御する制御信号PC2を、パワースイッチ18Aに出力する。パワースイッチ18Aは、パワースイッチ18による電源電圧VDDの供給遮断時においても、電源をオンしておく回路への電源電圧VDDAの供給あるいは遮断を制御する。例えば、パワースイッチ18Aは、リテンションFF12,13内部のデータ保持部、あるいはリテンションSRAM16内部のデータ保持部への電源電圧VDDAの供給あるいは遮断を制御する。このパワースイッチ18Aを備えることにより、リテンションFF12,13及びリテンションSRAM16にデータを保持する必要がない場合に、電源電圧VDD及び電源電圧VDDAを全て遮断することにより、消費電力削減効果を高めることができる。なお、データ保持部には、電源電圧VDDの供給が遮断されるときに、直前の処理データが保持される。
【0048】
データ保持回路制御部233は、CPU10内のデータ保持回路、例えばリテンションFF12,13またはリテンションSRAM16のデータ保持を制御する制御信号RC1またはRC2を、リテンションFF12,13またはリテンションSRAM16に出力する。
【0049】
クロック制御部234は、制御対象領域へのクロックCKの供給あるいは停止を制御する制御信号CC1,CC2を出力する。さらに、アイソレーションセル制御部235は、アイソレーションセル19によるデータの出力あるいは保持を制御する制御信号RC3を出力する。
【0050】
以下に、本実施形態における省電力モード切替器22の構成を詳細に説明する。
【0051】
図14は、実施形態における省電力コントローラ20内の省電力モード切替器22の構成を示すブロック図である。
【0052】
前述したように、省電力モード切替器22は、(2)クロックゲーティング状態、または(3)リテンション状態のどちらを使用するかを判断し、適する省電力モードの設定を指示する。省電力モードの切り替えを行うのは、省電力モード切替判定器である。省電力モードの切り替えは、ハードウエア、ソフトウエアのいずれでも切り替え可能であるが、ここではハードウエアで切り替える例を示す。本実施形態では、ウェイクアップ要因信号WUのヒストリと省電力モードの切り替え閾値とを比較し、その比較結果に応じて省電力モードを決定し切り替える。すなわち、省電力モード切替器22は、複数の省電力モードを有し、前記比較結果に応じて複数の省電力モードから適した省電力モードを選択する。
【0053】
省電力モード切替器22は、ウェイクアップ要因ヒストリバッファ221、カウンタ回路222、モードレジスタ223、及び省電力モード切替判定器224を有する。ウェイクアップ要因ヒストリバッファ221は、バッファに限るわけではなく、FIFO(first-in first-out)であってもよい。
【0054】
以下に、ウェイクアップ要因ヒストリバッファ221、カウンタ回路222、モードレジスタ223、及び省電力モード切替判定器224の詳細を説明する。
【0055】
図15は、実施形態における省電力モード切替器22内のウェイクアップ要因ヒストリバッファ221の構成を示すブロック図である。
【0056】
ウェイクアップ要因ヒストリバッファ221は、要因選択/ライト判定部2211、バッファ2212、及びデータ選択部2213を有する。
【0057】
要因選択/ライト判定部は2211、複数種類のウェイクアップ要因信号WU1,WU2のうち、要因設定信号SSFにより指定された種類のウェイクアップ要因信号WUを選択する。さらに、選択したウェイクアップ要因信号WUと、そのウェイクアップ要因信号を受け取った時刻(タイムスタンプSTS)を、バッファ2212内の記憶領域n(例えば、nは0〜7のいずれかの整数)に記憶する。すなわち、ウェイクアップ要因信号WUと、その信号のタイムスタンプSTSとを対応付けてバッファ2212に記憶する。
【0058】
データ選択部2213は、選択設定信号SDSにて指定されたバッファ2212内の記憶領域nからイベント(ウェイクアップ要因信号とタイムスタンプ)を選択し出力する。例えば、データ選択部2213により記憶領域nからn番目に新しいイベントEVNが選択され、省電力モード切替判定器224に出力される。また、記憶領域0から最新のイベントEV0が選択され、省電力モード切替判定器224に出力される。
【0059】
また、カウンタ回路222は、ウェイクアップ要因ヒストリバッファ221に時刻(タイムスタンプSTS)を出力する。
【0060】
図16は、実施形態における省電力モード切替器22内のモードレジスタ223の構成を示すブロック図である。モードレジスタ223は、切替要因設定レジスタ2231、データ選択レジスタ2232、切替閾値レジスタ2233、及び状態遷移制御レジスタ2234を有する。
【0061】
モードレジスタ223内のこれらレジスタは、ソフトウエアによって設定される。切替要因設定レジスタ2231は、どのイベントによって、すなわちどのような種類のウェイクアップ要因信号によって省電力モードの切り替えを判断するかを記憶する。さらに、そのイベント、すなわちウェイクアップ要因信号を示す要因設定信号SSFをウェイクアップ要因ヒストリバッファ221に出力する。
【0062】
データ選択レジスタ2232は、バッファ2212内の何番目の記憶領域のデータで省電力モードの切り替えを判断するかを記憶する。さらに、その記憶領域を示す選択設定信号SDSをウェイクアップ要因ヒストリバッファ221に出力する。
【0063】
切替閾値レジスタ2233は、省電力モードの切り替えを判断するための切り替え閾値を記憶する。例えば、切替要因設定レジスタ2231に記憶されたある種類のウェイクアップ要因信号WUの入力頻度との比較を行うための閾値、具体的にはウェイクアップ要因信号WUの入力間隔との比較を行うための期間を切り替え閾値として記憶し、その切り替え閾値を示す閾値信号SSTを省電力モード切替判定器224に出力する。
【0064】
状態遷移制御レジスタ2234は、どの状態まで省電力状態の遷移を制限するかを記憶し、その状態遷移を制御する状態信号SSCを省電力モード切替判定器224に出力する。
【0065】
図17は、実施形態における省電力モード切替器22内の省電力モード切替判定器224の構成を示すブロック図である。省電力モード切替判定器224は、タイム差計算部2241、比較部2242、制限部2243、及び省電力モード出力部2244を有する。
【0066】
タイム差計算部2241は、バッファ2212及びデータ選択部2213から出力された最新のイベントEV0とn番目に新しいイベントEVNとの時刻差を計算する。比較部2242は、タイム差計算部2241により算出された時刻差と閾値信号SSTにて示された切り替え閾値とを比較し、その比較結果を省電力モード出力部2244に出力する。
【0067】
省電力モード出力部2244は、前記比較結果と、制限部2243からの信号と状態遷移を制御する状態信号SSCとに基づいて、省電力モードを切り替えるか否かを判断し、省電力モードを設定するための省電力モード信号LMを出力する。
【0068】
詳述すると、省電力モード出力部2244は、タイム差計算部2241により算出された時刻差が、閾値信号SSTが示す切り替え閾値より小さいとき、選択されたウェイクアップ要因信号の入力頻度が高いと判断する。そして、高い入力頻度に適した省電力モードに切り替えるための省電力モード信号LMを、省電力制御投入器21に出力する。一方、時刻差が切り替え閾値より大きいとき、選択されたウェイクアップ要因信号の入力頻度が低いと判断する。そして、低い入力頻度に適した省電力モードに切り替えるための省電力モード信号LMを、省電力制御投入器21に出力する。
【0069】
2. 半導体集積回路の動作
CPU10に対して本実施形態による省電力制御を行う例として、4つのパターン(省電力制御パターン1〜4)を説明する。省電力制御とは、クロックゲーティング回路によるクロックゲーティングの実行、あるいはパワースイッチによる電源電圧の供給/遮断を制御することをいう。
【0070】
図18は、実施形態における省電力制御パターン1の制御方法を示す図である。この制御パターン1では、
図2に示したコアP0,P1、共通部COの各々を省電力制御単位として設定する。すなわち、省電力コントローラ20は、コアP0、コアP1、及び共通部COの各々を制御対象領域とし、これら各々に対して省電力制御を行う。
【0071】
図19は、実施形態における省電力制御パターン2の制御方法を示す図である。この制御パターン2は、コアP0,P1の省電力制御範囲を減らす例である。制御パターン2では、コアP0のサブコアP0−2は省電力制御単位として省電力制御を行い、サブコアP0−1は個別の省電力制御を行わず、サブコアP0−2とは別の省電力制御単位とする。同様に、コアP1のサブコアP1−2は省電力制御単位として省電力制御を行い、サブコアP1−1は個別の省電力制御を行わず、サブコアP1−2とは別の省電力制御単位とする。この例では、サブ共通部CO−1,CO−2、サブコアP0−1、サブコアP1−1は同一の省電力制御単位とし、これらに対して省電力制御を共通に行う。
【0072】
このような制御パターン2では、コアP0内のサブコアP0−2あるいはコアP1内のサブコアP1−2だけを省電力制御できる、すなわちサブコアP0−2,P1−2だけに対してクロックゲーティングあるいは電源電圧の供給/遮断を実行できる。このため、省電力制御に必要な時間を短縮することができる。すなわち、コアP0あるいはコアP1においてクロックゲーティングあるいは電源をオン/オフする領域を削減できるので、コアP0あるいはコアP1を省電力状態から稼働状態に遷移させるのに要する時間を短縮できる。
【0073】
図20は、実施形態における省電力制御パターン3の制御方法を示す図である。この制御パターン3では、コアP0(サブコアP0−1、サブコアP0−2)は省電力制御単位として省電力制御を行い、コアP1は個別の省電力制御を行わず、コアP0とは別の省電力制御単位とする。この例では、サブ共通部CO−1,CO−2、サブコアP1−1、サブコアP1−2は同一の省電力制御単位とし、これらに対して省電力制御を共通に行う。
【0074】
このような制御パターン3は、コアP0は頻繁に稼働させないが、コアP1は頻繁に稼働させるような場合に用いると多大な効果がある。この場合、コアP0だけを省電力制御できる、すなわちコアP0だけに対してクロックゲーティングあるいは電源電圧の供給/遮断を実行できる。このため、省電力制御に必要な時間を短縮することができる。すなわち、クロックゲーティングの解除あるいは電源電圧の供給/遮断に要する時間を短縮することができる。一方、頻繁に稼働させるコアP1に対しては個別の省電力制御を行わず、共通部COと同一の省電力制御を行うことにより、コアP1を省電力状態から稼働状態に遷移させるのに要する時間を短縮することができる。
【0075】
図21は、実施形態における省電力制御パターン4の制御方法を示す図である。この制御パターン4は、共用部COの省電力制御範囲を減らす例である。制御パターン4では、コアP0、コアP1の各々は省電力制御単位として省電力制御を行う。共通部COのサブ共通部CO−2も省電力制御単位として省電力制御を行う。一方、サブ共通部CO−1は省電力制御単位とせず、省電力制御を行わない。
【0076】
このような制御パターン4は、共通部COの省電力制御に要する時間を短縮したい場合に用いる。この場合、サブ共通部CO−2を省電力制御し、サブ共通部CO−1を省電力制御しないことにより、共通部COの稼働に要する時間を短縮することができる。
【0077】
次に、
図1及び
図22を参照して半導体集積回路の動作の概要を述べる。
【0078】
図22は、実施形態の半導体集積回路の動作を示すフロー図である。
【0079】
まず、CPU10内の制御対象領域が稼働状態にあるものとする(ステップS1)。その後、CPU10における処理が終了し、CPU10内の制御対象領域が待機状態となる(ステップS2)。CPU10内の制御対象領域が待機状態となると、制御対象領域が待機状態であることを省電力コントローラ20に通知する。すなわち、CPU10はスリープ要因信号SPを省電力コントローラ20に通知する(ステップS3)。
【0080】
次に、省電力コントローラ20がCPU10へ省電力制御を実施する(ステップS4)。すなわち、省電力コントローラ20は、現状の省電力モードにおいて、受け取ったスリープ要因信号に応じてCPU10内の制御対象領域に対して省電力制御を行う。これにより、CPU10内の制御対象領域は省電力状態となる(ステップS5)。
【0081】
続いて、CPU10を稼働する必要がある要因が、周辺インターフェース40に入力される(ステップS6)。すると、周辺インターフェース40は、ウェイクアップ要因信号(割り込み信号)WUを省電力コントローラ20に出力する(ステップS7)。
【0082】
省電力コントローラ20は、ウェイクアップ要因信号WUを受け取ると、CPU10内の制御対象領域の省電力状態を解除する(ステップS8)。これにより、CPU10内の制御対象領域は再び稼働状態になる(ステップS9)。その後、CPU10における処理が終了し、ステップS2に戻る。なおここでは、電源をオフする処理を記載していないが、必要に応じて電源をオフする処理が設けられる。
【0083】
次に、
図11及び
図23を参照して省電力コントローラ20の動作について説明する。
【0084】
図23は、実施形態における省電力コントローラ20の動作を示すフロー図である。
【0085】
まず、CPU10内の制御対象領域(サブコアP0−1,P0−2,P1−1,P1−2、及びサブ共通部CO−1,CO−2)に対して、省電力制御シーケンサ23は、稼働状態を指示する省電力制御信号LCを出力する(ステップS11)。続いて、省電力制御投入器21は、CPU10内の制御対象領域が待機状態である情報を受け取る。省電力制御投入器21は、CPU10から制御対象領域が待機状態であることを示すスリープ信号を受け取る(ステップS12)。
【0086】
次に、省電力モード切替器22は、制御対象領域に対する省電力モードの設定を行う(ステップS13)。省電力モードの設定については後で詳述する。
【0087】
続いて、省電力モード切替器22は、CPU10内の制御対象領域に対して省電力制御が許可されているか否かを判断する。省電力制御が許可されている場合は、どの制御が可能かを判断する(ステップS14)。省電力制御が許可されていない場合は、処理を終了する。
【0088】
次に、省電力制御シーケンサ23は、制御対象領域へ指定された省電力制御を実現する省電力制御信号LCを出力する(ステップS15)。
【0089】
その後、省電力モード切替器22は、制御対象領域を稼働する要因(ウェイクアップ要因信号WU)を受け取った場合(ステップS16)、再度、制御対象領域に対する省電力モードの設定を行う。すなわち、省電力モード切替器22は、ウェイクアップ要因信号WUを受け取る毎に、制御対象領域に対する省電力モードの設定を行う(ステップS17)。
【0090】
次に、省電力制御シーケンサ23は、制御対象領域へ指定された省電力制御の解除を実施する。すなわち、省電力制御シーケンサ23は、制御対象領域に対して省電力状態から稼働状態への遷移を指示する省電力制御信号LCを出力する(ステップS18)。
【0091】
続いて、CPU10内の制御対象領域に対して、省電力制御シーケンサ23は、稼働状態を指示する省電力制御信号LCを出力する(ステップS19)。その後、CPU10における処理が終了したら、ステップS12に戻る。
【0092】
次に、
図14及び
図24を参照して省電力モード切替器22の動作について説明する。
【0093】
図24は、実施形態における省電力モード切替器22の動作を示すフロー図である。
【0094】
本実施形態では、省電力モード切替器22により、ウェイクアップ要因信号WU(もしくはスリープ要因信号SP)のヒストリに基づいて省電力モードを切り替える。すなわち、省電力モード切替器22は、ウェイクアップ要因信号WU(もしくはスリープ要因信号SP)が入力される毎に、ウェイクアップ要因信号WU(もしくはスリープ要因信号SP)の入力頻度が切り替え閾値より大きいか小さいかによって、省電力モードを設定する。
【0095】
まず、切り替え判定時に使用するヒストリバッファ221内のデータのポインタNを、モードレジスタ223内のデータ選択レジスタ2232に設定する。さらに、省電力モードの切り替え閾値(時間)を、モードレジスタ223内の切替閾値レジスタ2233に設定する(ステップS21)。
【0096】
次に、CPU10内の制御対象領域に対する省電力モードの初期値を設定する(ステップS22)。省電力モード切替判定器224は、設定された省電力モードを示す省電力モード信号LMを出力する(ステップS23)。
【0097】
ヒストリバッファ221は、制御対象領域を稼働する要因信号(ウェイクアップ要因信号WU)を受け取った場合(ステップS24)、省電力モードの切り替えの要因となる前記ウェイクアップ要因信号WUとその時のタイムスタンプSTSを、ヒストリバッファ221の最新ライン(ポインタ0)に保存する(ステップS25)。なお、ヒストリバッファ221内の記憶領域nを示すポインタ0〜7は、記憶領域nに保存される度にインクリメントされる。
【0098】
次に、ヒストリバッファ221内の記憶領域0から最新のイベントEV0と、記憶領域nからn番目に新しいイベントEVNが選択され、省電力モード切替判定器224に出力される(ステップS26)。省電力モード切替判定器224内のタイム差計算部2241は、イベントEV0とイベントEVNとからタイムスタンプの時刻差を算出する(ステップS27)。
【0099】
続いて、比較部2242は、モードレジスタ223内の切替閾値レジスタ2233に記憶された切り替え閾値と前記タイムスタンプの時刻差とを比較し、比較結果を出力する。省電力モード出力部2244は、前記比較結果と制限部2243から出力される信号に基づいて省電力モードを設定する(ステップS28)。そして、省電力モード出力部2244は、設定した省電力モード信号LMを出力する(ステップS29)。省電力モード信号LMは、省電力モードの切り替えを指示する信号あるいは、現状の省電力モードの維持を指示する信号である。その後、ステップS24に戻り、制御対象領域を稼働する要因信号(ウェイクアップ要因信号WU)を受け取るまで待機する。
【0100】
3. 効果等
本実施形態では、CPU10を構成するコア、及びコア以外のキャッシュメモリ等を含む共通部を、機能単位毎あるいは機能に関係のない面積や省電力処理時間毎に複数に分割し、分割した各々の領域(制御対象領域)あるいは制御対象領域を組み合わせた領域に対して省電力制御、すなわちクロックゲーティングあるいは電源電圧の供給/遮断を行う。これにより、CPU10内の制御対象領域に対して、省電力を重視した制御から処理性能を重視した制御まで幅広い制御を行うことが可能である。
【0101】
また、本実施形態では、省電力モード切替器22にはカウンタ回路222が配置され、カウンタ回路222から時刻(タイムスタンプSTS)を取得することが可能である。ウェイクアップ要因信号WUが入力された時に、ウェイクアップ要因信号WUと共に、カウンタ回路222から取得したタイムスタンプSTSを、ウェイクアップ要因ヒストリバッファ221に記録する。これによって、どのような頻度でウェイクアップ要因信号WUが入力されるのか、ウェイクアップ要因信号WUのヒストリが記録できる。
【0102】
省電力モードの切り替えは、ウェイクアップ要因信号WUの入力頻度と省電力モードの切り替え閾値SSTとの比較により決定する。切り替え閾値は、どの省電力モードに切り替えるか、すなわちどの省電力モードに設定するかを判断するための判断基準となる。切り替え閾値SSTは、ソフトウエアによってモードレジスタ223内の切替閾値レジスタ2233に設定する。また、ウェイクアップ要因信号が複数ある場合は、判定要因として使用する要因信号を選択するために切替要因設定レジスタ2231を設置している。
【0103】
以下に、省電力モードの切り替え判定について述べる。
【0104】
“ウェイクアップ要因信号の入力頻度>切り替え閾値”の場合は、頻繁にウェイクアップ要因信号が発生している状態である。本実施形態では、ウェイクアップ要因信号の入力頻度を求める手段として、n番目に新しいウェイクアップ要因信号と最新のウェイクアップ要因信号との時刻差を算出し、この時刻差を切り替え閾値と比較することで、ウェイクアップ要因信号の入力頻度が高いか、低いかを判断している。このため、“ウェイクアップ要因信号の入力頻度>切り替え閾値”の場合とは“ウェイクアップ要因信号の時刻差<切り替え閾値”の場合である。この場合、(2)クロックゲーティングのように、稼働状態への復帰に時間が掛からない省電力状態(第1省電力状態)を選択する省電力モードに設定する。これにより、CPU10の処理性能の劣化を回避することができる。
【0105】
一方、“ウェイクアップ要因信号の入力頻度<切り替え閾値”の場合は、頻繁にウェイクアップ要因信号が発生していない状態である。“ウェイクアップ要因信号の入力頻度<切り替え閾値”の場合とは“ウェイクアップ要因信号の時刻差>切り替え閾値”の場合である。この場合は、(3)リテンション状態のように、電源電圧の供給を遮断することで高い消費電力削減効果が得られる省電力状態(第2省電力状態)を選択するような省電力モードに設定する。言い換えると、省電力コントローラ20は、第1省電力状態より消費電力の削減量が大きいが、その省電力状態から稼働状態への遷移時間が長い第2省電力状態に制御対象領域を遷移させる。
【0106】
また、第1省電力状態では、例えば、制御対象領域のうちの第1の割合(例えば、30%)の領域に対してクロックの供給停止を行い、第2省電力状態では、制御対象領域のうちの第2の割合(例えば、70%)の領域に対してクロックの供給停止を行うといった制御方法をとってもよい。また、第1省電力状態では、制御対象領域のうちの第1の割合(例えば、30%)の領域に対して電源電圧の供給遮断を行い、第2省電力状態では、制御対象領域のうちの第2の割合(例えば、70%)の領域に対して電源電圧の供給遮断を行うといった制御方法をとってもよい。さらに、第1省電力状態では、制御対象領域のうちの100%の領域に対して電源電圧の供給遮断を行い、第2省電力状態では、制御対象領域のうちの100%の領域に対して電源電圧の供給を遮断すると共に、データ保持部の電源遮断を行うといった制御方法をとってもよい。
【0107】
ここでは、第1の割合として30%、第2の割合として70%としたが、第2の割合が第1の割合を大きければその他の割合でもよい。また、第1省電力状態及び第2省電力状態では、クロックの供給停止と電源電圧の供給遮断を両方行って、第2省電力状態が第1省電力状態より消費電力の削減量が大きくなるように制御してもよい。
【0108】
また、本実施形態では、複数の省電力モードを定義可能であり、それら省電力モードの切り替えをハードウエアが自動的に行うことにより、低消費電力化の効果と処理性能向上を両立させるとともに、ソフトウエア制御が容易であり、ソフトウエアのメンテナンス性の向上も得ることができる。これにより、低消費電力化のためのソフトウエアの導入コストを低減することができる。
【0109】
以上述べたように実施形態によれば、低消費電力化と処理性能向上を両立することができる半導体集積回路を提供することができる。
【0110】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
前記共通部へ前記クロック信号を供給あるいは停止する第3クロックゲーティング回路と、前記共通部へ前記電源電圧を供給あるいは遮断する第3パワースイッチと、前記第1プロセッサコアへ前記クロック信号を供給あるいは停止する第4クロックゲーティング回路と、前記第1プロセッサコアへ前記電源電圧を供給あるいは遮断する第4パワースイッチとのうち、前記第3クロックゲーティング回路及び第3パワースイッチ、あるいは前記第4クロックゲーティング回路及び第4パワースイッチの少なくともいずれか一方をさらに備え、
前記コントローラは、前記第3クロックゲーティング回路及び第3パワースイッチ、あるいは前記第4クロックゲーティング回路及び第4パワースイッチの前記少なくともいずれか一方を制御する請求項1または2に記載の半導体集積回路。
前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つは、前記電源電圧の供給が遮断されるときに直前の処理データを保持するデータ保持部を有する請求項1乃至3のいずれかに記載の半導体集積回路。
前記第1プロセッサコアが前記第1回路及び第2回路を含む場合、前記第1の機能単位及び第2の機能単位の少なくともいずれか一方は、演算処理部、命令処理部、データ処理部、及びメモリシステムの少なくともいずれか1つを含む請求項5に記載の半導体集積回路。
前記共通部が前記第1回路及び第2回路を含む場合、前記第1の機能単位及び第2の機能単位の少なくともいずれか一方は、キャッシュメモリ及び前記キャッシュメモリを制御するメモリ制御部の少なくともいずれか1つを含む請求項5に記載の半導体集積回路。
前記第1省電力状態は、前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つに前記クロック信号の供給を停止することを含み、
前記第2省電力状態は、前記少なくともいずれか1つに前記電源電圧の供給を遮断することを含む請求項10に記載の半導体集積回路。
前記第1省電力状態は、前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つの領域のうち、第1の割合の領域に対して前記クロック信号の供給を停止し、前記第2省電力状態は、前記少なくともいずれか1つの領域のうち、前記第1の割合より大きな第2の割合の領域に対して前記クロック信号の供給を停止することを含む請求項10に記載の半導体集積回路。
前記第1省電力状態は、前記第1回路、前記第2回路、前記第1プロセッサコア、及び前記共通部の少なくともいずれか1つの領域のうち、第1の割合の領域に対して前記電源電圧の供給を遮断し、前記第2省電力状態は、前記少なくともいずれか1つの領域のうち、前記第1の割合より大きな第2の割合の領域に対して前記電源電圧の供給を遮断することを含む請求項10に記載の半導体集積回路。
前記演算処理回路は、演算処理を行う第2プロセッサコアをさらに備え、前記第2プロセッサコアは第3回路及び第4回路に分割され、前記第1及び第2プロセッサコアは前記共通部が含む前記キャッシュメモリを共有し、
前記第3回路へ前記クロック信号を供給あるいは停止する第5クロックゲーティング回路と、
前記第3回路へ前記電源電圧を供給あるいは遮断する第5パワースイッチと、
前記第4回路へ前記クロック信号を供給あるいは停止する第6クロックゲーティング回路と、
前記第4回路へ前記電源電圧を供給あるいは遮断する第6パワースイッチとをさらに備え、
前記コントローラは、前記第5及び第6クロックゲーティング回路、及び前記第5及び第6パワースイッチを制御する請求項1乃至13のいずれかに記載の半導体集積回路。
一実施態様の半導体集積回路は、演算処理を行う第1プロセッサコアと、データ及びプログラムを記憶するキャッシュメモリを含む共通部とを備え、前記第1プロセッサコア及び前記共通部
ずれか一方が第1回路と第2回路に分割された演算処理回路と、前記第1回路へクロック信号を供給あるいは停止する第1クロックゲーティング回路と、前記第1回路へ電源電圧を供給あるいは遮断する第1パワースイッチと、前記第2回路へ前記クロック信号を供給あるいは停止する第2クロックゲーティング回路と、前記第2回路へ前記電源電圧を供給あるいは遮断する第2パワースイッチと、前記第1及び第2クロックゲーティング回路、及び前記第1及び第2パワースイッチを制御するコントローラとを具備し、