以下、図面を参照して開示する技術の実施の形態の一例を詳細に説明する。
〔第1の実施形態〕
図1には、本実施形態に係る半導体集積回路10の要部を示している。半導体集積回路10は、LSI(Large Scale Integrated circuit)、VLSI(Very Large Scale Integrated circuit)などの集積回路(Integrated Circuit)が適用される。
半導体集積回路10は、CPU(Central Processing Unit)12、RAM(Random Access Memory)14及び複数のIP(Intellectual Property core)16A、16Bが設けられている。CPU12、RAM14及び複数のIP16A、16Bは、バス18に接続されている。半導体集積回路10は、例えば、SoC(System−on−a−Chip)が適用され、ASIC(Application Specific Integrated Circuit)、マイクロコントローラとして用いられる。なお、本実施形態では、一例として2個のIP16A、16Bを示すが、半導体集積回路10に設けられるIPの数はこれに限るものではない。
半導体集積回路10は、電源電圧VDDが、蓄電池などの図示しない外部直流電源から供給される。半導体集積回路10は、電源電圧VDDが、CPU12、RAM14、IP16A、16Bの各々に供給されることにより、CPU12、RAM14、IP16A、16Bの各々が動作する。半導体集積回路10は、外部から入力される直流電圧をCPU12、RAM14、IP16A、16Bの各々に設定された電源電圧VDDに変換する電圧変換回路(DC−DCコンバータ)を含んでも良い。
半導体集積回路10は、電源制御部(PMU:Power Management Unit)20を備えている。電源制御部20は、第1の給電遮断部及び第2の給電遮断部の一例の一部として機能する。半導体集積回路10は、複数のパワードメイン(Power Domain)22が設定されている。なお、本実施形態では、一例として、CPU12を含むパワードメイン22A、RAM14を含むパワードメイン22B、IP16Aを含むパワードメイン22C、及びIP16Bを含むパワードメイン22Dが設定されている。
半導体集積回路10は、パワードメイン22(22A〜22D)の各々に電源遮断スイッチ(PSW:power switch)部24が設けられている。なお、本実施形態においては、一例として、パワードメイン22Aに電源遮断スイッチ部24Aが設けられ、パワードメイン22Bに電源遮断スイッチ部24Bが設けられている。また、本実施形態においては、パワードメイン22Cに電源遮断スイッチ部24Cが設けられ、パワードメイン22Dに電源遮断スイッチ部24Dが設けられている。
半導体集積回路10は、CPU12が動作モードとして通常モード及びスリープモードを含む。電源制御部20は、CPU12がスリープモードへ移行することにより、パワードメイン22の電源遮断スイッチ部24(24A〜24D)に電源遮断信号PSを出力する。電源制御部20は、電力消費を抑制するために、電源遮断スイッチ部24により各パワードメイン22への電源電圧VDDの供給(電力の供給)を遮断するパワーゲーティングを行なう。これにより、半導体集積回路10は、CPU12が動作停止状態となりスリープモードへ移行し、パワーゲーティングによる電力消費の削減が図られる。
また、電源制御部20は、CPU12の起動要求が入力されると、電源遮断スイッチ部24(24A〜24D)の各々を操作し、各パワードメイン22へ電力を供給する。これにより、半導体集集積回路10は、CPU12がスリープモードから通常モードへ移行し、通常モードにおける動作を開始する。なお、半導体集積回路10には、アイソレーションセルが設けられており、電源制御部20は、パワーゲーティングを行なうときにアイソレーション制御信号を出力する。これにより、半導体集積回路10は、電力供給が停止した回路と電力が供給されてアクティブとなっている回路との間等におけるデータ等の信号の伝播が防止される。
ところで、CPU12は、アキュムレータ、アドレスレジスタ、インデックスレジスタ、ステータスレジスタ等のレジスタ(register)26を備える。なお、以下では、パワードメイン22AのCPU12に設けられるレジスタ26を例に説明するが、CPU12(パワードメイン22A)に限らず、他のパワードメイン22B〜22Dに設けられるレジスタに適用することができる。
図2には、レジスタ26の一例を示す。レジスタ26は、1ビット(bit)分のデータを格納して保持するフリップフロップ(flip−flop)回路28を備える。レジスタ26は、記憶するデータのビット数nに応じた数のフリップフロップ回路28を備える。32ビット(n=32)のデータを記憶するレジスタ26は、32個のフリップフロップ回路28を備える。なお、レジスタ26は、例えば、論理回路により形成される複数の組合せ回路30を含んでも良い。組合せ回路30は、レジスタ26の機能に応じて設定される論理回路が適用され、ここでは詳細な説明を省略する。
一方、半導体集積回路10に設けるレジスタ26は、フリップフロップ回路28として、データ保持部32及びリテンション部34を含む所謂リテンションフリップフロップ回路が用いられている。データ保持部32は、保持部の一例として機能し、リテンション部34は、リテンション部の一例として機能する。以下の説明では、フリップフロップ回路28をリテンションFF回路28として説明する。レジスタ26、リテンションFF回路28は、記憶回路の一例として機能する。
図3には、リテンションFF回路28の一例を示す。リテンションFF回路28は、データ保持部32がFF回路36を含む。また、リテンションFF回路28は、リテンション部34がラッチ回路38を含む。リテンションFF回路28は、リセット信号RSTが入力される入力端子R、データDaが入力される入力端子D、クロック信号CLKが入力される入力端子C、及びデータDaを出力する出力端子Qを備える。
リテンションFF回路28は、通常、FF回路36が動作し、リセット信号RSTがアサート(assert)することにより、FF回路36がリセット(初期化)される。また、リテンションFF回路28は、クロック信号CLKが入力されることにより、クロック信号CLKに同期し、入力端子Dに入力されるデータDaを読み込んでFF回路36に保持する。さらに、リテンションFF回路28は、クロック信号CLKに同期し、FF回路36に保持しているデータDaを出力端子Qから出力する。
図2及び図3に示すように、半導体集積回路10は、電源遮断スイッチ部24Aが、電源遮断スイッチ(PSW)40を備える。レジスタ26は、電源遮断スイッチ40を介し、電源電圧VDDの電力が各リテンションFF回路28のFF回路36に供給される。また、図2に示すように、レジスタ26は、電源遮断スイッチ40を介して電源電圧VDDの電力が各組合せ回路30へ供給される。電源遮断スイッチ部24Aは、第1の給電遮断部及び第2の給電遮断部の一例の一部として機能し、電源遮断スイッチ40は、第1の給電遮断部の一例の一部として機能する。
電源遮断スイッチ40は、電源制御部20から出力される電源遮断信号PSに基づいて動作し、電源遮断信号PSが有効(イネーブル:enable、例えば、Lレベル)となることで電源電圧VDDを遮断する。半導体集積回路10は、電源電圧VDDが遮断されることで、レジスタ26に設けられているリテンションFF回路28のFF回路36、及び組合せ回路30への電力の供給が停止される(パワーゲーティング)。
図3に示すように、リテンションFF回路28は、入力端子S及び入力端子RSを備える。リテンションFF回路28は、入力端子Sに保存信号Svが入力され、入力端子RSに復帰信号Rtoが入力される。電源制御部20は、保存信号Sv及び復帰信号Rtoを、レジスタ26のリテンションFF回路28の各々に出力する。電源制御部20は、電源遮断信号PSの出力に先立って保存信号Svを有効とし、電源遮断信号PSの出力を停止した後、復帰信号Rtoを出力する。
リテンションFF回路28は、保存信号Svが入力端子Sに入力され、復帰信号Rtoが、AND回路20Aを介して入力端子RSに入力される。リテンションFF回路28は、保存信号Svが出力(有効)されることにより、FF回路36に保持されているデータDaがラッチ回路38へ出力される。また、リテンションFF回路28は、復帰信号Rtoが出力されることにより、ラッチ回路38のデータDaがFF回路36へ出力される。これにより、リテンションFF回路28は、FF回路36に保持されているデータDaがラッチ回路38に退避され、また、ラッチ回路38に退避させていたデータDaがFF回路36に復元される。
一方、図2及び図3に示すように、半導体集積回路10は、電源遮断スイッチ部24Aが、電源遮断スイッチ(PSW)42を備える。電源遮断スイッチ42は、リテンションFF回路28の各々に設けられる。各リテンションFF回路28は、電源遮断スイッチ42を介して、ラッチ回路38に電源電圧VDDの電力が供給される。
電源遮断スイッチ42は、第2の給電遮断部の一例の一部として機能する。電源遮断スイッチ42は、電源制御部20から出力される電源遮断信号PSに応じて動作する。リテンションFF回路28は、電源遮断スイッチ42が電源電圧VDDを遮断することにより、ラッチ回路38への電力の供給が停止される。
半導体集積回路10は、電源遮断スイッチ42が設けられていることにより、レジスタ26のリテンションFF回路28に設けられているリテンション部34のラッチ回路38への電力の供給を停止するパワーゲーティングを行なうことができる。また、半導体集積回路10は、レジスタ26のリテンションFF回路28の各々に電源遮断スイッチ42が設けられることにより、リテンションFF回路28の各ラッチ回路38への電力の供給を個別に停止可能としている。
図2に示すように、電源遮断スイッチ部24Aは、リテンション制御部44を備える。リテンション制御部44は、リテンションFF回路28の各々に対して設けられている。リテンション制御部44は、スイッチ制御部の一例として機能する。リテンション制御部44には、電源制御部20から出力される電源遮断信号PSが入力される。また、リテンション制御部44は、電源遮断信号PSに応じて電源遮断スイッチ42を制御する電源遮断信号PSENを出力する。電源遮断スイッチ42は、電源遮断信号PSENがイネーブル(有効、例えば、Lレベル)となることで電源電圧VDDを遮断する。
図3に示すように、リテンション制御部44は、イネーブル制御部46及びデータ比較部48を備える。データ比較部48は、初期値記憶部50、比較回路52及び信号保持部54を含む。初期値記憶部50は初期値記憶部の一例として機能し、比較回路52は比較部の一例として機能する。
初期値記憶部50は、レジスタ26のリテンションFF回路28(FF回路36)の各々に設定されているデータの初期値Diが記憶される。初期値Diは、例えば、半導体集積回路10の電源がオンされたときに、レジスタ26の各リテンションFF回路28がリセットされる場合、リセットされたときの値(データ)としている。
比較回路52には、リテンションFF回路28のFF回路36に保持されているデータDa、及び初期値記憶部50に保持されている初期値Diが入力される。比較回路52は、例えば、エクスクルーシブオア(Exclusive−OR、以下、EX−ORとする)回路56を備える。比較回路52は、データDaが初期値Diと一致することで有効(例えば、Lレベル)となる出力信号EQを出力する。信号保持部54は、比較回路52の出力信号EQ、及び電源制御部20から出力される保存信号Svが入力される。信号保持部54は、例えば、ラッチ回路58を備える。信号保持部54は、入力端子ENに保存信号Svが入力されることにより、比較回路52の出力信号EQを読み込んで保持する。また、信号保持部54は、読み込んだ比較回路52の出力信号EQを、出力信号SEQとしてイネーブル制御部46へ出力する。
イネーブル制御部46は、信号保持部54から出力される出力信号SEQ、及び電源制御部20(図1参照)が出力する電源遮断信号PSが入力される。イネーブル制御部46は、例えば、OR回路60を含み、出力信号SEQ及び電源遮断信号PSに基づき、電源遮断スイッチ42へ電源遮断信号PSENを出力する。イネーブル制御部46が出力する電源遮断信号PSENは、出力信号SEQ(出力信号EQ)が有効となり、かつ電源遮断信号PSが有効となることにより、有効(例えば、Lレベル)となる。
電源遮断スイッチ42は、リテンション制御部44のイネーブル制御部46が出力する電源遮断信号PSENに基づき、リテンションFF回路28のラッチ回路38への電源電圧VDDの供給を停止する。すなわち、イネーブル制御部46は、電源遮断信号PSが入力されたときに、データDaと初期値Diとが一致していることで,電源遮断スイッチ42の動作を有効とする電源遮断信号PSENを出力する。また、ラッチ回路58が出力する出力信号SEQは、AND回路20Aに入力される。これにより、リテンションFF回路28には、出力信号SEQが有効となっているときに、電源制御部20から出力される復帰信号RtoがAND回路20Aを介して入力される。
以下に、第1の実施形態の作用を説明する。
半導体集積回路10は、電源電圧VDDが供給されることにより、電源電圧VDDが各パワードメイン22に供給される。これにより、半導体集積回路10は、CPU12がブート処理を開始し、ブート処理が終了することで通常モードで動作する。また、半導体集積回路10は、例えば非動作状態が継続するとCPU12がスリープモードへ移行する。
半導体集積回路10に設けられた電源制御部20は、例えば、CPU12がスリープモードへ移行することによりパワーゲーティングを行なう。電源制御部20は、パワードメイン22の各々に設けている電源遮断スイッチ部24に電源遮断信号PSを出力する。これにより、半導体集積回路10は、電源遮断スイッチ部24の各々がパワードメイン22内への電源電圧VDDの供給を停止する。
ところで、半導体集積回路10は、電源遮断スイッチ部24Aに設けられている電源遮断スイッチ40及び電源遮断スイッチ42を介して、レジスタ26に設けているリテンションFF回路28に電源電圧VDDを供給している。電源制御部20は、パワーゲーティングを行なうときに、電源遮断スイッチ40、42の各々に電源遮断信号PSを出力する。なお、以下では、各信号について出力とは、当該信号を有効(アサート、イネーブル)とすることを含み、停止とは、当該信号を無効(ディアサート、ディスエーブル)とすることを含む。
ここで、図4及び図5を参照しながら、レジスタ26に対するパワーゲーティングを説明する。なお、図4及び図5は、パワーゲーティングを行なうときの、クロック信号CLK、保存信号Sv、復帰信号Rto、リセット信号RST、電源遮断信号PS、及びFF回路36の電源電圧の変化を示す。また、図4及び図5は、比較回路52の出力信号EQ、信号保持部54の出力信号SEQ、イネーブル制御部46の電源遮断信号PSEN、及びラッチ回路38の電源電圧の変化を示す。
電源制御部20は、パワーゲーティングを行なうときに、電源遮断信号PSの出力に先立って、保存信号Svを出力する。また、電源制御部20は、電源遮断信号PSの出力を停止すると、復帰信号Rtoを出力する。半導体集積回路10は、CPU12がスリープモードへ移行することによりクロック信号CLKが停止され、リセット信号RSTがアサート(assert)される。また、半導体集積回路10は、CPU12に電源電圧VDDの供給が開始されると、リセット信号RSTがディアサート(de-assert)され、この後、クロック信号CLKの出力が開始される。
したがって、図4及び図5に示すように、リテンションFF回路28には、クロック信号CLKの入力が停止した後、保存信号Svが入力される。リテンションFF回路28は、保存信号Svが入力されることにより、FF回路36に保持されているデータDaがラッチ回路38に出力され、ラッチ回路38に保持される。
この後、半導体集積回路10は、電源制御部20が出力する電源遮断信号PSがイネーブルとなることにより電源遮断スイッチ40が動作し、FF回路36への電力供給が停止される。これにより、半導体集積回路10のレジスタ26は、リテンションFF回路28の各々のFF回路36におけるダイナミック電力及びリーク電力の消費が抑制される。
一方、データ比較部48は、リテンションFF回路28のFF回路36に保持されているデータDaと初期値記憶部50に保持されている初期値Diとを比較回路52により比較する。比較回路52は、クロック信号CLKが停止される場合、停止される直前のクロック信号CLKに応じてFF回路36から出力されたデータDa及び初期値Diに基づいた比較結果を、出力信号EQとして出力する。また、データ比較部48は、信号保持部54に保存信号Svが入力されることにより、信号保持部54が、比較回路52の出力信号EQを保持し、出力信号SEQとして出力する。
ここで、図4に示すように、データDaと初期値Diとが一致していない場合、比較回路52の出力信号EQは、Hレベルとなる。これにより、信号保持部54は、保存信号Svに基づき、Hレベルの出力信号SEQを出力する。
イネーブル制御部46は、電源遮断信号PSが入力されたときに、出力信号SEQがHレベルとなっていると、電源遮断スイッチ42に対する電源遮断信号PSENとしてHレベルのディスエーブル信号(disable:無効信号)を出力する。これにより、電源遮断スイッチ42は、ラッチ回路38への電源電圧VDDの供給を停止せず、ラッチ回路38は、データDaの保持を継続する。
電源制御部20は、パワーゲーティングを終了するときに、電源遮断信号PSの出力を停止する。これにより、電源遮断スイッチ40は、電源電圧VDDの停止を解除し、リテンションFF回路28のFF回路36には、電源電圧VDDが供給される。この後、リテンションFF回路28は、リセット信号RSTがアサートされることによりFF回路36が初期化され、復帰信号Rtoが入力されることにより、ラッチ回路38に保持されているデータDaがFF回路36に入力される。これにより、リテンションFF回路28は、パワーゲーティングの直前のデータDaがFF回路36に復元される。
これに対して、図5に示すように、FF回路36に保持しているデータDaと初期値Diとが一致していると、比較回路52の出力信号EQがLレベル(有効)となる。これにより、信号保持部54は、Lレベルの出力信号SEQを出力する。
イネーブル制御部46は、電源遮断信号PSが入力されたときに、出力信号SEQがLレベルとなっていると、電源遮断スイッチ42に対し、電源遮断信号PSENとしてイネーブル信号(EN)を出力する。
これにより、電源遮断スイッチ42は、電源電圧VDDを遮断し、ラッチ回路38への電力供給を停止する。したがって、リテンションFF回路28は、FF回路36のデータDaが消去される。また、リテンションFF回路28は、ラッチ回路38が設けられたリテンション部34に対してもパワーゲーティングが行なわれ、リテンション部34における電力消費が停止される。
イネーブル制御部46は、電源遮断信号PSが停止すると、出力信号PSENとしてディスエーブル信号を出力する。これにより、ラッチ回路38には、電源電圧VDDの供給が開始される。
また、リセット信号RSTは、レジスタ26の各リテンションFF回路28にも入力される。レジスタ26のリテンションFF回路28は、リセット信号RSTがアサートされることによりFF回路36がリセットされ、初期値Diにセットされる。ここで、比較回路52が出力する出力信号SEQがリセットされずにLレベルのままであると、AND回路20Aが復帰信号Rtoをマスクする。これにより、リテンションFF回路28には、復帰信号Rtoが入力されず、リセット直後で不安定となっているラッチ回路38のデータがFF回路36に書き戻されてしまうのを防止している。
したがって、電源遮断スイッチ部24Aは、データDaと初期値Diとが一致していない場合、パワーゲーティング前とパワーゲーティング後とで、同じデータDaをリテンションFF回路28のFF回路36に保持させる。
また、半導体集積回路10は、リテンションFF回路28のFF回路36に保持されているデータDaが、初期値Diである場合、FF回路36のデータDaを保持せずに、ラッチ回路38の電力供給を停止する。したがって、CPU12が再起動したときに、不要となるデータを保持するために電力を消費してしまうことがない。
〔第2の実施形態〕
次に、第2の実施形態を説明する。なお、第2の実施形態の基本的構成は、前記した第1の実施形態と同じであり、第2の実施形態において第1の実施形態と同じ機能部品については、同一の符号を付与して詳細な説明を省略する。
図6には、第2の実施形態に係るレジスタ26に対する電源電圧VDDの供給系統を示す。第2の実施形態は、電源遮断スイッチ部24Aに替えて電源遮断スイッチ部62を用いている。電源遮断スイッチ部62は、電源遮断スイッチ42に替えて電源遮断スイッチ64を含む。電源遮断スイッチ部62は、第2の給電遮断部の一例として機能し、電源遮断スイッチ64は、スイッチの一例として機能する。
電源遮断スイッチ64は、電源電圧VDDを、レジスタ26に設けられているリテンションFF回路28の各々のリテンション部34(ラッチ回路38)に供給する。レジスタ26は、電源遮断スイッチ64を介して、複数のリテンションFF回路28の各々に電源電圧VDDが供給される。
また、電源遮断スイッチ部62は、リテンション制御部66を備える。リテンション制御部66は、第1の実施形態に係る複数のリテンション制御部44に替えて設けられている。リテンション制御部66は、スイッチ制御部の一例として機能する。リテンション制御部66は、電源遮断信号PSに応じて、電源遮断スイッチ64に電源遮断信号PSENを出力する。
図7には、第2の実施形態に係るリテンション制御部66の一例を示す。リテンション制御部66は、イネーブル制御部46及びデータ比較部68を含む。データ比較部68は、初期値記憶部50A、比較回路52A、信号保持部54を含む。
初期値記憶部50Aには、レジスタ26の各リテンションFF回路28における初期値Diの各々が保持されている。すなわち、レジスタ26が、nビット(例えば32ビット)であれば、nビット分のリテンションFF回路28の初期値Di0、Di1、Di2、・・・、Dinが保持されている。
また、データ比較部68には、nビット分の各リテンションFF回路28のFF回路36に保持されているデータDa0、Da1、Da2、・・・、Danが入力される。
比較回路52Aは、例えば、nビット分のリテンションFF回路28の各々に対応するEX−OR回路56、及びOR回路70を含む。EX−OR回路56には、対応するリテンションFF回路28のデータDa及び初期値Diが入力される。これにより、EX−OR回路56は、リテンションFF回路28毎の出力信号EQ0、EQ1、EQ2、・・・、EQnを出力する。
各EX−OR回路56の各々が出力する出力信号EQ0、EQ1、EQ2、・・・、EQnは、OR回路70に入力される。OR回路70は、出力信号EQ0、EQ1、EQ2、・・・、EQnに基づいて出力信号EQを出力する。OR回路70の出力信号EQは、データDa0と初期値Di0、データDa1と初期値Di1、データDa2と初期値Di2、・・・、データDanと初期値Dinの全てが一致することで有効(Lレベル)となる。また、OR回路70の出力信号EQは、データDa0と初期値Di0、データDa1と初期値Di1、データDa2と初期値Di2、・・・、及びデータDanと初期値Dinの少なくとも1組が不一致となることにより無効(Hレベル)となる。
第2の実施形態においては、電源遮断スイッチ40及び電源遮断スイッチ64が、前記した図4及び図5に示す電源遮断スイッチ40及び電源遮断スイッチ42と同等に動作する。このとき、第2の実施形態においては、レジスタ26の少なくとも一つのリテンションFF回路28において、データDaが初期値Diと一致しない場合、電源遮断信号PSが入力されても、電源遮断スイッチ64が電源電圧VDDを遮断しない。また、第2の実施形態においては、レジスタ26の各リテンションFF回路28のデータDaが初期値Diとなっている場合、電源遮断信号PSに応じて、リテンションFF回路28のパワーゲーティングが行なわれる。
したがって、電源遮断スイッチ部62は、不必要にリテンションFF回路28のリテンション部34(ラッチ回路38)に電源電圧VDDを供給することがないので、パワーゲーティングを行なうときの、電力消費の抑制が図られる。
なお、第1の実施形態は、リテンションFF回路28毎に電源遮断スイッチ42を設け、第2の実施形態は、レジスタ26毎に電源遮断スイッチ64を設けたが、開示の技術は、これに限るものではない。開示の技術においては、レジスタ26に含まれる複数のリテンションFF回路28に対して一つの電源遮断スイッチを設けることを含む。また、開示の技術は、複数のレジスタ26に対して一つの電源遮断スイッチを設けることを含む。
〔第3の実施形態〕
次に、第3の実施形態を説明する。なお、第3の実施形態において、第1又は第2の実施形態と同一の機能部品については、同一の符号を付与してその説明を省略する。
第3の実施形態は、CPU12(図1参照)としてパイプラインプロセッサ(以下、CPU12Aとする)を用いている。図8には、パイプラインプロセッサとして用いるCPU12Aの要部の機能ブロック図の一例を示す。なお、第3の実施形態では、5段のパイプラインを例示するが、パイプラインの段数はこれに限るものではない。
CPU12Aのパイプラインは、命令フェッチステージ72、命令デコードステージ74、演算命令実行ステージ76、メモリアクセスステージ78、及びライトバック(結果ライト)ステージ80を含む。命令フェッチステージ72は、命令メモリ72Aから命令をフェッチする。また、命令デコードステージ74は、命令デコード制御部74A及びレジスタ74Bを含む。演算命令実行ステージ76は、ALU(Arithmetic Logic Unit:演算装置)76Aを含み、メモリアクセスステージ78は、データメモリ78Aを含む。
CPU12Aは、命令フェッチステージ72と命令デコードステージ74との間に用いるパイプラインレジスタ82、及び命令デコードステージ74と演算命令実行ステージ76との間に用いるパイプラインレジスタ84を含む。また、CPU12Aは、演算命令実行ステージ76とメモリアクセスステージ78との間に用いるパイプラインレジスタ86、及びメモリアクセスステージ78とライトバックステージ80との間に用いるパイプラインレジスタ88を含む。パイプラインレジスタ82〜88は、記憶回路の一例として機能する。
CPU12Aは、パイプラインを形成する各ステージにおける処理が、所定のクロックサイクルで並行して実行される。このとき、パイプラインレジスタ82〜88には、各ステージの情報が記録される。また、パイプラインレジスタ82〜88には、フラグ領域90が設けられている。
命令デコード制御部74Aは、データ依存関係に起因するハザード(data dependent hazard)等のパイプラインハザードが発生した場合に、対応するパイプラインレジスタ82〜88のフラグ領域90の情報(フラグF)を書き換える。第3の実施形態では、パイプラインレジスタ82〜88に対してパワーゲーティングを含む。
図9には、第3の実施形態に係る電源遮断スイッチ部92の要部を示す。電源遮断スイッチ部92は、第2の給電遮断部の一例として機能する。パイプラインレジスタ82〜88には、電源遮断スイッチ部92を介して電源電圧VDDが供給される。なお、パイプラインレジスタ82〜88に対する基本的構成は同じであり、以下の説明で、特に区別しない場合、パイプレインレジスタ82を例に説明する。
電源遮断スイッチ部92は、電源遮断スイッチ40及び電源遮断スイッチ64を含む。パイプラインレジスタ82〜88の各々は、ビット数nに応じた数のリテンションFF回路28を含む。電源遮断スイッチ40は、パイプラインレジスタ82〜88の各々のリテンションFF回路28に設けられるデータ保持部32(FF回路36)に接続される。パイプラインレジスタ82〜88は、電源遮断スイッチ40を介して、リテンションFF回路28のデータ保持部32に電源電圧VDDが供給される。また、パイプラインレジスタ82〜88は、パワーゲーティング時に、電源遮断スイッチ40により電源電圧VDDが遮断される。
電源遮断スイッチ64は、パイプラインレジスタ82〜88の各々に対して設けられ、各リテンションFF回路28のリテンション部34(ラッチ回路38)は、電源遮断スイッチ64を介して電源電圧VDDが供給される。また、パイプラインレジスタ82〜88は、電源遮断スイッチ64が動作することにより、リテンションFF回路28のリテンション部34への電源電圧VDDの供給が停止される。また、電源遮断スイッチ部92には、パイプラインレジスタ82〜88に対して、個別に、リテンションFF回路28のリテンション部34への電力供給の停止が可能となっている。
電源遮断スイッチ部92は、リテンションFF回路28のリテンション部34に対する電源遮断を制御するリテンション制御部94を備える。リテンション制御部94は、第2の実施形態に係るリテンション制御部66に替えて設けられている。リテンション制御部94は、スイッチ制御部の一例として機能する。
図10には、第3の実施形態に係るリテンション制御部94の一例を示す。リテンション制御部94は、イネーブル制御部46を含む。イネーブル制御部46は、例えば、OR回路60を備える。OR回路60には、電源遮断信号PSが入力される。また、OR回路60には、リテンション制御部94が対応するパイプラインレジスタ82のフラグ領域90に保持されているフラグFの情報(以下、フラグデータFDとする)が入力される。
命令デコード制御部74Aは、パイプラインレジスタ82に対して、保持しているデータが有効であるか否かを判定する。パイプラインレジスタ82に保持しているデータが有効であれば、命令デコード制御部74Aは、フラグFを有効(例えば、フラグデータFDをHレベル)にセットする。また、命令デコード制御部74Aは、パイプラインハザード等が生じ、パイプラインレジスタ82に保持しているデータが無効となることで、フラグFを無効(例えば、フラグデータFDをLレベル)にセットする。
イネーブル制御部46は、電源遮断信号PSが入力されているときに、フラグFが有効であれば、電源遮断スイッチ64の動作を無効(disable、例えばHレベル)とする電源遮断信号PSENを出力する。また、イネーブル制御部46は、電源遮断信号PSが入力されているときに、フラグFが無効であれば、電源遮断スイッチ64の動作を有効(Enable、例えばLレベル)とする電源遮断信号PSENを出力する。
ここで、CPU12AにおけるフラグFの設定の一例を、図11を参照しながら説明する。なお、図11には、命令の実行順序を、命令W、命令X、命令Y、命令Z、命令1、命令2、命令3、命令4、命令5・・・としている。また、各ステージでは、1サイクル(1クロックサイクル)ごとに対応する命令が順に実行される。
図11に示すように、CPU12Aは、サイクル1で命令フェッチステージ72において命令1のフェッチを実行しているときに、命令デコードステージ74においては、一つ前の命令Zのデコードを実行する。また、CPU12Aは、サイクル1で、演算命令実行ステージ76において命令Yの演算命令を実行し、メモリアクセスステージ78において命令Xのメモリアクセスを実行し、ライトバックステージ80において命令Wの結果の書き込みを行なう。
また、CPU12Aは、クロックサイクルの経過に応じて、命令フェッチステージ72において、命令1、命令2、命令3、命令4を順に実行し、命令デコードステージ74において、命令Z、命令1、命令2、命令3を順に実行する。さらに、CPU12Aは、演算命令実行ステージ76において、命令Y、命令Z、命令1、命令2を順に実行し、メモリアクセスステージ78において、命令X、命令Y、命令Z、命令1を順に実行する。このとき、パイプラインレジスタ82〜88は、保持しているデータが下流側のステージから読み出され、上流側のステージの実行結果が書き込まれる。
ここで、命令1が分岐命令であり、命令2〜命令5が演算命令であるとする。この場合、CPU12Aは、分岐予測にしたがって、命令フェッチステージ72において、命令2、命令3、命令4のフェッチ(読み出し)を順に実行する。命令5が命令1の分岐先である場合、CPU12Aは、命令5のフェッチを行なうことにより命令1の分岐先を確定する。このとき、命令2から命令4が既に実行されていることで、分岐ハザードが発生する。
この分岐ハザードにより、既にフェッチされて実行された命令2、3、4が無効となる。すなわち、命令デコードステージ74における命令4のデコード、演算命令実行ステージ76における命令3の実行、及びメモリアクセスステージ78における命令2のメモリアクセスが無効となる。また、ライトバックステージ80における命令1の結果の書き込みが無効となる(図11において斜線で示す)。
パイプラインレジスタ84〜88には、無効となった命令2〜4に対応する中間データが格納されており、分岐ハザードが発生することでパイプラインレジスタ84〜88に格納されている中間データが無効となる。このとき、命令デコード制御部74Aは、パイプラインレジスタ84〜88の各々に格納されているデータを無効とするように、フラグ領域90のフラグF(フラグデータFD)の書換えを行なう。
CPU12Aは、フラグFを確認しながら、無効となった命令2からの処理を実行する。なお、パイプライン処理及びパイプライン処理におけるハザードの検出、検出したハザードを解消するための処理は、公知の一般的構成を適用することができる。
電源遮断スイッチ部94は、パイプラインレジスタ82(82〜88)が保持しているデータに対するフラグFを用い、CPU12Aのパイプラインレジスタ82(82〜88)に対するパワーゲーティングを行なう。以下では、パイプラインレジスタ82に対するパワーゲーティングを例に説明する。
図12には、パワーゲーティングを行なうときの、クロック信号CLK、保存信号Sv、復帰信号Rto、リセット信号RST、電源遮断信号PS、及びFF回路36の電源電圧の変化を示す。また、図12には、フラグF、イネーブル制御部46の電源遮断信号PSEN、及びラッチ回路38の電源電圧の変化を、フラグFが有効な場合を実線とし、無効な場合を二点鎖線として示している。
パイプラインレジスタ82は、保存信号Svが入力されることにより、各リテンションFF回路28において、FF回路36のデータDaが、ラッチ回路38に保持される。
電源遮断スイッチ部92の電源遮断スイッチ40は、電源遮断信号PSが入力されることにより、各リテンションFF回路28のFF回路36(データ保持部32)への電源電圧VDDの供給を停止する。また、電源遮断スイッチ40は、電源遮断信号PSが停止することにより、各リテンションFF回路28のFF回路36へ電源電圧VDDを供給する。リテンションFF回路28の各々は、電源電圧VDDが供給されている状態で、リセット信号RSTがアサートされると、FF回路36が初期化される。また、リテンションFF回路28の各々は、ラッチ回路38にデータDaが保持されている状態で復帰信号Rtoが入力されることにより、ラッチ回路38のデータDaがFF回路36に格納される。
一方、リテンション制御部94は、パイプラインレジスタ82のデータに対するフラグFが有効である場合、電源遮断信号PSが入力されたときに、電源遮断スイッチ64の動作を無効(Hレベル)とする電源遮断信号PSENを出力する。
これにより、リテンションFF回路28は、ラッチ回路38に電源電圧VDDが供給され、FF回路36のデータDaを保持する。したがって、パイプラインレジスタ82は、パワーゲーティングが行なわれたときにデータが消滅してしまうことがない。
これに対して、図12に二点鎖線で示すように、フラグFが無効となっている場合、リテンション制御部94は、電源遮断信号PSが入力されたときに、電源遮断スイッチ64の動作を有効(Lレベル)とする電源遮断信号PSENを出力する。電源遮断スイッチ部92の電源遮断スイッチ64は、動作を有効とする電源遮断信号PSENが入力されることにより、電源電圧VDDを遮断する。
これにより、各リテンションFF回路28は、ラッチ回路38への電力供給が停止され、ラッチ回路38におけるダイナミック電力及びリーク電力の消費が抑制される。
パイプラインレジスタ82は、FF回路36への電力供給が停止され、ラッチ回路38への電力供給が停止されることで、保持しているデータが消滅する。しかし、パイプラインレジスタ82に格納されているデータが無効であることにより、CPU12Aの処理動作に影響が生じることはない。
〔第4の実施形態〕
次に、開示の技術における第4の実施形態を説明する。なお、第4の実施形態において、前記した第1から第3の実施形態の何れかと同一の機能部品については、同一の符号を付与してその説明を省略する。
図13には、第4の実施形態に係る電源遮断スイッチ部92Aに設けたリテンション制御部96の一例を示している。第4の実施形態の基本的構成は、前述の第3の実施形態と同じである。電源遮断スイッチ部92Aは、第3の実施形態の電源遮断スイッチ部92に対し、リテンション制御部94に替えてリテンション制御部96を設けている点で相違する。電源遮断スイッチ部92Aは、第2の給電遮断部の一例として機能し、リテンション制御部96は、スイッチ制御部の一例として機能する。
リテンション制御部96は、イネーブル制御部46、及びデータ比較部98を含む。データ比較部98は、初期値記憶部50A、比較回路52A、及び信号保持部54Aを含む。信号保持部54Aは、データ比較部68の信号保持部54に替えて設けられ、ラッチ回路58及びAND回路100を含む。
初期値記憶部50Aには、パイプラインレジスタ82の各リテンションFF回路28における初期値Diが保持される。この初期値Diは、例えば、パイプラインレジスタ82がリセットされたときのリテンションFF回路28のFF回路36のデータが用いられる。
比較回路52Aは、パイプラインレジスタ82のビット数nに応じた数のEX−OR回路56を備える。EX−OR回路56は、各FF回路36に保持されているデータDa(Da0、Da1、Da2、・・・、Dan)、と初期値Di(Di0、Di1、Di2、・・・、Din)とを比較する。EX−OR回路56は、データDaと初期値Diとが一致することで有効(Lレベル)となる信号(出力信号EQ0、EQ1、EQ2、・・・、EQn)を出力する。OR回路70は、各々のEX−OR回路56の出力する信号が有効となることで有効(Lレベル)となる出力信号EQを出力する。
信号保持部54Aは、AND回路100に、出力信号EQ及びパイプラインレジスタ82のデータに対して設定されたフラグFに応じたフラグデータFDが入力される。AND回路100は、無効(データDaと初期値Diとが不一致、Hレベル)の出力信号EQ、及びフラグFが有効(Hレベル)に対応するフラグデータFDが入力されることにより、無効となる出力信号FEQを出力する。
ラッチ回路58は、パイプラインレジスタ82の各リテンションFF回路28に保存信号Svが入力されることにより、出力信号FEQを保持し、出力信号FEQを出力信号SEQとしてイネーブル制御部46へ出力する。なお、出力信号SEQは、復帰信号Rtoのマスク用としても用いられる。
これにより、リテンション制御部96は、電源遮断信号PSが入力されたときに、出力信号SEQに応じた電源遮断信号PSENを出力する。リテンション制御部96が出力する電源遮断信号PSENは、出力信号SEQが有効(Lレベル)となるか、フラグFが無効(フラグデータFDがLレベル)となっているときに、電源遮断スイッチ64の動作を有効とする。
図14及び図15には、第4の実施形態において、パワーゲーティングを行なうときの、クロック信号CLK、保存信号Sv、復帰信号Rto、リセット信号RST、電源遮断信号PS、及びFF回路36の電源電圧の変化を示す。また、図14及び図15には、比較回路52Aの出力信号EQ、フラグF、信号保持部54Aの出力信号SEQ、イネーブル制御部46の電源遮断信号PSEN、及びラッチ回路38の電源電圧の変化を示す。なお、図14は、FF回路36に保持されているデータDaと初期値Diとが一致していない場合を示し、図15は、FF回路36に保持されているデータDaと初期値Diとが一致している場合を示している。また、図14及び図15においては、フラグFが有効な場合を実線とし、無効な場合を二点鎖線として示している。
リテンション制御部96は、リテンションFF回路28の各々のFF回路36のデータDaが、初期値Diであることにより比較回路52Aの出力信号EQが有効(Lレベル)となる。また、リテンション制御部96は、出力信号EQが有効であることにより、パイプラインレジスタ82のフラグFに関わらず、AND回路100の出力信号FEQがLレベルとなる。
これにより、図15に示すように、イネーブル制御部46は、電源遮断スイッチ64の動作を有効とする電源遮断信号PSENを出力する。したがって、パイプラインレジスタ82は、各リテンションFF回路28のラッチ回路38の電源電圧VDDが遮断される。
また、リテンション制御部96は、リテンションFF回路28の何れかのFF回路36のデータDaが、初期値Diと異なることにより比較回路52Aの出力信号EQが無効(Hレベル)となる。
しかし、図14に二点鎖線で示すように、リテンション制御部96は、フラグFが無効(Lレベル)である場合、AND回路100の出力信号FEQが、Lレベルとなる。これにより、イネーブル制御部46は、電源遮断スイッチ64の動作を有効とする電源遮断信号PSENを出力する。したがって、各FF回路36のデータDaが初期値Diと異なっても、フラグFが無効である場合、パイプラインレジスタ82は、各リテンションFF回路28のラッチ回路38の電源電圧VDDが遮断される。
これに対して、リテンション制御部96は、フラグFが有効となっており、フラグデータFDがHレベルである場合、AND回路100の出力信号FEQが、Hレベルとなる。これにより、イネーブル制御部46は、電源遮断スイッチ64の動作を無効とする電源遮断信号PSENを出力する。したがって、パイプラインレジスタ82は、各リテンションFF回路28のラッチ回路38に電源電圧VDDが供給される状態が継続され、FF回路36に保持されていたデータDaがラッチ回路38に保存される。
リテンション制御部96は、パイプラインレジスタ82のフラグFが無効である場合に加え、フラグFが有効であっても、各リテンションFF回路28のFF回路36のデータDaが、初期値Diであれば、パワーゲーティングを行なう。これにより、リテンション制御部96を用いる電源遮断スイッチ部92Aは、パイプラインレジスタ82の電力消費を効率的に抑制することができる。
以上説明した第1から第4の実施形態は、開示の技術を限定するものではない。開示の技術においては、一つのリテンションFF回路28を記憶回路としても良く、nビット分のデータを記憶するレジスタ26を記憶回路とすることを含む。開示の技術において、記憶回路は、データを保持する保持部、及び保持部のデータを一時的に格納して保持するリテンション部を対で備えることを含む。
また、記憶回路としては、レジスタ26、パイプラインレジスタ82〜88に限らず、電源電圧が遮断されることによりデータが消失するRAM(random access memory)等を含む。
さらに、開示の技術は、上記実施の形態に記載に限らず、各部分が目的とする機能を含む形態であれば良い。また、本明細書に記載された全ての特許出願及び特許出願に開示される技術文献は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に、参照により取り込まれる。
以上の実施形態に関し、更に、以下の付記を含む。
(付記1)
データを保持する保持部、及び保持部のデータが一時的に格納されるリテンション部を含む記憶回路と、
電力消費抑制時に、前記記憶回路の前記保持部への電力の供給を停止する第1の給電遮断部と、
前記電力消費抑制時に、前記記憶回路の前記リテンション部への電力の供給を停止可能とする第2の給電遮断部と、
を含む半導体集積回路。
(付記2)
前記第2の給電遮断部は、
前記リテンション部への電力の供給をオンオフするためのスイッチと、
前記保持部に保持されている前記データに応じて、前記スイッチを操作することにより前記リテンション部への電力の供給を停止するスイッチ制御部と、
を含む付記1記載の半導体集積回路。
(付記3)
前記スイッチ制御部は、
前記保持部に保持されるデータの初期値を記憶する初期値記憶部と、
前記初期値と前記保持部に保持されているデータとを比較する比較部と、
を備え、前記比較部の比較結果に基づいて前記スイッチを制御する、付記2記載の半導体集積回路。
(付記4)
前記スイッチ制御部は、前記保持部に保持されている前記データと前記初期値とが一致している場合に電力の供給を停止するように前記スイッチを制御する、付記3記載の半導体集積回路。
(付記5)
前記スイッチは、複数の前記リテンション部の各々への電力の供給をオンオフし、
前記スイッチ制御部は、前記複数の前記リテンション部の各々に対応する前記保持部に保持されている前記データが当該保持部に対する前記初期値と一致する場合に、電力の供給を停止するように前記スイッチを制御する、
付記3又は付記4記載の半導体集積回路。
(付記6)
前記記憶回路は、複数対の前記保持部及び前記リテンション部を含むレジスタである、付記5記載の半導体集積回路。
(付記7)
前記スイッチ制御部は、前記保持部に保持された前記データが有効か否かを示すデータ情報に基づいて、前記スイッチを制御する、付記2記載の半導体集積回路。
(付記8)
前記スイッチ制御部は、
前記保持部に保持されるデータの初期値を記憶する初期値記憶部と、
前記初期値と前記保持部に保持されているデータとを比較する比較部と、
を備え、前記比較部の比較結果及び前記データ情報に基づいて前記スイッチを制御する、付記7記載の半導体集積回路。
(付記9)
前記スイッチ制御部は、前記保持部に保持されている前記データと前記初期値とが一致している場合に前記電源電圧の供給を停止するように前記スイッチを制御する、付記8記載の半導体集積回路。
(付記10)
前記スイッチ制御部は、前記データ情報が前記データの無効を示す場合に、電力の供給を停止するように前記スイッチを制御する、付記7から付記9の何れかに記載の半導体集積回路。
(付記11)
前記記憶回路は、複数対の前記保持部及び前記リテンション部を含むレジスタパイプラインレジスタである、付記7から付記10の何れかに記載の半導体集積回路。
(付記12)
前記記憶回路は、前記保持部として設けられたフリップフロップ回路、及び前記リテンション部として設けられたラッチ回路を対で含む、付記1から付記11の何れかに記載の半導体集積回路。
(付記13)
電力消費抑制時に、記憶回路に設けられてデータを保持する保持部への電力の供給を停止し、
前記記憶回路に設けられて前記保持部のデータが一時的に格納されるリテンション部への電力の供給を、前記保持部のデータに応じて停止する、
ことを含む電力消費抑制方法。
(付記14)
初期値記憶部に記憶される前記保持部に保持されるデータの初期値と、前記保持部に保持されているデータとを比較し、
前記初期値と前記保持部に保持されている前記データとが一致している場合に、前記リテンション部への電力の供給を停止する、
ことを含む付記13記載の電力消費抑制方法。
(付記15)
複数の前記リテンション部の前記保持部に保持されている前記データの各々が、当該保持部に対する前記初期値と一致する場合に、前記複数の前記リテンション部の各々への電力の供給を停止する、
ことを含む付記14記載の電力消費抑制方法。
(付記16)
前記保持部に保持された前記データが有効か否かを示すデータ情報に基づき、前記リテンション部への電力の供給を停止する、ことを含む付記13から付記15の何れかに記載の電力消費抑制方法。
(付記17)
前記データ情報が前記データの無効を示す場合に、前記リテンション部への電力の供給を停止する、ことを含む付記16記載の電力消費抑制方法。