(57)【要約】【課題】  電源電圧の変動を抑制し、電源ノイズを従来に比べて減らす。【解決手段】  半導体装置は、第１の命令と、実行により消費される電力が第１の命令の実行により消費される電力より大きい第２の命令とを実行する処理部と、第１の命令の次に第２の命令を実行するタイミングの間隔である第１の周期が、予め設定された第２の周期に等しい場合に、第１の命令の後に実行される第２の命令の実行タイミングを遅延させる指示を処理部に発行する制御部とを有する。【選択図】    図１
2014225195.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令と、実行により消費される電力が前記第１の命令の実行により消費される電力より大きい第２の命令とを実行する処理部と、
前記第１の命令の次に前記第２の命令を実行するタイミングの間隔である第１の周期が、予め設定された第２の周期に等しい場合に、前記第１の命令の後に実行される前記第２の命令の実行タイミングを遅延させる指示を前記処理部に発行する制御部と
を備えることを特徴とする半導体装置。
【請求項２】
前記処理部は、
命令コードを順次にフェッチする命令フェッチ部と、
前記命令フェッチ部にフェッチされた命令コードをデコードする第１の命令デコーダと、
前記第１の命令デコーダにデコードされた命令を実行する演算部と
を備え、
前記制御部は、
前記第１の命令デコーダにより順次にデコードされた命令を受け、受けた命令に基づいて前記処理部の動作を制御する制御信号を生成する信号生成部と、
前記命令フェッチ部でフェッチされる前の命令コードをデコードする第２の命令デコーダと、
前記第２の命令デコーダにより順次にデコードされた命令を受け、受けた命令が前記第１の命令および前記第２の命令のいずれであるかを判定して前記第１の周期を求め、求めた前記第１の周期が前記第２の周期に等しい場合に、前記第１の命令の後に実行される前記第２の命令の実行タイミングを遅延させる指示を前記信号生成部に発行する判定部と
を備えることを特徴とする請求項１記載の半導体装置。
【請求項３】
前記処理部は、
命令コードを順次にフェッチする命令フェッチ部と、
前記命令フェッチ部にフェッチされた命令コードをデコードする第１の命令デコーダと、
前記命令デコーダにデコードされた命令を実行する演算部と
を備え、
前記制御部は、
前記第１の命令デコーダにより順次にデコードされた命令を受け、受けた命令に基づいて前記処理部の動作を制御する制御信号を生成する信号生成部と、
前記第１の命令デコーダにより順次にデコードされた命令を受け、受けた命令が前記第１の命令および前記第２の命令のいずれであるかを判定して前記第１の周期を求め、求めた前記第１の周期が前記第２の周期に等しい場合に、前記第１の命令の後に実行される前記第２の命令の実行タイミングを遅延させる指示を前記信号生成部に発行する判定部と
を備えることを特徴とする請求項１記載の半導体装置。
【請求項４】
前記第１の命令および前記第２の命令の各々の実行により消費される電力を示す情報を記憶し、前記第２の命令デコーダによりデコードされた命令を受け、受けた命令が前記第１の命令および前記第２の命令のいずれであるかを示す命令情報を出力する記憶部を備え、
前記制御部は、前記命令情報に基づいて、実行される命令が前記第１の命令および前記第２の命令のいずれであるかを判別し、前記第１の周期を求めること
を特徴とする請求項１ないし請求項３のいずれか１項記載の半導体装置。
【請求項５】
前記制御部は、前記第１の周期が、前記第２の周期を含む所定の範囲に含まれる場合に、前記第１の周期が前記第２の周期に等しいと判定すること
を特徴とする請求項１ないし請求項４のいずれか１項記載の半導体装置。
【請求項６】
前記制御部は、前記第１の命令と前記第２の命令との間に、命令を実行しないサイクルを挿入する指示を前記処理部に発行することで、前記第１の命令の後に実行される前記第２の命令の実行タイミングを遅延させること
を特徴とする請求項１ないし請求項５のいずれか１項記載の半導体装置。
【請求項７】
前記制御部は、前記第１の命令と前記第２の命令との間に、実行により消費される電力が前記第２の命令の実行により消費される電力より小さい第３の命令を挿入する指示を前記処理部に発行することで、前記第１の命令の後に実行される前記第２の命令の実行タイミングを遅延させること
を特徴とする請求項１ないし請求項５のいずれか１項記載の半導体装置。
【請求項８】
前記第３の命令は、ＮＯＰ命令であること
を特徴とする請求項７記載の半導体装置。
【請求項９】
前記第３の命令は、前記処理部が実行する処理に影響を与えないダミー命令であること
を特徴とする請求項７記載の半導体装置。
【請求項１０】
前記制御部は、前記処理部が実行する前記第２の命令の動作レートを低くする指示を前記処理部に発行することで、前記第１の命令の後に実行される前記第２の命令の実行タイミングを遅延させること
を特徴とする請求項１ないし請求項５のいずれか１項記載の半導体装置。
【請求項１１】
前記処理部に供給されるクロックを生成するクロック生成部を備え、
前記制御部は、前記処理部が実行する前記第２の命令のクロック周波数を低くする指示を前記クロック生成部に発行することで、前記第１の命令の後に実行される前記第２の命令の実行タイミングを遅延させること
を特徴とする請求項１ないし請求項５のいずれか１項記載の半導体装置。
【請求項１２】
第１の命令と、実行により消費される電力が前記第１の命令の実行により消費される電力より大きい第２の命令とを処理部により実行し、
前記第１の命令の次に前記第２の命令を実行するタイミングの間隔である第１の周期が、予め設定された第２の周期に等しい場合に、前記処理部が前記第１の命令の後に実行する前記第２の命令の実行タイミングを遅延させる指示を前記処理部に発行すること
を特徴とする半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置および半導体装置の制御方法に関する。
【背景技術】
【０００２】
近時、半導体装置の処理能力を向上するため、複数のプロセッサコアを搭載する半導体装置が提案されている。複数のプロセッサコアは、チップ内の位置に応じて電源電圧の降下量が異なる。そこで、電源電圧の降下量に応じて、各プロセッサに割り当てる処理をスケジューリングし、並列処理を効率的に実行する手法が提案されている（例えば、特許文献１参照。）。
【０００３】
また、処理能力の高いプロセッサと処理能力の低いプロセッサとを含み、外部要求がない期間に、処理能力の高いプロセッサをスリープ状態に設定し、処理能力の低いプロセッサにより外部要求を受ける半導体装置が提案されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−３９９２３号公報
【特許文献２】特開平６−３３７７４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、プロセッサの電源電圧は、プロセッサが実行する演算の処理量に応じて変動し、変動により電源ノイズが発生する。処理量の変動の周期がチップ内の電源網の共振周波数と一致すると、電源電圧の変動は増幅され、プロセッサは誤動作するおそれがある。
【０００６】
本件開示の半導体装置および半導体装置の制御方法は、電源電圧の変動を抑制し、半導体装置を安定して動作させることを目的とする。
【課題を解決するための手段】
【０００７】
一つの観点によれば、半導体装置は、第１の命令と、実行により消費される電力が前記第１の命令の実行により消費される電力より大きい第２の命令とを実行する処理部と、第１の命令の次に第２の命令を実行するタイミングの間隔である第１の周期が、予め設定された第２の周期に等しい場合に、第１の命令の後に実行される第２の命令の実行タイミングを遅延させる指示を処理部に発行する制御部とを有する。
【０００８】
別の観点によれば、半導体装置の制御方法は、第１の命令と、実行により消費される電力が前記第１の命令の実行により消費される電力より大きい第２の命令とを処理部により実行し、第１の命令の次に第２の命令を実行するタイミングの間隔である第１の周期が、予め設定された第２の周期に等しい場合に、処理部が第１の命令の後に実行する第２の命令の実行タイミングを遅延させる指示を処理部に発行する。
【発明の効果】
【０００９】
本件開示の半導体装置および半導体装置の制御方法は、電源電圧の変動を抑制でき、半導体装置を安定して動作させることができる。
【図面の簡単な説明】
【００１０】
【図１】半導体装置および半導体装置の制御方法の一実施形態を示す図である。
【図２】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図３】図２に示した処理部の例を示す図である。
【図４】図２に示した半導体装置の動作の例を示す図である。
【図５】図２に示した半導体装置の動作の別の例を示す図である。
【図６】図２に示した制御部および図３に示した処理部の動作の例を示す図である。
【図７】図２に示した制御部の処理の例を示す図である。
【図８】図２に示した半導体装置と異なる半導体装置の動作の例を示す図である。
【図９】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図１０】図９に示した半導体装置の動作の例を示す図である。
【図１１】図９に示した制御部および処理部の動作の例を示す図である。
【図１２】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図１３】図１２に示した半導体装置の動作の例を示図である。
【図１４】図１２に示した制御部および処理部の動作の例を示す図である。
【図１５】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図１６】図１５に示した半導体装置の動作の例を示す図である。
【図１７】図１５に示した制御部および処理部の動作の例を示す図である。
【図１８】図１５に示した制御部の処理の例を示す図である。
【図１９】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図２０】図１９に示した半導体装置の動作の例を示す図である。
【図２１】図１９に示した制御部および処理部の動作の例を示す図である。
【図２２】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図２３】図２２に示した半導体装置の動作の例を示す図である。
【図２４】図２２に示した制御部および処理部の動作の例を示す図である。
【図２５】図２２に示した制御部の処理の例を示す図である。
【図２６】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図２７】図２６に示した制御部および処理部の動作の例を示す図である。
【図２８】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図２９】図２８に示した半導体装置の動作の例を示す図である。
【図３０】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図３１】図３１に示した半導体装置の動作の例を示す図である。
【図３２】図３１に示した半導体装置の動作の例を示す図である。
【図３３】図３１に示した制御部および処理部の動作の例を示す図である。
【図３４】半導体装置および半導体装置の制御方法の別の実施形態を示す図である。
【図３５】図３４に示した半導体装置の動作の例を示す図である。
【図３６】図３４に示した制御部および処理部の動作の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。
【００１２】
図１は、半導体装置および半導体装置の制御方法の一実施形態を示す。半導体装置ＳＤは、処理部１００および制御部２００を有する。処理部１００は、命令ＯＰ１と、実行により消費される電力が命令ＯＰ１の実行により消費される電力より大きい命令ＯＰ２とを実行する。制御部２００は、命令ＯＰ１の次に命令ＯＰ２を実行するタイミングの間隔である周期Ｐ１が、予め設定された周期Ｐ２に等しい場合に、命令ＯＰ１の後に実行される命令ＯＰ２の実行タイミングを遅延させる指示ＤＬＹを処理部１００に発行する。例えば、制御部２００は、周期Ｐ１が周期Ｐ２の含む所定の範囲に含まれる場合に、周期Ｐ１が周期Ｐ２に等しいと判断する。
【００１３】
例えば、周期Ｐ２は、半導体装置ＳＤの電源網における共振周波数の周期である。処理部１００が、消費電力の小さい命令ＯＰ１と消費電力の大きい命令ＯＰ２とが繰り返し実行する場合、繰り返しの周期Ｐ１が共振周波数の周期Ｐ２と一致する場合、電源電圧の共振現象が発生し、電源電圧の変動量（すなわち、電源ノイズ）が増幅される。これにより、半導体装置ＳＤは正常に動作しなくなるおそれがある。
【００１４】
この実施形態では、周期Ｐ１が共振周波数の周期Ｐ２に等しい場合に、周期Ｐ１を周期Ｐ２に対してずらす処理が実行されるため、共振現象による電源電圧の変動を抑制でき、電源ノイズを抑制できる。この結果、半導体装置ＳＤを安定して動作させることができ、半導体装置ＳＤの信頼性を従来に比べて向上できる。
【００１５】
図２は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
【００１６】
例えば、この実施形態の半導体装置ＳＤ１は、プログラムを実行することで動作するＣＰＵ（Central Processing Unit）等のプロセッサを含む。例えば、図２は、半導体装置ＳＤ１のプロセッサのコア部分を示す。半導体装置ＳＤ１は、処理部１００ａおよび制御部２００ａを有する。処理部１００ａは、プログラムカウンタＰＣ、命令キャッシュＩＣ、命令デコーダＩＤ、レジスタ部ＲＥＧ、演算部ＯＰ、データキャッシュＤＣおよびラッチＬＴ１、ＬＴ２、ＬＴ３、ＬＴ４、ＬＴ５を有する。図２では、プログラムカウンタＰＣ、命令キャッシュＩＣ、命令デコーダＩＤ、レジスタ部ＲＥＧ、演算部ＯＰおよびデータキャッシュＤＣの接続関係を説明し、動作は図３で説明する。
【００１７】
プログラムカウンタＰＣの出力は、命令キャッシュＩＣの入力に接続される。例えば、命令キャッシュＩＣは、命令キャッシュＩＣ用のキャッシュコントローラを介して命令メモリから受ける命令コードを保持し、保持した命令コードをプログラムカウンタＰＣからのアドレス値に応じて読み出し、命令コードＩＮＳＣとして出力する。例えば、命令キャッシュＩＣ用のキャッシュコントローラおよび命令メモリは、ＣＰＵコアの外部に配置される。命令キャッシュＩＣから出力される命令コードＩＮＳＣは、ラッチＬＴ１の入力および命令デコーダＰＩＤの入力に供給される。なお、命令キャッシュＩＣの代わりに、命令メモリが配置されてもよい。
【００１８】
ラッチＬＴ１は、命令キャッシュＩＣから出力される命令コードＩＮＳＣをクロックＣＬＫに同期してラッチし、ラッチした命令コードＩＮＳＣを命令デコーダＩＤの入力に出力する。命令キャッシュＩＣおよびラッチＬＴ１は、命令フェッチ部の一例である。
【００１９】
命令デコーダＩＤは、命令コードＩＮＳＣをデコードし、デコードした命令ＩＮＳを出力する。命令デコーダＩＤの出力は、ラッチＬＴ２、ＬＴ８の入力に接続される。ラッチＬＴ２は、クロックＣＬＫに同期して命令デコーダＩＤから出力される命令ＩＮＳをラッチし、ラッチした命令ＩＮＳをレジスタ部ＲＥＧに出力する。
【００２０】
レジスタ部ＲＥＧは、命令デコーダＩＤから出力される命令ＩＮＳおよびラッチＬＴ５を介して受けるデータ値を格納する複数のレジスタを有する。レジスタ部ＲＥＧの出力は、ラッチＬＴ３を介して演算部ＯＰの入力に接続され、データキャッシュＤＣの入力に接続される。
【００２１】
演算部ＯＰは、レジスタ部ＲＥＧから供給されるデータ等の演算を実行する。演算部ＯＰの出力は、ラッチＬＴ４を介してデータキャッシュＤＣの入力およびプログラムカウンタＰＣの入力に接続される。演算部ＯＰによる算術演算の結果は、ラッチＬＴ５を介してレジスタＲＥＧに転送される。
【００２２】
データキャッシュＤＣは、例えば、ストア命令によりデータメモリに書き込まれるデータおよびデータを書き込む領域を示す書き込みアドレス等が格納される。例えば、ストア命令の書き込みデータは、レジスタＲＥＧから転送され、ストア命令の書き込みアドレスは、演算部ＯＰから転送される。
【００２３】
データキャッシュＤＣの出力は、ラッチＬＴ５を介してレジスタ部ＲＥＧの入力に接続される。例えば、データキャッシュＤＣは、データキャッシュＤＣ用のキャッシュコントローラを介してデータメモリに接続される。例えば、データキャッシュＤＣ用のキャッシュコントローラおよびデータメモリは、ＣＰＵコアの外部に配置される。なお、データキャッシュＤＣの代わりに、ＳＲＡＭ（Static Random Access Memory）等のデータメモリが配置されてもよい。
【００２４】
図２に示すように、処理部１００ａは、命令の処理を独立に実行可能な複数のステージを並列に動作させるパイプライン構造を有する。命令キャッシュＩＣおよびラッチＬＴ１は、命令キャッシュＩＣに格納された命令コードＩＮＳＣをフェッチするフェッチステージに含まれる。命令デコーダＩＤおよびラッチＬＴ２は、命令デコーダＩＤにより命令コードＩＮＳＣをデコードするデコードステージに含まれる。
【００２５】
レジスタ部ＲＥＧおよびラッチＬＴ３は、レジスタ部ＲＥＧにアクセスするレジスタアクセスステージに含まれる。演算部ＯＰおよびラッチＬＴ４は、演算部ＯＰにより命令を実行する実行ステージに含まれる。データキャッシュＤＣおよびラッチＬＴ５は、データキャッシュＤＣにアクセスするメモリアクセスステージに含まれる。
【００２６】
なお、処理部１００ａは、図２に示した構成に限定されず、例えば、命令コードＩＮＳＣをラッチするラッチＬＴ１、ラッチされた命令コードＩＮＳＣをデコードする命令デコーダＩＤ、およびデコードされた命令ＩＮＳを実行する演算部ＯＰを含んでいればよい。
【００２７】
制御部２００ａは、命令デコーダＰＩＤ、ルックアップテーブルＬＵＴ、メモリＭＥＭ、判定部ＪＤＧａ、信号生成部ＳＧＥＮａおよびラッチＬＴ６、ＬＴ７、ＬＴ８を有する。
【００２８】
命令デコーダＰＩＤは、命令メモリＩＣから出力される命令コードＩＮＳＣをデコードし、デコードにより得られた命令を示す情報を、ルックアップテーブルＬＵＴおよびラッチＬＴ７に出力する。ラッチＬＴ７は、命令デコーダＰＩＤから受ける命令を示す情報を、クロックに同期して判定部ＪＤＧａに出力する。命令デコーダＰＩＤは、処理部１００のラッチＬＴ１にラッチされる前の命令コードＩＮＳＣを受けるため、命令デコーダＩＤより１クロックサイクル早く命令コードＩＮＳＣをデコード可能である。
【００２９】
ルックアップテーブルＬＵＴは、命令の実行時に消費される電力を示す情報を、命令毎に保持する。例えば、消費電力を示す情報は、”消費電力が基準値より小さい”（図２に示す”小”）および”消費電力が基準値より大きい”（図２に示す”大”）のいずれかである。以降の説明では、消費電力が基準値より小さい命令は、命令ＯＰｙ（ＯＰｙ０、ＯＰｙ１）とも称され、消費電力が基準値より大きい命令は、命令ＯＰｘ（ＯＰｘ０、ＯＰｘ１）とも称される。命令ＯＰｙは、図１に示した命令ＯＰ１に対応し、命令ＯＰｘは、図１に示した命令ＯＰ２に対応する。ルックアップテーブルＬＵＴに格納される電力を示す情報は、半導体装置ＳＤ１の設計時にシミュレーション等により得られる。
【００３０】
そして、ルックアップテーブルＬＵＴは、命令を示す情報を命令デコーダＰＩＤから受け、受けた情報が示す命令の実行時に消費される電力を示す情報（”小”または”大”を示す情報）をラッチＬＴ６に出力する。換言すれば、ルックアップテーブルＬＵＴは、処理部１００ａで実行される命令が、命令ＯＰｙ、ＯＰｘのいずれであるかを示す命令情報を、ラッチＬＴ６を介して判定部ＪＤＧａに出力する。ルックアップテーブルＬＵＴは、命令ＯＰｙ、ＯＰｘの実行により消費される電力を示す情報を記憶し、命令デコーダＰＩＤによりデコードされた命令を受け、受けた命令が命令ＯＰｙ、ＯＰｘのいずれであるかを示す命令情報を出力する記憶部の一例である。
【００３１】
この実施形態では、命令デコーダＰＩＤによりデコードされた命令は、判定部ＪＤＧａに供給されるとともに、ルックアップテーブルＬＵＴに供給される。これにより、判定部ＪＤＧａは、命令ＯＰｙ、ＯＰｘの種別の判定をルックアップテーブルＬＵＴに任せることができる。この結果、判定部ＪＤＧａが命令ＯＰｙ、ＯＰｘの種別を判定する場合に比べて、判定部ＪＤＧａが制御信号ＤＬＹを出力するタイミングを早くでき、制御部２００ａの性能を向上できる。
【００３２】
メモリＭＥＭは、半導体装置ＳＤ１の電源網における共振周波数の逆数である共振周期を記憶し、記憶している共振周期を示す情報を周期信号ＴＲＥＳとして出力する。電源網の共振周波数は、半導体装置ＳＤ１の設計時のシミュレーション等により得られる。以下の説明では、符号ＴＲＥＳは、共振周波数の周期として称する場合がある。例えば、メモリＭＥＭは、ＲＯＭ（Read Only Memory）等の不揮発性メモリである。なお、メモリＭＥＭは、ＣＰＵコアの外部に配置されてもよい。
【００３３】
判定部ＪＤＧａは、ラッチＬＴ６を介してルックアップテーブルＬＵＴから消費電力を示す情報を受け、ラッチＬＴ７を介して命令デコーダＰＩＤから命令を示す情報を受ける。判定部ＪＤＧａは、ルックアップテーブルＬＵＴからの情報に基づいて、命令デコーダＰＩＤから供給される命令が、予め設定された基準値より消費電力の小さい命令ＯＰｙなのか、基準値より消費電力の大きい命令ＯＰｘなのかを判定する。そして、判定部ＪＤＧａは、命令ＯＰｙの次に命令ＯＰｘが実行されるタイミング（すなわち、消費電力が大きくなるタイミング）の周期を求める。判定部ＪＤＧａは、求めた周期が周期情報ＴＲＥＳにより示される周期に対して所定の範囲内に含まれる場合、命令ＯＰｙ、ＯＰｘが繰り返し実行されることにより共振現象が発生するおそれがあると判定し、制御信号ＤＬＹを信号生成部ＳＧＥＮａに出力する。制御信号ＤＬＹは、処理部１００ａに対して、命令ＯＰｙの後に実行される命令ＯＰｘの実行タイミングを遅延させる指示である。
【００３４】
信号生成部ＳＧＥＮａは、ラッチＬＴ８を介して命令デコーダＩＤから出力される命令ＩＮＳを受け、処理部１００ａに命令ＩＮＳを処理させる制御信号ＣＮＴを生成する。なお、命令デコーダＩＤから出力される命令ＩＮＳは、命令コードをデコードすることにより得られ、命令を処理するための情報を含む。また、信号生成部ＳＧＥＮａは、判定部ＪＤＧａからの制御信号ＤＬＹに応答して、消費電力が基準値より大きい命令ＯＰｘの実行を一時的に停止するための制御信号ＣＮＴを処理部１００ａに出力する。
【００３５】
なお、図２に矢印で示した信号の経路は、１ビットに限らず複数ビットでもよい。複数ビットの信号を受けるラッチＬＴ（ＬＴ１、ＬＴ２、ＬＴ３、ＬＴ４、ＬＴ５、ＬＴ６、ＬＴ７およびＬＴ８の少なくともいずれか）は、信号のビット数に対応する複数のラッチ回路を有する。なお、ラッチＬＴおよびプログラムカウンタＰＣに示したかぎ形状は、クロックの入力端子を示す。
【００３６】
図３は、図２に示した処理部１００ａの例を示す。処理部１００ａは、図２に示した構成に加えて、セレクタＳＥＬ１、ＳＥＬ２および加算器ＡＤＤ１を有する。
【００３７】
プログラムカウンタＰＣは、命令が格納された命令キャッシュＩＣにアクセスするアドレス値を生成する。プログラムカウンタＰＣは、制御部２００ａからイネーブル信号ＰＣＥＮを受けている期間に動作し、クロックＣＬＫに同期してセレクタＳＥＬ１から受けたアドレス値ＡＤを出力する。すなわち、プログラムカウンタＰＣは、ラッチの機能を有する。プログラムカウンタＰＣは、イネーブル信号ＰＣＥＮを受けていない期間、クロックＣＬＫを受けても動作せず、保持しているアドレス値ＡＤを出力し続ける。
【００３８】
命令キャッシュＩＣは、命令メモリ（図２）から転送される命令が格納される。命令キャッシュＩＣは、プログラムカウンタＰＣからのアドレス値ＡＤをアドレス端子ＲＡＤで受け、アドレス値ＡＤにより示される記憶領域に格納された命令コードＩＮＳＣを読み出す。命令キャッシュＩＣは、読み出した命令コードＩＮＳＣを出力端子ＤＯから出力する。命令コードＩＮＳＣは、ラッチＬＴ１および制御部２００ａの命令デコーダＰＩＤに供給される。
【００３９】
加算器ＡＤＤ１は、プログラムカウンタＰＣからのアドレス値ＡＤに”４”を加え、次の命令コードＩＮＳＣが格納された記憶領域を示すアドレス値ＮＡＤを生成する。例えば、処理部１００ａ（すなわち、プロセッサ）は、３２ビット幅のアーキテクチャを採用しており、命令を４バイト単位でフェッチする。このため、加算器ＡＤＤ１は、アドレス値ＡＤを”４”ずつインクリメントする。なお、処理部１００ａが、６４ビット幅のアーキテクチャを採用する場合、加算器ＡＤＤ１は、アドレス値ＡＤを”８”ずつインクリメントする。
【００４０】
ラッチＬＴ１は、制御部２００ａから活性化レベルのイネーブル信号ＥＮ１を受けている期間に動作し、クロックＣＬＫに同期して命令キャッシュＩＣから受けた信号および加算器ＡＤＤ１から受けた信号をラッチし、ラッチした信号を出力する。ラッチＬＴ１は、非活性化レベルのイネーブル信号ＥＮ１を受けている期間、クロックＣＬＫを受けても動作せず、活性化レベルのイネーブル信号ＥＮ１を受けている期間に保持した値を出力し続ける。ラッチＬＴ１は、パイプラインのステージの１つである命令キャッシュＩＣから命令コードをフェッチするフェッチステージの結果を保持する。
【００４１】
命令デコーダＩＤは、ラッチＬＴ１を介して受ける命令コードＩＮＳＣをデコードし、デコードにより得られた命令ＩＮＳを出力する。例えば、命令ＩＮＳは、演算部ＯＰが実行する命令を示す情報と、レジスタ番号またはアドレス等を含む。命令を示す情報ＩＮＳは、レジスタ部ＲＥＧ、演算部ＯＰおよびデータキャッシュＤＣを動作させるために制御部２００ａに供給される。レジスタ番号またはアドレス等を示す情報ＩＮＳは、ラッチＬＴ２を介してレジスタ部ＲＥＧに供給され、あるいはラッチＬＴ２、ＬＴ３を介して演算部ＯＰの加算器ＡＤＤ２に供給される。
【００４２】
ラッチＬＴ２は、制御部２００ａから活性化レベルのイネーブル信号ＥＮ２を受けている期間に動作し、クロックＣＬＫに同期して、命令ＩＮＳとラッチＬＴ１を介して受けるアドレス値ＮＡＤとをラッチし、ラッチした値を出力する。ラッチＬＴ２は、非活性化レベルのイネーブル信号ＥＮ２を受けている期間、クロックＣＬＫを受けても動作せず、活性化レベルのイネーブル信号ＥＮ２を受けている期間に保持した値を出力し続ける。ラッチＬＴ２は、パイプラインのステージの１つである命令デコーダＩＤによる命令のデコードステージの結果を保持する。
【００４３】
レジスタ部ＲＥＧは、演算に用いるデータ値やアドレス等の値が格納される複数のレジスタを有する。レジスタ部ＲＥＧは、制御部２００ａから制御信号ＲＥＧＣＮＴを受けて動作する。
【００４４】
例えば、命令デコーダＩＤから制御部２００ａに供給される命令ＩＮＳが、２つのレジスタ間の演算を示す場合、レジスタ部ＲＥＧは、制御信号ＲＥＧＣＮＴに基づいて入力端子ＲＡＤ１、ＲＡＤ２でレジスタ番号を示す命令ＩＮＳを受ける。そして、レジスタ部ＲＥＧは、レジスタ番号で示される２つのレジスタに保持されたデータ値を出力端子ＤＯ１、ＤＯ２に出力する。
【００４５】
例えば、制御部２００ａに供給される命令ＩＮＳが、レジスタへのデータ値のストアを示す場合、レジスタ部ＲＥＧは、制御信号ＲＥＧＣＮＴに基づいて入力端子ＷＡＤでレジスタ番号を示す命令ＩＮＳを受ける。そして、レジスタ部ＲＥＧは、データキャッシュＤＣから出力され、入力端子ＤＩで受けるデータ値をレジスタ番号で示されるレジスタに書き込む。
【００４６】
レジスタ部ＲＥＧの出力端子ＤＯ１から出力されるデータ値は、ラッチＬＴ３を介して演算器ＯＰに供給される。レジスタ部ＲＥＧの出力端子ＤＯ２から出力されるデータ値は、ラッチＬＴ３を介して演算器ＯＰに供給され、あるいはラッチＬＴ３、ＬＴ４を介してデータキャッシュＤＣに供給される。
【００４７】
ラッチＬＴ３は、制御部２００ａから活性化レベルのイネーブル信号ＥＮ３を受けている期間に動作し、クロックＣＬＫに同期して、レジスタ部ＲＥＧから出力されるデータ値をラッチし、ラッチしたデータ値を出力する。また、ラッチＬＴ３は、活性化レベルのイネーブル信号ＥＮ３を受けている期間に、クロックＣＬＫに同期して、命令デコーダＰＩＤから出力される命令ＩＮＳをラッチし、ラッチした命令ＩＮＳを出力する。
【００４８】
さらに、ラッチＬＴ３は、活性化レベルのイネーブル信号ＥＮ３を受けている期間に、クロックＣＬＫに同期して、ラッチＬＴ１、ＬＴ２を介して受けるアドレス値ＮＡＤをラッチし、ラッチしたアドレス値ＮＡＤを出力する。ラッチＬＴ３は、非活性化レベルのイネーブル信号ＥＮ３を受けている期間、クロックＣＬＫを受けても動作せず、活性化レベルのイネーブル信号ＥＮ３を受けている期間に保持した値を出力し続ける。ラッチＬＴ３は、パイプラインのステージの１つであるレジスタ部ＲＥＧによるレジスタアクセスステージの結果を保持する。
【００４９】
演算器ＯＰは、加算器ＡＤＤ２およびＡＬＵ（Arithmetic Logic Unit）を有する。加算器ＡＤＤ２は、ラッチＬＴ３を介して受けるアドレス値ＮＡＤにラッチＬＴ３を介して命令デコーダＩＤから受けるアドレス値を加え、加えた値を分岐アドレス値ＢＡＤとして出力する。すなわち、加算器ＡＤＤ２は、分岐命令が実行される場合に、分岐先の分岐アドレス値ＢＡＤを生成する。
【００５０】
例えば、ＡＬＵは、整数演算器、浮動小数演算器およびビット演算器等を含む。ＡＬＵは、ラッチＬＴ３を介してレジスタ部ＲＥＧの出力端子ＤＯ１、ＤＯ２から出力されるデータ値を受ける。ＡＬＵは、制御部２００ａからの制御信号ＡＬＵＯＰに応じて動作する整数演算器、浮動小数演算器およびビット演算器のいずれかを用いて、受けたデータ値を演算し、演算結果を出力する。例えば、ＡＬＵは、分岐命令に基づいて、データ値のビット演算やデータ値の大小の判定をする場合、真または偽を示す信号ＴＦを演算結果としてセレクタＳＥＬ１に出力する。例えば、制御信号ＡＬＵＯＰは、複数ビットの信号であり、ＡＬＵ内の複数の演算器を選択的に動作するために使用される。
【００５１】
ラッチＬＴ４は、制御部２００ａから活性化レベルのイネーブル信号ＥＮ４を受けている期間に動作し、クロックＣＬＫに同期して、演算部ＯＰから出力されるデータ値をラッチし、ラッチしたデータ値を出力する。また、ラッチＬＴ４は、活性化レベルのイネーブル信号ＥＮ４を受けている期間に、クロックＣＬＫに同期して、ラッチＬＴ３を介して受けるレジスタ部ＲＥＧからのデータ値をラッチし、ラッチしたデータ値を出力する。さらに、ラッチＬＴ４は、活性化レベルのイネーブル信号ＥＮ４を受けている期間に、クロックＣＬＫに同期して、加算器ＡＤＤ２から出力される分岐アドレス値ＢＡＤをラッチし、ラッチした分岐アドレス値ＢＡＤを出力する。ラッチＬＴ４は、非活性化レベルのイネーブル信号ＥＮ４を受けている期間、クロックＣＬＫを受けても動作せず、活性化レベルのイネーブル信号ＥＮ４を受けている期間に保持した値を出力し続ける。ラッチＬＴ４は、パイプラインのステージの１つである演算部ＯＰによる実行ステージの結果を保持する。
【００５２】
セレクタＳＥＬ１は、制御部２００ａからのセレクト信号ＳＥＬ１０およびＡＬＵからの信号ＴＦを受けない場合、加算器ＡＤＤ１から出力されるアドレス値ＮＡＤをプログラムカウンタＰＣに出力する。セレクタＳＥＬ１は、制御部２００ａからのセレクト信号ＳＥＬ１０またはＡＬＵからの信号ＴＦを受ける場合に、加算器ＡＤＤ２から出力されるアドレス値ＢＡＤをプログラムカウンタＰＣに出力する。
【００５３】
データキャッシュＤＣは、制御部２００ａからの制御信号ＤＣＣＮＴに基づいて動作し、ラッチＬＴ４を介して受けるデータ値またはアドレス値をデータ端子ＤＩまたはアドレス端子ＲＡＤ、ＷＡＤで受ける。例えば、制御部２００ａに供給される命令ＩＮＳ（デコード結果）が、データキャッシュＤＣからのデータ値の読み出しを示す場合、データキャッシュＤＣは、制御信号ＤＣＣＮＴに基づいて入力端子ＲＡＤでアドレス値を受ける。そして、データキャッシュＤＣは、入力端子ＲＡＤで受けるアドレス値が示す記憶領域に格納されたデータ値を読み出し、読み出したデータ値を出力端子ＤＯから出力する。
【００５４】
例えば、制御部２００ａに供給される命令ＩＮＳ（デコード結果）が、データキャッシュＤＣへのデータ値の書き込みを示す場合、データキャッシュＤＣは、制御信号ＤＣＣＮＴに基づいて入力端子ＷＡＤでアドレス値を受け、データ端子ＤＩでデータ値を受ける。そして、データキャッシュＤＣは、入力端子ＷＡＤで受けるアドレス値が示す記憶領域に、データ端子ＤＩで受けたデータ値を書き込む。データキャッシュＤＣは、制御信号ＤＣＣＮＴを受けない期間、動作しない。
【００５５】
ラッチＬＴ５は、制御部２００ａから活性化レベルのイネーブル信号ＥＮ５を受けている期間に動作し、クロックＣＬＫに同期して、データキャッシュＤＣから出力されるデータ値をラッチし、ラッチしたデータ値を出力する。また、ラッチＬＴ５は、活性化レベルのイネーブル信号ＥＮ５を受けている期間に、クロックＣＬＫに同期して、ラッチＬＴ４を介して受けるＡＬＵからのデータ値をラッチし、ラッチしたデータ値を出力する。ラッチＬＴ５は、非活性化レベルのイネーブル信号ＥＮ５を受けている期間、クロックＣＬＫを受けても動作せず、活性化レベルのイネーブル信号ＥＮ５を受けている期間に保持した値を出力し続ける。ラッチＬＴ５は、パイプラインのステージの１つであるデータキャッシュＤＣのメモリアクセスステージの結果を保持する。
【００５６】
セレクタＳＥＬ２は、制御部２００ａからのセレクト信号ＳＥＬ２０に応じて、ラッチＬＴ５を介して受けるデータキャッシュＤＣから出力されるデータ値またはラッチＬＴ４、ＬＴ５を介して受けるＡＬＵからのデータ値を、レジスタ部ＲＥＧの入力端子ＤＩに出力する。例えば、ロード命令の実行では、セレクト信号ＳＥＬ２０が論理０に設定されて”０”で示される入力端子が選択され、データキャッシュＤＣから読み出されたデータ値がレジスタ部ＲＥＧに供給される。例えば、演算命令の実行では、セレクト信号ＳＥＬ２０が論理１に設定されて”１”で示される入力端子が選択され、ＡＬＵの演算により求められたデータ値がレジスタ部ＲＥＧに供給される。
【００５７】
なお、イネーブル信号ＰＣＥＮ、ＥＮ１、ＥＮ２、ＥＮ３、ＥＮ４、ＥＮ５、制御信号ＲＥＧＣＮＴ、ＤＣＣＮＴ、セレクト信号ＳＥＬ１０、ＳＥＬ２０は、図２に示した制御信号ＣＮＴに含まれる。
【００５８】
図４は、図２に示した半導体装置ＳＤ１の動作の例を示す。例えば、図４の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【００５９】
消費電力が基準値より小さい命令ＯＰｙは、白抜きの図形で示され、消費電力が基準値より大きい命令ＯＰｘは、網掛けの図形で示される。各命令ＯＰｙ、ＯＰｘは、１クロックサイクルで実行されてもよく、複数のクロックサイクルで実行されてもよい。太い実線で示す命令ＯＰｙ、ＯＰｘは、図２に示した判定部ＪＤＧａにより判定されたことを示し、破線で示す命令ＯＰｙ、ＯＰＸは、判定部ＪＤＧａにより判定される前であることを示す。
【００６０】
この例では、説明を簡単にするために、６つの命令ＯＰｙと、６つの命令ＯＰｘが繰り返し実行されるとする。６つの命令ＯＰｙと６つの命令ＯＰｘとの実行期間は、半導体装置ＳＤ１の電源網の共振周波数の周期ＴＲＥＳとほぼ等しい。判定部ＪＤＧａは、ルックアップテーブルＬＵＴから読み出される情報を用いて、命令デコーダＰＩＤから出力される命令が命令ＯＰｙ、ＯＰｘのいずれであるかを判定する。
【００６１】
図４の上側の波形に示すように、判定部ＪＤＧａは、命令ＯＰｙの次に命令ＯＰｘが実行される場合に、命令ＯＰｘの実行が開始される時刻Ｔ０を記憶する。次に、判定部ＪＤＧａは、命令ＯＰｘの次に実行される命令ＯＰｙを検出し、さらに、命令ＯＰｙの次に命令ＯＰｘが実行される場合に、命令ＯＰｘの実行が開始される時刻ＴＸを記憶する。
【００６２】
判定部ＪＤＧａは、時刻ＴＸと時刻Ｔ０の差である周期ＴＸ−Ｔ０（命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔）が共振周波数の周期ＴＲＥＳに等しい場合、図２に示した制御信号ＤＬＹを信号生成部ＳＧＥＮａに出力する。例えば、判定部ＪＤＧａは、周期ＴＸ−Ｔ０が周期ＴＲＥＳの７５％より大きく、周期ＴＲＥＳの１２５％より小さい場合に、周期ＴＸ−Ｔ０が周期ＴＲＥＳに等しいと判断する。すなわち、判定部ＪＤＧａは、周期ＴＸ−Ｔ０が周期ＴＲＥＳを含む所定の範囲（マイナス側２５％、プラス側２５％）に含まれる場合に、周期ＴＸ−Ｔ０が周期ＴＲＥＳに等しいと判断する。
【００６３】
図４の中央の波形に示すように、信号生成部ＳＧＥＮａは、制御信号ＤＬＹに応答して、本来は時刻ＴＸに実行される命令ＯＰｘ（７）の前に、命令を実行しないサイクルＮＯＰ（No OPeration）を挿入させる指示を処理部１００ａに発行する。そして、信号生成部ＳＧＥＮａは、命令ＯＰｙ（６）の次に命令ＯＰｘ（７）を実行するタイミングの間隔である周期を、例えば、周期ＴＲＥＳの１．５倍に設定する。これにより、命令ＯＰｘ（７）は、時刻Ｔ１に実行される。なお、命令ＯＰｙ、ＯＰｘの末尾に付けた括弧付きの数値は、図６に示す命令に対応し、括弧内の数値は、命令ＯＰｙ、ＯＰｘの実行順を示す。
【００６４】
この後、図４の下側の波形に示すように、判定部ＪＤＧａは、挿入されたサイクルＮＯＰ後に実行される命令ＯＰｘ（７）の時刻Ｔ１を時刻Ｔ０とする。判定部ＪＤＧａは、図４の上側に示した波形と同様に、命令ＯＰｘ（７）の次に実行される命令ＯＰｙ（１２）を検出し、さらに、命令ＯＰｙ（１２）の次に命令ＯＰｘが実行される場合に、命令ＯＰｘの実行が開始される時刻ＴＸを記憶する。そして、判定部ＪＤＧａは、周期ＴＸ−Ｔ０と周期ＴＲＥＳとに基づいて、サイクルＮＯＰを挿入するか否かを判断する。
【００６５】
半導体装置ＳＤ１の電源線に流れる電源電流は、命令ＯＰｙの実行から命令ＯＰｘの実行に切り替わるときに増加し、命令ＯＰｘの実行から命令ＯＰｙの実行に切り替わるときに減少する。サイクルＮＯＰでの電源電流は、命令ＯＰｙの実行時より少ない。半導体装置ＳＤ１の電源電圧は、電源電流が過渡的に増加するときに低下し、電源電流が過渡的に減少するときに上昇する。
【００６６】
半導体装置ＳＤ１は、サイクルＮＯＰを挿入することで、電源電流の変動の周期を共振周波数の周期ＴＲＥＳと合わないようにする。このため、消費電力が基準値より小さい所定数の命令ＯＰｙと、消費電力が基準値より大きい所定数のＯＰｘとが周期的に繰り返されても、繰り返しの周期が周期ＴＲＥＳと一致することを避けることができる。この結果、電源電圧の変動量が共振により増幅することはなく、電源ノイズを抑制でき、半導体装置ＳＤ１が電源電圧の共振現象により誤動作するおそれはない。
【００６７】
図５は、図２に示した半導体装置ＳＤ１の動作の別の例を示す。図４と同じ要素については、詳細な説明は省略する。図５の上側の波形に示すように、判定部ＪＤＧａは、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳと異なる場合、すなわち、周期ＴＸ−Ｔ０が、周期ＴＲＥＳの７５％以下、または周期ＴＲＥＳの１２５％以上である場合、図２に示した制御信号ＤＬＹを出力しない。このため、信号生成部ＳＧＥＮａは、時刻ＴＸに実行される命令ＯＰｘの前に、サイクルＮＯＰを挿入しない。
【００６８】
この実施形態では、判定部ＪＤＧａは、周期ＴＸ−Ｔ０が周期ＴＲＥＳを含む所定の範囲に含まれる場合に、周期ＴＸ−Ｔ０を周期ＴＲＥＳに等しいと判定する。これにより、周期ＴＸ−Ｔ０が周期ＴＲＥＳに近い場合にサイクルＮＯＰを挿入することができ、電源電圧の変動量が共振により増幅する可能性を、周期ＴＸ−Ｔ０と周期ＴＲＥＳとの一致を判定する場合に比べて下げることができる。
【００６９】
次に、判定部ＪＤＧａは、時刻ＴＸを時刻Ｔ０とし、命令ＯＰｘの次に実行される命令ＯＰｙを検出し、さらに、命令ＯＰｙの次に命令ＯＰｘが実行される場合に、命令ＯＰｘの実行が開始される時刻ＴＸを記憶する。図５の中央に示す波形および図５の下側に示す波形は、図５の上側に示す波形の時刻ＴＸにサイクルＮＯＰが挿入されないことを除き、図４の中央に示した波形および図４の下側に示した波形と同様である。
【００７０】
図６は、図２に示した制御部２００ａおよび図３に示した処理部１００ａの動作の例を示す。すなわち、図６は、処理部１００ａが実行するパイプライン処理の例を示す。クロックＣＬＫに付した数字は、クロックサイクルの番号を示す。図６の下側に示したかぎ括弧で囲った波形は、図５に示したように、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳと異なる場合にサイクルＮＯＰが挿入されない例を示す。
【００７１】
末尾に括弧付きの数値を付けた命令ＯＰｙ、ＯＰｘは、図４の中央の波形に示した命令に対応する。プログラムカウンタＰＣおよびラッチＬＴ１から出力される括弧付きの命令ＯＰｙ、ＯＰｘは、命令コードを示す。ラッチＬＴ３、ＬＴ４、ＬＴ５から出力される括弧付きの命令ＯＰｙ、ＯＰｘは、命令ＯＰｙ、ＯＰｘの処理により得られる値を示す。
【００７２】
２番目および３番目のクロックサイクルにおいて、命令キャッシュＩＣは、プログラムカウンタＰＣの値に応じて、命令コードＯＰｙ（６）、ＯＰｘ（７）を順次に出力する。図２に示した制御部２００ａの命令デコーダＰＩＤは、命令キャッシュＩＣから読み出される命令コードＯＰｙ（６）、ＯＰｘ（７）をデコードする。図２に示した制御部２００ａの判定部ＪＤＧａは、命令ＯＰｙ（６）の次に命令ＯＰｘ（７）が実行されることを検出し、図４に示した周期ＴＸ−Ｔ０を求める。この例では、周期ＴＸ−Ｔ０は、電源網の共振周波数の周期ＴＲＥＳに等しいため、判定部ＪＤＧａは、制御信号ＤＬＹを出力する。
【００７３】
図２に示した制御部２００ａの信号生成部ＳＧＥＮａは、制御信号ＤＬＹに基づいて、４番目のクロックサイクルに同期してイネーブル信号ＰＣＥＮ、ＥＮ１、ＥＮ２を非活性化レベル（例えば、ロウレベル）に設定する。例えば、信号生成部ＳＧＥＮａは、イネーブル信号ＰＣＥＮ、ＥＮ１、ＥＮ２の非活性化期間を、共振周波数の周期ＴＲＥＳの半分に相当する６クロックサイクルに設定する。
【００７４】
また、信号生成部ＳＧＥＮａは、制御信号ＤＬＹに基づいて、５番目から１０番目のクロックＣＬＫにそれぞれ同期して、演算部ＯＰの動作を禁止する制御信号ＡＬＵＯＰ（ＤＩＳ）を出力する。例えば、信号生成部ＳＧＥＮａは、制御信号ＡＬＵＯＰ（ＤＩＳ）を出力する期間を、共振周波数の周期ＴＲＥＳの半分に相当する６クロックサイクルに設定する。なお、信号生成部ＳＧＥＮａは、１番目から４番目のクロックＣＬＫにそれぞれ同期して、演算部ＯＰの動作を制御する制御信号ＡＬＵＯＰ（ＯＰ）を、実行する命令に応じて出力する。
【００７５】
プログラムカウンタＰＣは、イネーブル信号ＰＣＥＮが非活性化されている期間に動作を停止するため、命令キャッシュＩＣは、５番目から１０番目のクロックサイクルにおいて、現在の読み出し値を出力し続ける。ラッチＬＴ１は、イネーブル信号ＥＮ１が非活性化されている期間にラッチ動作を停止し、保持している値（ＯＰｘ（７））を出力し続ける。ラッチＬＴ２は、イネーブル信号ＥＮ２が非活性化されている期間にラッチ動作を停止し、保持している値（ＯＰｙ（６））を出力し続ける。
【００７６】
信号生成部ＳＧＥＮａは、制御信号ＤＬＹに基づいて、５番目、６番目、７番目のクロックサイクルにイネーブル信号ＥＮ３、ＥＮ４、ＥＮ５を順次に非活性化レベル（例えば、ロウレベル）に設定する。例えば、信号生成部ＳＧＥＮａは、イネーブル信号ＥＮ３、ＥＮ４、ＥＮ５の非活性化期間を、それぞれ共振周波数の周期ＴＲＥＳの半分に相当する６クロックサイクルに設定する。
【００７７】
ラッチＬＴ３は、イネーブル信号ＥＮ３が非活性化されている期間にラッチ動作を停止し、保持している値（ＯＰｙ（６））を出力し続ける。ラッチＬＴ４は、イネーブル信号ＥＮ４が非活性化されている期間にラッチ動作を停止し、保持している値（ＯＰｙ（６））を出力し続ける。ラッチＬＴ５は、イネーブル信号ＥＮ５が非活性化されている期間にラッチ動作を停止し、保持している値（ＯＰｙ（６））を出力し続ける。
【００７８】
演算部ＯＰは、ラッチＬＴ３から出力される命令ＯＰｙ（６）の値を５番目のクロックＣＬＫに同期して演算し、その後、制御信号ＡＬＵＯＰ（ＤＩＳ）を受けて、６番目から１１番目のクロックサイクルで動作を停止する。
【００７９】
ラッチＬＴ２以降の回路において、制御信号ＡＬＵＯＰ（ＤＩＳ）により実行が停止された命令ＯＰｘ（７）に対応する処理は、イネーブル信号ＥＮ２がハイレベルに変化した後の１１番目のクロックサイクルから順次に実行される。これにより、命令ＯＰｙ（６）の次に命令ＯＰｘ（７）を実行するタイミングの間隔である周期は、図４に示したように、例えば、周期ＴＲＥＳの１．５倍に設定される。
【００８０】
なお、信号生成部ＳＧＥＮａは、イネーブル信号ＥＮ３の非活性化期間に対応して、レジスタ部ＲＥＧの動作を禁止する制御信号ＲＥＧＣＮＴを出力してもよい。また、信号生成部ＳＧＥＮａは、イネーブル信号ＥＮ５の非活性化期間に対応して、データキャッシュＤＣの動作を禁止する制御信号ＤＣＣＮＴを出力してもよい。
【００８１】
以上により、半導体装置ＳＤ１は、制御信号ＤＬＹに応答して命令ＯＰｘ（７）に対応する処理を保留することで、図４に示した周期ＴＸ−Ｔ０を共振周波数の周期ＴＲＥＳからずらすことができる。命令ＯＰｘ（７）に対応する処理は、制御信号ＰＣＥＮがハイレベルに変化する１０番目のクロックサイクルから順次に実行される。例えば、演算部ＯＰは、ラッチＬＴ３から出力される命令ＯＰｘ（７）の値を１１番目のクロックＣＬＫに同期して演算する。
【００８２】
図７は、図２に示した制御部２００ａの処理の例を示す。例えば、図７に示す処理は、判定部ＪＤＧａおよび信号生成部ＳＧＥＮａのハードウェアにより実行される。
【００８３】
まず、ステップＳ１００において、制御部２００ａは、命令デコーダＰＩＤから命令ＯＰｙを受けたか否かを判定する。命令デコーダＰＩＤから命令ＯＰｙを受けた場合、処理はステップＳ１０２に移行される。ステップＳ１００は、命令デコーダＰＩＤから命令ＯＰｙを受けるまで繰り返される。
【００８４】
ステップＳ１０２において、制御部２００ａは、命令デコーダＰＩＤから命令ＯＰｘを受けるのを待つ。命令デコーダＰＩＤから命令ＯＰｘを受けた場合、ステップＳ１０４において、制御部２００ａは、命令ＯＰｘが実行される時刻Ｔ０を記憶する。
【００８５】
次に、ステップＳ１０６において、制御部２００ａは、命令デコーダＰＩＤから命令ＯＰｙを受けるのを待つ。命令デコーダＰＩＤから命令ＯＰｙを受けた場合、ステップＳ１０８において、制御部２００ａは、命令デコーダＰＩＤから命令ＯＰｘを受けるのを待つ。命令デコーダＰＩＤから命令ＯＰｘを受けた場合、ステップＳ１１０において、制御部２００ａは、命令ＯＰｘが実行される時刻ＴＸを記憶する。
【００８６】
次に、ステップＳ１１２において、制御部２００ａは、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しいか否かを判定する。周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しい場合、処理はステップＳ１１４に移行される。周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳと異なる場合、処理はステップＳ１１６に移行される。なお、ステップＳ１１２では、図４で説明したように、例えば、周期ＴＸ−Ｔ０が周期ＴＲＥＳを中心としてプラス側およびマイナス側にそれぞれ２５％の範囲内に含まれるか否かを判定する。
【００８７】
ステップＳ１１４において、制御部２００ａは、命令ＯＰｙの次に命令ＯＰｘを実行する時刻Ｔ１を、時刻Ｔ０から周期ＴＲＥＳの１．５倍が経過する後に設定する。すなわち、制御部２００ａは、図６に示したように、命令ＯＰｘの実行を保留する制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５、ＡＬＵＯＰ）を処理部１００ａに出力する。ステップＳ１１４の後、処理はステップＳ１１６に移行される。ステップＳ１１６において、制御部２００ａは、時刻Ｔ１を時刻Ｔ０に設定する。ステップＳ１１６の後、処理はステップＳ１０６に戻る。
【００８８】
一方、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳと異なる場合、ステップＳ１１８において、制御部２００ａは、時刻ＴＸを時刻Ｔ０に設定する。ステップＳ１１８の後、処理はステップＳ１０６に戻る。
【００８９】
図８は、図２に示した半導体装置ＳＤ１と異なる半導体装置の動作の例を示す。例えば、半導体装置は、図２に示した命令デコーダＰＩＤ、判定部ＪＤＧａ、ルックアップテーブルＬＵＴおよびメモリＭＥＭを持たない。
【００９０】
この種の半導体装置では、命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔である周期Ｔ１−Ｔ０（またはＴ２−Ｔ１）が共振周波数の周期ＴＲＥＳに等しい場合、電源電圧の変動量（振幅）は、共振現象により徐々に大きくなる。例えば、電源電圧の振幅は、図４に示した電源電圧の振幅の２倍程度まで大きくなるおそれがある。なお、電源電圧の振幅は、Ｑ値が大きいほど大きくなる。
【００９１】
これに対して、図２に示した半導体装置ＳＤ１では、図４に示したように、周期ＴＸ−Ｔ０を共振周波数の周期ＴＲＥＳからずらすことができるため、電源電圧の変動量を図８に示した変動量の半分程度に抑えることができる。
【００９２】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ１を安定して動作させることができる。さらに、この実施形態では、制御部２００ａは、命令デコーダＩＤより１クロックサイクル早く動作する命令デコーダＰＩＤを有する。このため、制御部２００ａは、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳと等しくなることを、命令デコーダＩＤによりデコードされた命令により判定する場合に比べて、早く判定することができる。これにより、命令ＯＰｙ、ＯＰｘの切り替わりタイミングでサイクルＮＯＰを挿入することができ、消費電力が小さい命令ＯＰｙと消費電力が大きい命令ＯＰｘが繰り返される頻度を、命令デコーダＰＩＤからの出力により判定する場合に比べて下げることができる。この結果、電源電圧の変動を抑制できる。
【００９３】
また、サイクルＮＯＰを挿入するための制御回路を、処理部１００ａに追加することなく、制御部２００ａによる制御により、命令ＯＰｙと命令ＯＰｘとの切り替わりタイミングでサイクルＮＯＰを挿入することができる。これにより、既存の処理部１００ａを流用して、半導体装置ＳＤ１を設計でき、処理部１００ａに制御回路を追加する場合に比べて設計期間を短縮することができる。
【００９４】
図９は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置ＳＤ２は、図２に示した処理部１００ａの代わりに処理部１００ｂを有し、図２に示した制御部２００ａの代わり制御部２００ｂを有する。
【００９５】
処理部１００ｂは、図３に示した処理部１００ａにセレクタＳＥＬ３を追加している。セレクタＳＥＬ３は、制御部２００ｂからの制御信号ＩＮＳＴＳに応じて、ラッチＬＴ１から出力される命令コードまたは命令コードＮＯＰを命令デコーダＩＤの入力端子ＤＩに出力する。例えば、セレクタＳＥＬ３は、論理１の制御信号ＩＮＳＴＳを受けた場合に、”１”で示される入力端子で受ける命令コードＮＯＰを命令デコーダＩＤに出力する。また、セレクタＳＥＬ３は、論理０の制御信号ＩＮＳＴＳを受けた場合に、”０”で示される入力端子で受けるラッチＬＴ１からの命令コードを命令デコーダＩＤに出力する。処理部１００ｂのその他の構成は、図３に示した処理部１００ａと同様である。
【００９６】
制御部２００ｂは、図２に示した信号生成部ＳＧＥＮａの代わりに信号生成部ＳＧＥＮｂを有する。信号生成部ＳＧＥＮｂは、制御信号ＤＬＹに応じて、制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５、ＩＮＳＴＳ、ＲＥＧＣＮＴ、ＡＬＵＯＰ、ＤＣＣＮＴ）および制御信号ＩＮＳＴＳを生成する機能を有する。制御部２００ｂのその他の構成は、図２に示した制御部２００ａと同様である。
【００９７】
図１０は、図９に示した半導体装置ＳＤ２の動作の例を示す。図４と同じ要素については、詳細な説明は省略する。図１０の上側の波形は、図４の上側の波形と同様である。例えば、図１０の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【００９８】
図１０の中央の波形および図１０の下側の波形では、図４に示した命令を実行しないサイクルＮＯＰの代わりに、例えば、６つの命令ＮＯＰ（No OPeration命令）が挿入される。そして、信号生成部ＳＧＥＮｂは、命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔である周期を、例えば、電源網における共振周波数の周期ＴＲＥＳの１．５倍に設定する。
【００９９】
命令ＮＯＰにより消費される電力は、図４に示した命令を実行しないサイクルＮＯＰ中に消費される電力と同等であり、命令ＯＰｙと同様に命令ＯＰｘの実行により消費される電力より小さい。このため、図４と同様に、消費電力が基準値より小さい所定数の命令ＯＰｙと、消費電力が基準値より大きい所定数のＯＰｘとが周期的に繰り返されても、繰り返しの周期が周期ＴＲＥＳと一致することを避けることができる。電源電流の変化および電源電圧の変化は、図４に示した電源電流の変化および電源電圧の変化と同様である。
【０１００】
図１１は、図９に示した制御部２００ｂおよび処理部１００ｂの動作の例を示す。図６と同様の動作については、詳細な説明は省略する。
【０１０１】
例えば、制御部２００ｂは、イネーブル信号ＥＮ２、ＥＮ３、ＥＮ４、ＥＮ５を活性化レベル（ハイレベルＨ）に設定する。制御部２００ｂは、制御信号ＩＮＳＴＳを４番目のクロックＣＬＫに同期してハイレベルに活性化し、１０番目のクロックＣＬＫに同期してロウレベルに非活性化する。制御部２００ｂは、演算部ＯＰの動作を制御する制御信号ＡＬＵＯＰ（ＯＰ）を、実行する命令に応じてクロックサイクル毎に出力する。制御信号ＰＣＥＮ、ＥＮ１の波形は、図６に示した波形と同様である。
【０１０２】
図９に示したセレクタＳＥＬ３は、制御信号ＩＮＳＴＳの活性化期間である５番目から１０番目のクロックサイクルに、命令デコーダＩＤに命令コードＮＯＰを供給する。ラッチＬＴ２は、５番目から１０番目のクロックサイクルの各々において、命令デコーダＩＤによりデコードされた命令ＮＯＰをラッチし、ラッチした命令ＮＯＰを出力する。
【０１０３】
ラッチＬＴ３、ＬＴ４、ＬＴ５は、ラッチＬＴ２がラッチした命令ＮＯＰに対応する値を順次にラッチし、ラッチした命令ＮＯＰを出力する。そして、演算部ＯＰは、６番目から１１番目のクロックサイクルの各々において、命令ＮＯＰを実行する。ラッチＬＴ２以降の回路において、命令ＮＯＰにより実行が停止された命令ＯＰｘ（７）に対応する処理は、図６と同様に、１１番目のクロックサイクルから順次に実行される。これにより、命令ＯＰｙ（６）の次に命令ＯＰｘ（７）を実行するタイミングの間隔である周期は、図１０に示したように、例えば、周期ＴＲＥＳの１．５倍に設定される。
【０１０４】
なお、制御部２００ｂの処理フローは、図７に示したフローと同様である。但し、この実施形態では、図７のステップＳ１１４において、命令ＮＯＰが共振周波数の周期ＴＲＥＳの半分に相当する期間挿入される。
【０１０５】
以上、この実施形態においても、図１に示した実施形態と同様に、電源電圧の共振現象の発生を抑制でき、半導体装置ＳＤ２を安定して動作させることができる。また、図２から図７に示した実施形態と同様に、命令デコーダＰＩＤにより、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳと等しくなることを早く判定することができ、命令ＯＰｙと命令ＯＰｘとの切り替わりタイミングで命令ＮＯＰを挿入することができる。この結果、消費電力が小さい命令ＯＰｙと消費電力が大きい命令ＯＰｘとが繰り返される頻度を、命令デコーダＰＩＤからの出力により判定する場合に比べて下げることができ、電源電圧の変動を抑制できる。
【０１０６】
図１２は、半導体装置の別の実施形態を示す。図１から図７および図９から図１１で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
【０１０７】
この実施形態の半導体装置ＳＤ３は、図９に示した処理部１００ｂと同様の処理部１００ｂを有する。但し、処理部１００ｂのセレクタＳＥＬ３は、図９に示した命令コードＮＯＰの代わりにダミー命令コードＤＭＹを受ける。処理部１００ｂのその他の構成は、図９に示した処理部１００ｂと同様である。制御部２００ｂは、図９に示した制御部２００ｂと同様である。
【０１０８】
セレクタＳＥＬ３は、論理１の制御信号ＩＮＳＴＳを受けた場合に、ダミー命令コードＤＭＹを命令デコーダＩＤに出力し、論理０の制御信号ＩＮＳＴＳを受けた場合に、ラッチＬＴ１からの命令コードを命令デコーダＩＤに出力する。
【０１０９】
図１３は、図１２に示した半導体装置ＳＤ３の動作の例を示す。図４および図１０と同じ要素については、詳細な説明は省略する。図１３の上側の波形は、図４の上側の波形と同様である。例えば、図１３の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【０１１０】
図１３の中央の波形および図１３の下側の波形では、図１０に示した命令ＮＯＰの代わりにダミー命令ＤＭＹが挿入される。そして、信号生成部ＳＧＥＮｂは、命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔である周期を、例えば、周期ＴＲＥＳの１．５倍に設定する。
【０１１１】
例えば、ダミー命令ＤＭＹは、命令ＯＰｙと同様の電力を消費する命令であり、処理部１００ｂが実行する処理（すなわち、半導体装置ＳＤ３のシステムとしての動作）に影響を与えない命令である。このため、命令ＯＰｙの次にダミー命令ＤＭＹが実行される場合、電源電流は変化せず、電源電圧の変化は、図１０の命令ＮＯＰの実行時に比べて小さい。これにより、共振によって電源電圧の変動量が増幅する程度を、図１０に比べて小さくすることができる。
【０１１２】
図１４は、図１２に示した制御部２００ｂおよび処理部１００ｂの動作の例を示す。図６および図１１と同様の動作については、詳細な説明は省略する。図１２に示した制御部２００ｂが生成する制御信号ＰＣＥＮ、ＩＮＳＴＳおよびイネーブル信号ＥＮ１、ＥＮ２、ＥＮ３、ＥＮ４、ＥＮ５の波形は、図１１に示した波形と同様である。
【０１１３】
図１２に示したセレクタＳＥＬ３は、制御信号ＩＮＳＴＳの活性化期間である５番目から１０番目のクロックサイクルに、命令デコーダＩＤにダミー命令コードＤＭＹを供給する。ラッチＬＴ２は、５番目から１０番目のクロックサイクルの各々において、命令デコーダＩＤによりデコードされたダミー命令ＤＭＹをラッチして出力する。
【０１１４】
ラッチＬＴ３、ＬＴ４、ＬＴ５は、ラッチＬＴ２がラッチしたダミー命令ＤＭＹに対応する値を順次にラッチし、ラッチしたダミー命令ＤＭＹを出力する。そして、演算部ＯＰは、６番目から１１番目のクロックサイクルの各々において、ダミー命令ＤＭＹを実行する。これにより、図１１と同様に、命令ＯＰｙ（６）の次に命令ＯＰｘ（７）を実行するタイミングの間隔である周期は、周期ＴＲＥＳの１．５倍に設定される。
【０１１５】
なお、制御部２００ｂの処理フローは、図７に示したフローと同様である。但し、この実施形態では、図７のステップＳ１１４において、ダミー命令ＤＭＹが共振周波数の周期ＴＲＥＳの半分に相当する期間挿入される。
【０１１６】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ３を安定して動作させることができる。また、図２から図７、図９から図１１に示した実施形態と同様に、消費電力が小さい命令ＯＰｙと消費電力が大きい命令ＯＰｘが繰り返される頻度を、命令デコーダＰＩＤからの出力により判定する場合に比べて下げることができ、電源電圧の変動を抑制できる。さらに、命令ＯＰｙと同様の電力を消費するダミー命令ＤＭＹを挿入することにより、図４および図１０に比べて、電源電流の変動を抑制でき、電源電圧の変動を抑制できる。
【０１１７】
図１５は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置ＳＤ４は、図２に示した制御部２００ａの代わり制御部２００ｃを有する。
【０１１８】
制御部２００ｃは、図２に示した信号生成部ＳＧＥＮａの代わりに信号生成部ＳＧＥＮｃを有する。信号生成部ＳＧＥＮｃは、制御信号ＤＬＹに応答して、命令ＯＰｘの実行を一時的に停止する代わりに、命令ＯＰｘの動作レートを命令ＯＰｙの動作レートに比べて低くする制御信号ＣＮＴ（図１７に示すＰＣＥＮ、ＥＮ１−ＥＮ５等）を出力する。すなわち、信号生成部ＳＧＥＮｃは、処理部１００ａが実行する命令ＯＰｘの動作レートを命令ＯＰｙの動作レートに比べて低くする指示を処理部１００ａに発行する。制御信号ＣＮＴは、イネーブル信号ＰＣＥＮ、ＥＮ１−ＥＮ５および制御信号ＲＥＧＣＮＴ、ＡＬＵＯＰ、ＤＣＣＮＴを含む。制御部２００ｃのその他の構成は、図２に示した制御部２００ａと同様である。
【０１１９】
図１６は、図１５に示した半導体装置ＳＤ４の動作の例を示す。図４と同じ要素については、詳細な説明は省略する。図１６の上側の波形は、図４の上側の波形と同様である。例えば、図１６の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【０１２０】
図１６の中央の波形および図１６の下側の波形では、図４に示した命令を実行しないサイクルＮＯＰの代わりに命令ＯＰｘの動作レートが図４の命令ＯＰｘの動作レートに比べて低くされる。動作レートは、命令ＯＰｘの次に命令ＯＰｙが実行されるときに戻される。これにより、命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔である周期を、共振周波数の周期ＴＲＥＳに対してずらすことができる。制御部２００ｃの判定部ＪＤＧａは、動作レートを戻した後に、命令ＯＰｙの次に命令ＯＰｘの実行が開始される時刻を時刻Ｔ０として記憶する。
【０１２１】
例えば、動作レートが低くされた命令ＯＰｘの実行により流れる電源電流は、命令ＯＰｘの実行により流れる電源電流より少なく、命令ＯＰｙの実行により流れる電源電流より多い。また、動作レートが低くされた命令ＯＰｘの実行中、電源電圧の変動は、図４および図１０に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図４および図１０に比べて小さくすることができる。
【０１２２】
図１７は、図１５に示した制御部２００ｃおよび処理部１００ａの動作の例を示す。図６と同様の動作については、詳細な説明は省略する。
【０１２３】
この例では、信号生成部ＳＧＥＮａは、４番目、６番目、８番目、１０番目、１２番目、１４番目のクロックＣＬＫに同期して、制御信号ＰＣＥＮおよびイネーブル信号ＥＮ１、ＥＮ２を非活性化レベル（ロウレベル）に設定する。また、信号生成部ＳＧＥＮａは、５番目、７番目、１１番目、１３番目、１５番目、１７番目のクロックＣＬＫに同期して、イネーブル信号ＥＮ３を非活性化レベル（ロウレベル）に設定する。信号生成部ＳＧＥＮａは、６番目、８番目、１０番目、１２番目、１４番目、１６番目のクロックＣＬＫに同期して、イネーブル信号ＥＮ４を非活性化レベル（ロウレベル）に設定する。信号生成部ＳＧＥＮａは、７番目、９番目、１１番目、１３番目、１５番目、１７番目のクロックＣＬＫに同期して、イネーブル信号ＥＮ５を非活性化レベル（ロウレベル）に設定する。また、信号生成部ＳＧＥＮａは、５番目、７番目、１１番目、１３番目、１５番目、１７番目のクロックＣＬＫに同期して、演算部ＯＰの動作を禁止する制御信号ＡＬＵＯＰ（ＤＩＳ）を出力する。
【０１２４】
ラッチＬＴ１−ＬＴ５は、対応するイネーブル信号ＥＮ１−ＥＮ５を受けて、動作レートが低くなる期間に、ラッチ動作を２クロックサイクルに１回実行する。なお、半導体装置ＳＤ４は、パイプライン構造を有するため、動作レートを低くする期間は、ステージ毎に順にずれる。そして、図１７に示した波形により、図１６に示した動作が実現される。なお、半導体装置ＳＤ５が処理部１００ａの処理能力を変更するスロットリング機能を有する場合、信号生成部ＳＧＥＮａは、スロットリング制御に応じて、制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５）を非活性化レベルに設定してもよい。
【０１２５】
図１８は、図１５に示した制御部２００ｄの処理の例を示す。図７と同様の処理については、詳細な説明は省略する。この実施形態では、図７に示したステップＳ１１４、Ｓ１１６、Ｓ１１８の代わりにステップＳ１２０、Ｓ１２２、Ｓ１２４が実行される。ステップＳ１００からステップＳ１１２の処理は、図７に示した処理と同様である。
【０１２６】
周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しい場合、ステップＳ１２０において、制御部は、命令ＯＰｘの動作レートを低くする制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５、ＡＬＵＯＰ）を出力する。次に、ステップＳ１２２において、制御部は、命令ＯＰｘの次に実行する命令ＯＰｙの動作レートを元に戻す制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５、ＡＬＵＯＰ）を出力する。ステップＳ１２２の後、処理はステップＳ１０２に移行される。
【０１２７】
一方、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳと異なる場合、ステップＳ１２４において、制御部は、命令デコーダＰＩＤから命令ＯＰｘの次に実行される命令ＯＰｙを受けるのを待つ。ステップＳ１２４の後、処理は、ステップＳ１０２に移行される。
【０１２８】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ４を安定して動作させることができる。また、図２から図７に示した実施形態と同様に、動作レートを下げる制御回路を処理部１００ａに追加することなく、制御部２００ａによる制御により、命令ＯＰｙと命令ＯＰｘとの切り替わりタイミングでサイクルＮＯＰを挿入することができる。このため、処理部１００ａに制御回路を追加する場合に比べて設計期間を短縮することができる。
【０１２９】
さらに、動作レートが低くされた命令ＯＰｘの実行中、電源電圧の変動は、図４および図１０に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図４および図１０に比べて小さくすることができる。
【０１３０】
図１９は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置ＳＤ５は、図２に示した制御部２００ａの代わりに制御部２００ｅを有する。また、半導体装置ＳＤ５は、クロック生成部３００ｅを有する。処理部１００ａは、図２および図３と同一または同様である。
【０１３１】
クロック生成部３００ｅは、発振回路ＰＬＬ（Phase Locked Loop）および分周回路１／Ｎを有する。例えば、発振回路ＰＬＬは、内蔵する発振器により生成するクロックの周波数を制御信号ＰＣＮＴに応じて変更し、クロックＣＬＫ０として出力する。分周回路１／Ｎは、クロックＣＬＫ０の周波数を制御部２００ｅからの制御信号ＮＤＩＶに応じて分周し、クロックＣＬＫとして出力する。例えば、制御信号ＮＤＩＶは、複数ビットの信号である。
【０１３２】
制御部２００ｅは、図２に示した判定部ＪＤＧａの代わりに判定部ＪＤＧｅを有し、図２に示した信号生成部ＳＧＥＮａの代わりに信号生成部ＳＧＥＮｅを有する。
【０１３３】
判定部ＪＤＧｅの機能は、制御信号ＤＬＹの代わりに制御信号ＮＤＩＶを出力することを除き、図２に示した判定部ＪＤＧａと同様である。判定部ＪＤＧｅは、命令ＯＰｙの次に命令ＯＰｘが実行されるタイミングの周期（繰り返し周期）が、共振周波数の周期ＴＲＥＳに等しい場合、制御信号ＮＤＩＶの値を変更し、クロック生成部３００ｅにクロックＣＬＫの周波数を低くさせる。すなわち、制御部２００ｅは、処理部１００ａが実行する命令ＯＰｘのクロック周波数を低くする指示をクロック生成部３００ｅに発行する。
【０１３４】
例えば、判定部ＪＤＧｅは、命令ＯＰｙの次に命令ＯＰｘが実行されるタイミングの周期が、周期ＴＲＥＳの７５％より大きく、周期ＴＲＥＳの１２５％より小さい場合に、繰り返し周期が周期ＴＲＥＳに等しいと判断する。この場合、判定部ＪＤＧｅは、制御信号ＮＤＩＶの値を変更せずに維持する。
【０１３５】
信号生成部ＳＧＥＮｅは、判定部ＪＤＧｅからの制御を受けることなく、命令ＩＮＳに応じて制御信号ＣＮＴを生成することを除き、図２に示した信号生成部ＳＧＥＮａと同様の機能を有する。制御部２００ｅのその他の構成は、図２に示した制御部２００ａと同様である。
【０１３６】
図２０は、図１９に示した半導体装置ＳＤ５の動作の例を示す。図４および図１６と同様の波形については、詳細な説明は省略する。図２０の上側の波形は、図４の上側の波形と同様である。例えば、図２０の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【０１３７】
図１９に示した判定部ＪＤＧｅは、期間ＴＸ−Ｔ０が周期ＴＲＥＳに等しいと判定した場合、制御信号ＮＤＩＶを”１”から”２”に変更する。例えば、制御信号ＮＤＩＶの値は、分周回路１／Ｎの分周比を示す。この後、判定部ＪＤＧｅは、ラッチＬＴ７を介して命令デコーダＰＩＤから命令ＯＰｙを受けたときに、制御信号ＮＤＩＶを”２”から”１”に戻す。なお、判定部ＪＤＧｅは、制御信号ＮＤＩＶによりクロックＣＬＫの周波数を戻した後に、命令ＯＰｙの次に命令ＯＰｘの実行が開始される時刻Ｔ０を記憶する。
【０１３８】
図１９に示したクロック生成部３００ｅは、制御信号ＮＤＩＶが”２”に設定される期間に、クロックＣＬＫの周波数を半分にする。信号生成部ＳＧＥＮｅは、クロック生成部３００ｅからのクロックＣＬＫを受け、動作速度を半減する。これにより、命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔である周期を、共振周波数の周期ＴＲＥＳに対してずらすことができる。
【０１３９】
また、図２０の中央の波形および図２０の下側の波形に示すように、各命令ＯＰｘの実行サイクルは、制御信号ＮＤＩＶが”２”に設定される期間に延ばされる。このため、命令ＯＰｘにより消費される電力は、クロックＣＬＫの周波数が高い場合に比べて削減される。
【０１４０】
制御信号ＮＤＩＶが”１”に設定される期間に、命令ＯＰｘの実行により流れる電源電流の波形および電源電圧の波形は、図１６に示した電源電流の波形および電源電圧の波形と同様である。電源電圧の変動は、図４および図１０に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図４および図１０に比べて小さくすることができる。
【０１４１】
図２１は、図１９に示した制御部２００ｅおよび処理部１００ａの動作の例を示す。図６および図１７と同様の動作については、詳細な説明は省略する。
【０１４２】
この例では、信号生成部ＳＧＥＮｅは、判定部ＪＤＧｅによる制御を受けないため、判定部ＪＤＧｅの判定にかかわらず、制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５）を活性化レベル（ハイレベルＨ）に維持する。
【０１４３】
判定部ＪＤＧｅは、命令デコーダＰＩＤがデコードした命令ＯＰｘ（７）を、ラッチＬＴ７を介して４番目のクロックサイクルで受ける。そして、判定部ＪＤＧｅは、図２０に示した周期ＴＸ−Ｔ０が周期ＴＲＥＳに等しいと判定し、制御信号ＮＤＩＶを”１”から”２”に変更する。図１９に示したクロック生成部３００ｅは、制御信号ＮＤＩＶの”１”から”２”への変化に基づいて、５番目のクロックサイクルから、クロックＣＬＫの周波数を半減させる。そして、処理部１００ａは、クロックＣＬＫの周波数に応じた速度で動作する。
【０１４４】
なお、制御部２００ｅの処理フローは、図１８に示したフローと同様である。但し、図１８のステップＳ１２０の処理の代わりに、クロックＣＬＫの周波数を半減する処理が実行され、ステップＳ１２２の処理の代わりに、クロックＣＬＫの周波数を元に戻す処理が実行される。
【０１４５】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ５を安定して動作させることができる。また、図２から図７に示した実施形態と同様に、制御部２００ｅによる制御により、命令ＯＰｙと命令ＯＰｘとの切り替わりタイミングで、クロック周波数の変更に基づいて動作レートを変更できる。このため、処理部１００ａに制御回路を追加する場合に比べて設計期間を短縮することができる。さらに、図１５から図１８に示した実施形態と同様に、クロックＣＬＫの周波数が低くされた命令ＯＰｘの実行中、電源電圧の変動は、図４および図１０に比べて小さくなる。このため、電源電圧の変動量が共振により増幅する程度を、図４および図１０に比べて小さくすることができる。
【０１４６】
図２２は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置ＳＤ６は、図２に示した制御部２００ａの代わりに制御部２００ｆを有する。処理部１００ａは、命令キャッシュＩＣから出力される命令コードＩＮＳＣを制御部２００ｆに出力しないことを除き、図２および図３に示した処理部１００ａと同様である。
【０１４７】
制御部２００ｆは、図２に示した命令デコーダＰＩＤを持たないことを除き、図２に示した制御部２００ａと同様である。ラッチＬＴ７およびルックアップテーブルＬＵＴは、処理部１００ａの命令デコーダＩＤから出力される命令ＩＮＳを受けて動作する。このため、判定部ＪＤＧａは、図２に比べて、１クロックサイクル遅く判定動作を実行する。
【０１４８】
図２３は、図２２に示した半導体装置ＳＤ６の動作の例を示す。図４と同じ要素については、詳細な説明は省略する。図２３の上側の波形は、図４の上側の波形と同様である。例えば、図２３の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【０１４９】
判定部ＪＤＧａは、周期ＴＸ−Ｔ０が周期ＴＲＥＳに等しいと判定した場合、制御信号ＤＬＹを出力し、信号生成部ＳＧＥＮａに、命令を実行しないサイクルＮＯＰ（No OPeration）を周期ＴＲＥＳの０．５倍の期間挿入させる。これより、例えば、ラッチＬＴ２は、命令ＯＰｘ（７）をラッチした後、時刻ＴＸｄから０．５ＴＲＥＳの期間ラッチ動作を停止し、時刻Ｔ１から命令ＯＰｘ（８）、ＯＰｘ（９）、ＯＰｘ（１０）、ＯＰｘ（１１）、ＯＰｘ（１２）を順次にラッチする。なお、命令ＯＰｙ、ＯＰｘ末尾に付けた括弧付きの数値は、図２４に示す命令に対応し、括弧内の数値は、命令ＯＰｙ、ＯＰｘの実行順を示す。
【０１５０】
この実施形態では、判定部ＪＤＧａは、ラッチＬＴ２から出力されるタイミングと同じタイミングで、命令デコーダＩＤによりデコードされた命令をラッチＬＴ７から受け、図４に比べて、１クロックサイクル遅く判定動作を実行する。これにより、判定部ＪＤＧａは、実際に実行される命令に対する判定動作を実行可能になる。例えば、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。これに対して、サイクルＮＯＰを命令ＯＰｘの前に挿入する判定がされた後に、分岐により命令ＯＰｘではなく命令ＯＰｙが実行される場合、判定結果は誤りとなり、無駄なサイクルＮＯＰが挿入されるおそれがある。
【０１５１】
図２４は、図２２に示した制御部２００ｆおよび処理部１００ａの動作の例を示す。図６と同様の動作については、詳細な説明は省略する。この実施形態では、判定部ＪＤＧａは、命令デコーダＩＤがデコードした命令ＯＰｘ（７）を、ラッチＬＴ７を介して５番目のクロックサイクルで受ける。判定部ＪＤＧａが各クロックサイクルで受ける命令は、ラッチＬＴ２から出力される命令と同じである。
【０１５２】
判定部ＪＤＧａは、図２３に示した周期ＴＸ−Ｔ０が周期ＴＲＥＳに等しいことを判定した場合に、制御信号ＤＬＹを信号生成部ＳＧＥＮａに出力する。信号生成部ＳＧＥＮａは、制御信号ＤＬＹに応答して、６番目のクロックサイクルに制御信号ＡＬＵＯＰ（ＤＩＳ）を出力する。例えば、制御信号ＡＬＵＯＰ（ＤＩＳ）の出力期間は、共振周波数の周期ＴＲＥＳの半分に相当する６クロックサイクルである。
【０１５３】
信号生成部ＳＧＥＮａが出力するイネーブル信号ＰＣＥＮ、ＥＮ１−ＥＮ５の非活性化タイミングおよび制御信号ＡＬＵＯＰ（ＤＩＳ）の出力タイミングは、図６に比べて１クロックサイクル遅くなる。これにより、ラッチＬＴ１−ＬＴ５がラッチ動作を停止するタイミングは、図６に比べて１クロックサイクル遅くなる。このため、ラッチＬＴ１−ＬＴ５は、動作が停止される前のクロックサイクルで、命令ＯＰｘ（７）をラッチする。このため、演算部ＯＰは、制御信号ＡＬＵＯＰ（ＤＩＳ）により動作が停止される前に、命令ＯＰｘ（７）を実行する。ラッチＬＴ２以降の回路において、実行が遅らされた命令ＯＰｘ（８）に対応する処理は、イネーブル信号ＥＮ２がハイレベルに変化した後の１２番目のクロックサイクルから順次に実行される。
【０１５４】
図２５は、図２２に示した制御部２００ｆの処理の例を示す。図７と同様の処理については、詳細な説明は省略する。この実施形態では、図７に示したステップＳ１１４、Ｓ１１６の代わりにステップＳ１３０、Ｓ１３２が実行される。ステップＳ１００からステップＳ１１２の処理およびステップＳ１１８の処理は、図７に示した処理と同様である。
【０１５５】
周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しい場合、ステップＳ１３０において、制御部２００ｆは、０．５ＴＲＥＳの期間、処理部１００の動作を停止する。すなわち、制御部２００ｆは、処理部１００の動作を停止する制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５、ＡＬＵＯＰ）を出力する。次に、ステップＳ１３２において、制御部２００ｆは、処理部１００の動作を再開する時刻Ｔ０を記憶する。ステップＳ１３２の後、処理はステップＳ１０６に移行される。
【０１５６】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ６を安定して動作させることができる。さらに、サイクルＮＯＰを命令ＯＰｘの前に挿入するか否かの判定を、実際に実行される命令に対して行うことができるため、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。また、制御部２００ｆに命令デコーダＰＩＤを配置しないため、命令デコーダＰＩＤを配置する場合に比べて、半導体装置ＳＤ６の回路規模を小さくできる。
【０１５７】
図２６は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７、図９から図１１に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置ＳＤ７は、図９に示した制御部２００ｂの代わりに制御部２００ｇを有する。
【０１５８】
処理部１００ｂは、命令キャッシュＩＣから出力される命令コードＩＮＳＣを制御部２００ｇに出力しないことを除き、図９に示した処理部１００ｂと同様である。すなわち、処理部１００ｂは、制御信号ＩＮＳＴＳに応じて、命令コードＮＯＰを命令デコーダＩＤの入力端子ＤＩに出力するセレクタＳＥＬ３を有する。
【０１５９】
制御部２００ｇは、図２に示した命令デコーダＰＩＤを持たないことを除き、図９に示した制御部２００ｂと同様である。すなわち、制御部２００ｇは、判定部ＪＤＧａからの制御信号ＤＬＹに応じて、制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５、ＲＥＧＣＮＴ、ＡＬＵＯＰ、ＤＣＣＮＴ）および制御信号ＩＮＳＴＳを生成する信号生成部ＳＧＥＮｂを有する。
【０１６０】
図２７は、図２６に示した制御部２００ｇおよび処理部１００ｂの動作の例を示す。図６および図１１と同様の動作については、詳細な説明は省略する。制御部２００ｇの信号生成部ＳＧＥＮｂは、イネーブル信号ＰＣＥＮ、ＥＮ１の非活性化タイミングを、図１１に比べて１クロックサイクル遅くする。これにより、ラッチＬＴ１がラッチ動作を停止するタイミングは、図１１に比べて１クロックサイクル遅くなる。
【０１６１】
また、制御部２００ｇの信号生成部ＳＧＥＮｂは、イネーブル信号ＥＮ２、ＥＮ３、ＥＮ４、ＥＮ５を活性化レベル（ハイレベルＨ）に設定し、制御信号ＩＮＳＴＳを５番目のクロックＣＬＫに同期してハイレベルに活性化し、１１番目のクロックＣＬＫに同期してロウレベルに非活性化する。制御信号ＩＮＳＴＳの活性化期間は、図１１に比べて１クロックサイクル遅くなる。
【０１６２】
ラッチＬＴ２は、６番目から１１番目のクロックサイクルの各々において、命令デコーダＩＤによりデコードされた命令ＮＯＰをラッチし、ラッチした命令ＮＯＰを出力する。ラッチＬＴ３、ＬＴ４、ＬＴ５は、ラッチＬＴ２がラッチした命令ＮＯＰに対応する値を順次にラッチし、ラッチした値を出力する。
【０１６３】
ラッチＬＴ１−ＬＴ５による命令ＮＯＰのラッチは、図１１に比べて１クロックサイクル遅れるため、ラッチＬＴ１−ＬＴ５は、命令ＮＯＰをラッチする前のクロックサイクルで、命令ＯＰｘ（７）をラッチする。このため、演算部ＯＰは、最初の命令ＮＯＰを実行する前に、命令ＯＰｘ（７）を実行する。そして、演算部ＯＰは、７番目から１２番目のクロックサイクルの各々において、命令ＮＯＰを実行する。ラッチＬＴ２以降の回路において、命令ＮＯＰにより実行が遅らされた命令ＯＰｘ（８）に対応する処理は、１２番目のクロックサイクルから順次に実行される。
【０１６４】
なお、制御部２００ｇの処理フローは、図２５に示したフローと同様である。但し、この実施形態では、図２５のステップＳ１３０において、命令ＮＯＰが共振周波数の周期ＴＲＥＳの半分に相当する期間挿入される。
【０１６５】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ７を安定して動作させることができる。また、図２２から図２５に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部２００ｇに命令デコーダＰＩＤを配置しないため、命令デコーダＰＩＤを配置する場合に比べて、半導体装置ＳＤ７の回路規模を小さくできる。
【０１６６】
図２８は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７に示した実施形態および図１２から図１４に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
【０１６７】
この実施形態の半導体装置ＳＤ８は、図１２に示した制御部２００ｂの代わりに制御部２００ｇを有する。処理部１００ｂは、命令キャッシュＩＣから出力される命令コードＩＮＳＣを制御部２００ｇに出力しないことを除き、図１２に示した処理部１００ｂと同様である。すなわち、処理部１００ｂのセレクタＳＥＬ３は、命令コードＮＯＰの代わりにダミー命令コードＤＭＹを受ける。
【０１６８】
制御部２００ｇは、図２６に示した制御部２００ｇと同様である。すなわち、制御部２００ｇは、判定部ＪＤＧａからの制御信号ＤＬＹに応じて、制御信号ＣＮＴ（ＰＣＥＮ、ＥＮ１−ＥＮ５、ＲＥＧＣＮＴ、ＡＬＵＯＰ、ＤＣＣＮＴ）および制御信号ＩＮＳＴＳを生成する信号生成部ＳＧＥＮｂを有する。
【０１６９】
図２９は、図２８に示した半導体装置ＳＤ８の動作の例を示す。図４、図１３および図２３と同じ要素については、詳細な説明は省略する。図２９の上側の波形は、図４の上側の波形と同様である。例えば、図２９の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【０１７０】
この実施形態では、判定部ＪＤＧａは、図１３に比べて、１クロックサイクル遅く判定動作を実行する。このため、ラッチＬＴ２が命令ＯＰｙの次の命令ＯＰｘを出力した後に、判定部ＪＤＧは、命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔である周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しいと判定する。
【０１７１】
判定部ＪＤＧは、周期ＴＸ−Ｔ０が周期ＴＲＥＳに等しいと判定した場合、制御信号ＤＬＹを出力し、信号生成部ＳＧＥＮｂに、ダミー命令ＤＭＹを周期ＴＲＥＳの０．５倍の期間挿入させる。これより、例えば、ラッチＬＴ２は、命令ＯＰｘ（７）をラッチした後、時刻ＴＸｄから０．５ＴＲＥＳの期間ラッチ動作を停止し、時刻Ｔ１から命令ＯＰｘ（８）、ＯＰｘ（９）、ＯＰｘ（１０）、ＯＰｘ（１１）、ＯＰｘ（１２）のラッチを開始する。なお、命令ＯＰｙ、ＯＰｘの末尾に付けた括弧付きの数値は、図３０に示す命令に対応し、括弧内の数値は、命令ＯＰｙ、ＯＰｘの実行順を示す。
【０１７２】
図３０は、図２８に示した制御部２００ｇおよび処理部１００ｂの動作の例を示す。図６、図１３、図２４と同様の動作については、詳細な説明は省略する。制御部２００ｇの信号生成部ＳＧＥＮｂは、イネーブル信号ＰＣＥＮ、ＥＮ１の非活性化期間を、図１３に比べて１クロックサイクル遅くする。これにより、ラッチＬＴ１がラッチ動作を停止するタイミングは、図１３に比べて１クロックサイクル遅くなる。
【０１７３】
また、信号生成部ＳＧＥＮｂは、イネーブル信号ＥＮ２、ＥＮ３、ＥＮ４、ＥＮ５を活性化レベル（ハイレベルＨ）に設定する。信号生成部ＳＧＥＮｂは、制御信号ＩＮＳＴＳを５番目のクロックＣＬＫに同期してハイレベルに活性化し、１１番目のクロックＣＬＫに同期してロウレベルに非活性化する。制御信号ＩＮＳＴＳの活性化期間は、図１３に比べて１クロックサイクル遅くなる。
【０１７４】
ラッチＬＴ２は、６番目から１１番目のクロックサイクルの各々において、命令デコーダＩＤによりデコードされたダミー命令ＤＭＹをラッチし、ラッチしたダミー命令ＤＭＹを出力する。ラッチＬＴ３、ＬＴ４、ＬＴ５は、ラッチＬＴ２がラッチしたダミー命令ＤＭＹに対応する値を順次にラッチし、ラッチした値を出力する。
【０１７５】
図２７と同様に、ラッチＬＴ１−ＬＴ５によるダミー命令ＤＭＹのラッチは、図１３に比べて１クロックサイクル遅れるため、ラッチＬＴ１−ＬＴ５は、ダミー命令ＤＭＹをラッチする前のクロックサイクルで、命令ＯＰｘ（７）をラッチする。このため、演算部ＯＰは、最初のダミー命令ＤＭＹを実行する前に、命令ＯＰｘ（７）を実行する。そして、演算部ＯＰは、７番目から１２番目のクロックサイクルの各々において、ダミー命令ＤＭＹを実行する。ラッチＬＴ２以降の回路において、ダミー命令ＤＭＹにより実行が遅らされた命令ＯＰｘ（８）に対応する処理は、１２番目のクロックサイクルから順次に実行される。
【０１７６】
なお、制御部２００ｇの処理フローは、図２５に示したフローと同様である。但し、この実施形態では、図２５のステップＳ１３０において、ダミー命令ＤＭＹが共振周波数の周期ＴＲＥＳの半分に相当する期間挿入される。
【０１７７】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ８を安定して動作させることができる。また、図１２から図１４に示した実施形態と同様に、命令ＯＰｙと同様の電力を消費するダミー命令ＤＭＹを挿入することにより、図４および図１０に比べて、電源電流の変動を抑制でき、電源電圧の変動を抑制できる。さらに、図２２から図２７に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部２００ｇに命令デコーダＰＩＤを配置しないため、命令デコーダＰＩＤを配置する場合に比べて、半導体装置ＳＤ８の回路規模を小さくできる。
【０１７８】
図３１は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７、図１５から図１７、図２２から図２５に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置ＳＤ９は、図２２に示した制御部２００ｆの代わり制御部２００ｉを有する。
【０１７９】
制御部２００ｉは、図２２に示した信号生成部ＳＧＥＮａの代わりに、図１５に示した信号生成部ＳＧＥＮｃを有する。信号生成部ＳＧＥＮｃは、判定部ＪＤＧａからの制御信号ＤＬＹに応答して、命令ＯＰｘの実行を一時的に停止する代わりに、命令ＯＰｘの動作レートを命令ＯＰｙの動作レートに比べて低くする制御信号ＣＮＴを出力する。制御部２００ｉのその他の構成は、命令デコーダＰＩＤを持たないことを除き、図１５に示した制御部２００ｃと同様である。
【０１８０】
図３２は、図３１に示した半導体装置ＳＤ９の動作の例を示す。図４および図１６と同じ要素については、詳細な説明は省略する。図３２の上側の波形は、図４の上側の波形と同様である。例えば、図３２の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【０１８１】
制御部２００ｉの信号生成部ＳＧＥＮｃは、図１６と同様に、判定部ＪＤＧａからの制御信号ＤＬＹに応答して、命令ＯＰｘの実行を一時的に停止する代わりに、命令ＯＰｘの動作レートを命令ＯＰｙの動作レートに比べて低くする制御信号ＣＮＴを出力する。
【０１８２】
この実施形態では、判定部ＪＤＧａは、図１６に比べて、１クロックサイクル遅く判定動作を実行する。このため、ラッチＬＴ２が命令ＯＰｙの次の命令ＯＰｘを出力した後に、判定部ＪＤＧａは、命令ＯＰｙの次に命令ＯＰｘを実行するタイミングの間隔である周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しいと判定する。
【０１８３】
また、この実施形態では、図１６と同様に、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しいと判定された後、命令ＯＰｘの動作レートは、命令ＯＰｙの動作レートに比べて低くされる。動作レートは、命令ＯＰｘの次に命令ＯＰｙが実行されるときに戻される。
【０１８４】
この実施形態では、制御部２００ｉの判定部ＪＤＧａは、動作レートを戻した後に、命令ＯＰｙの次に命令ＯＰｘの実行が開始される時刻Ｔ０を記憶する。図３１の下側の波形による動作時の電源電流および電源電圧は、図１６に示した電源電流および電源電圧と同様である。
【０１８５】
図３３は、図３１に示した制御部２００ｉおよび処理部１００ａの動作の例を示す。図６および図１７と同様の動作については、詳細な説明は省略する。
【０１８６】
この実施形態では、イネーブル信号ＰＣＥＮ、ＥＮ１−ＥＮ５が非活性化されるクロックサイクルは、図１７に比べて１クロックサイクル遅くなる。これにより、ラッチＬＴ１−ＬＴ５がラッチ動作を停止するクロックサイクルは、図１７に比べて１クロックサイクル遅くなる。ラッチＬＴ１は、動作レートが低くなる前に、命令ＯＰｘ（７）をラッチする。
【０１８７】
なお、制御部２００ｉの処理フローは、図１８に示したフローと同様である。但し、この実施形態では、図１８に示したフローは、命令キャッシュＩＣから出力され、命令デコーダＰＩＤによりデコードされた命令に対してではなく、命令デコーダＩＤによりデコードされた命令に対して実行される。
【０１８８】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ９を安定して動作させることができる。また、図１５から図１８に示した実施形態と同様に、動作レートが低くされた命令ＯＰｘの実行中、電源電圧の変動は、図４および図１０に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図４および図１０に比べて小さくすることができる。
【０１８９】
さらに、図２２から図２７に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部２００ｇに命令デコーダＰＩＤを配置しないため、命令デコーダＰＩＤを配置する場合に比べて、半導体装置ＳＤ９の回路規模を小さくできる。
【０１９０】
図３４は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図１から図７、図１９から図２１に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置ＳＤ１０は、図１９に示した制御部２００ｅの代わりに制御部２００ｊを有する。また、半導体装置ＳＤ１０は、図１９と同様のクロック生成部３００ｅを有する。処理部１００ａは、命令キャッシュＩＣから出力される命令コードＩＮＳＣを制御部２００ｊに出力しないことを除き、図２および図３に示した処理部１００ａと同様である。
【０１９１】
制御部２００ｊは、図１９に示した命令デコーダＰＩＤを持たないことを除き、図１９に示した制御部２００ｅと同様である。ラッチＬＴ７およびルックアップテーブルＬＵＴは、処理部１００ａの命令デコーダＩＤから出力される命令ＩＮＳを受けて動作する。このため、判定部ＪＤＧｅは、図１９に比べて、１クロックサイクル遅く判定動作を実行する。
【０１９２】
図３５は、図３４に示した半導体装置ＳＤ１０の動作の例を示す。図４および図２０と同様の波形については、詳細な説明は省略する。図３５の上側の波形は、図４の上側の波形と同様である。例えば、図３５の波形は、ラッチＬＴ３から出力され、演算部ＯＰで実行される命令（実行ステージ）を示す。
【０１９３】
この実施形態では、判定部ＪＤＧｅは、図１９に比べて、１クロックサイクル遅く判定動作を実行するため、制御信号ＮＤＩＶが”２”を出力するタイミングは、図２０に比べて１命令分遅くなる。したがって、元のクロック周波数より低いクロック周波数で実行される命令は、周期ＴＸ−Ｔ０が共振周波数の周期ＴＲＥＳに等しいと判定された命令ＯＰｘの次の命令ＯＰｘになる。図３３の下側の波形による動作時の電源電流および電源電圧は、図２０に示した電源電流および電源電圧と同様である。
【０１９４】
図３６は、図３４に示した制御部２００ｊおよび処理部１００ａの動作の例を示す。図６および図２１と同様の動作については、詳細な説明は省略する。
【０１９５】
この実施形態では、制御信号ＮＤＩＶが”１”から”２”に変更されるタイミングは、図２１に比べて１クロックサイクル遅く、５番目のクロックサイクルである。このため、半導体装置ＳＤ１０は、６番目のクロックサイクルから動作周波数を低くする。その他の動作は、図２０に示した動作と同様である。
【０１９６】
なお、制御部２００ｊの処理フローは、図１８に示したフローと同様である。但し、図１８のステップＳ１２０の処理の代わりに、クロックＣＬＫの周波数を半減する処理が実行され、ステップＳ１２２の処理の代わりに、クロックＣＬＫの周波数を元に戻す処理が実行される。また、この実施形態では、図１８に示したフローは、命令キャッシュＩＣから出力され、命令デコーダＰＩＤによりデコードされた命令に対してではなく、命令デコーダＩＤによりデコードされた命令に対して実行される。
【０１９７】
以上、この実施形態においても、図１に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置ＳＤ１０を安定して動作させることができる。また、図１９から図２１に示した実施形態と同様に、クロックＣＬＫの周波数が低くされた命令ＯＰｘの実行中、電源電圧の変動は、図４および図１０に比べて小さくなる。このため、電源電圧の変動量が共振により増幅する程度を、図４および図１０に比べて小さくすることができる。
【０１９８】
さらに、図２２から図２７に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部２００ｉに命令デコーダＰＩＤを配置しないため、命令デコーダＰＩＤを配置する場合に比べて、半導体装置ＳＤ１０の回路規模を小さくできる。
【０１９９】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２００】
ＡＤＤ１、ＡＤＤ２…加算器；ＤＣ…データキャッシュ；ＩＣ…命令キャッシュ；ＩＤ…命令デコーダ；ＪＤＧａ、ＪＤＧｅ…判定部；ＬＴ１、ＬＴ２、ＬＴ３、ＬＴ４、ＬＴ５、ＬＴ６、ＬＴ７、ＬＴ８…ラッチ；ＬＵＴ…ルックアップテーブル；ＭＥＭ…メモリ；ＯＰ…演算部；ＰＣ…プログラムカウンタ；ＰＩＤ…命令デコーダ；ＲＥＧ…レジスタ部；ＳＤ、ＳＤ１、ＳＤ２、ＳＤ３、ＳＤ４、ＳＤ５、ＳＤ６、ＳＤ７、ＳＤ８、ＳＤ９、ＳＤ１０…半導体装置；ＳＥＬ１、ＳＥＬ２、ＳＥＬ３…セレクタ；ＳＧＥＮａ、ＳＧＥＮｂ、ＳＧＥＮｃ、ＳＧＥＮｅ…信号生成部；１００、１００ａ、１００ｂ、１００ｃ…処理部；２００、２００ａ、２００ｂ、２００ｄ、２００ｅ、２００ｆ、２００ｇ、２００ｉ、２００ｊ…制御部；３００ｅ…クロック生成部
【図１】
2014225195.tif 000003
【図２】
2014225195.tif 000004
【図３】
2014225195.tif 000005
【図４】
2014225195.tif 000006
【図５】
2014225195.tif 000007
【図６】
2014225195.tif 000008
【図７】
2014225195.tif 000009
【図８】
2014225195.tif 000010
【図９】
2014225195.tif 000011
【図１０】
2014225195.tif 000012
【図１１】
2014225195.tif 000013
【図１２】
2014225195.tif 000014
【図１３】
2014225195.tif 000015
【図１４】
2014225195.tif 000016
【図１５】
2014225195.tif 000017
【図１６】
2014225195.tif 000018
【図１７】
2014225195.tif 000019
【図１８】
2014225195.tif 000020
【図１９】
2014225195.tif 000021
【図２０】
2014225195.tif 000022
【図２１】
2014225195.tif 000023
【図２２】
2014225195.tif 000024
【図２３】
2014225195.tif 000025
【図２４】
2014225195.tif 000026
【図２５】
2014225195.tif 000027
【図２６】
2014225195.tif 000028
【図２７】
2014225195.tif 000029
【図２８】
2014225195.tif 000030
【図２９】
2014225195.tif 000031
【図３０】
2014225195.tif 000032
【図３１】
2014225195.tif 000033
【図３２】
2014225195.tif 000034
【図３３】
2014225195.tif 000035
【図３４】
2014225195.tif 000036
【図３５】
2014225195.tif 000037
【図３６】
2014225195.tif 000038