以下、図面を用いて実施形態を説明する。
図1は、半導体装置および半導体装置の制御方法の一実施形態を示す。半導体装置SDは、処理部100および制御部200を有する。処理部100は、命令OP1と、実行により消費される電力が命令OP1の実行により消費される電力より大きい命令OP2とを実行する。制御部200は、命令OP1の次に命令OP2を実行するタイミングの間隔である周期P1が、予め設定された周期P2に等しい場合に、命令OP1の後に実行される命令OP2の実行タイミングを遅延させる指示DLYを処理部100に発行する。例えば、制御部200は、周期P1が周期P2の含む所定の範囲に含まれる場合に、周期P1が周期P2に等しいと判断する。
例えば、周期P2は、半導体装置SDの電源網における共振周波数の周期である。処理部100が、消費電力の小さい命令OP1と消費電力の大きい命令OP2とが繰り返し実行する場合、繰り返しの周期P1が共振周波数の周期P2と一致する場合、電源電圧の共振現象が発生し、電源電圧の変動量(すなわち、電源ノイズ)が増幅される。これにより、半導体装置SDは正常に動作しなくなるおそれがある。
この実施形態では、周期P1が共振周波数の周期P2に等しい場合に、周期P1を周期P2に対してずらす処理が実行されるため、共振現象による電源電圧の変動を抑制でき、電源ノイズを抑制できる。この結果、半導体装置SDを安定して動作させることができ、半導体装置SDの信頼性を従来に比べて向上できる。
図2は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
例えば、この実施形態の半導体装置SD1は、プログラムを実行することで動作するCPU(Central Processing Unit)等のプロセッサを含む。例えば、図2は、半導体装置SD1のプロセッサのコア部分を示す。半導体装置SD1は、処理部100aおよび制御部200aを有する。処理部100aは、プログラムカウンタPC、命令キャッシュIC、命令デコーダID、レジスタ部REG、演算部OP、データキャッシュDCおよびラッチLT1、LT2、LT3、LT4、LT5を有する。図2では、プログラムカウンタPC、命令キャッシュIC、命令デコーダID、レジスタ部REG、演算部OPおよびデータキャッシュDCの接続関係を説明し、動作は図3で説明する。
プログラムカウンタPCの出力は、命令キャッシュICの入力に接続される。例えば、命令キャッシュICは、命令キャッシュIC用のキャッシュコントローラを介して命令メモリから受ける命令コードを保持し、保持した命令コードをプログラムカウンタPCからのアドレス値に応じて読み出し、命令コードINSCとして出力する。例えば、命令キャッシュIC用のキャッシュコントローラおよび命令メモリは、CPUコアの外部に配置される。命令キャッシュICから出力される命令コードINSCは、ラッチLT1の入力および命令デコーダPIDの入力に供給される。なお、命令キャッシュICの代わりに、命令メモリが配置されてもよい。
ラッチLT1は、命令キャッシュICから出力される命令コードINSCをクロックCLKに同期してラッチし、ラッチした命令コードINSCを命令デコーダIDの入力に出力する。命令キャッシュICおよびラッチLT1は、命令フェッチ部の一例である。
命令デコーダIDは、命令コードINSCをデコードし、デコードした命令INSを出力する。命令デコーダIDの出力は、ラッチLT2、LT8の入力に接続される。ラッチLT2は、クロックCLKに同期して命令デコーダIDから出力される命令INSをラッチし、ラッチした命令INSをレジスタ部REGに出力する。
レジスタ部REGは、命令デコーダIDから出力される命令INSおよびラッチLT5を介して受けるデータ値を格納する複数のレジスタを有する。レジスタ部REGの出力は、ラッチLT3を介して演算部OPの入力に接続され、データキャッシュDCの入力に接続される。
演算部OPは、レジスタ部REGから供給されるデータ等の演算を実行する。演算部OPの出力は、ラッチLT4を介してデータキャッシュDCの入力およびプログラムカウンタPCの入力に接続される。演算部OPによる算術演算の結果は、ラッチLT5を介してレジスタREGに転送される。
データキャッシュDCは、例えば、ストア命令によりデータメモリに書き込まれるデータおよびデータを書き込む領域を示す書き込みアドレス等が格納される。例えば、ストア命令の書き込みデータは、レジスタREGから転送され、ストア命令の書き込みアドレスは、演算部OPから転送される。
データキャッシュDCの出力は、ラッチLT5を介してレジスタ部REGの入力に接続される。例えば、データキャッシュDCは、データキャッシュDC用のキャッシュコントローラを介してデータメモリに接続される。例えば、データキャッシュDC用のキャッシュコントローラおよびデータメモリは、CPUコアの外部に配置される。なお、データキャッシュDCの代わりに、SRAM(Static Random Access Memory)等のデータメモリが配置されてもよい。
図2に示すように、処理部100aは、命令の処理を独立に実行可能な複数のステージを並列に動作させるパイプライン構造を有する。命令キャッシュICおよびラッチLT1は、命令キャッシュICに格納された命令コードINSCをフェッチするフェッチステージに含まれる。命令デコーダIDおよびラッチLT2は、命令デコーダIDにより命令コードINSCをデコードするデコードステージに含まれる。
レジスタ部REGおよびラッチLT3は、レジスタ部REGにアクセスするレジスタアクセスステージに含まれる。演算部OPおよびラッチLT4は、演算部OPにより命令を実行する実行ステージに含まれる。データキャッシュDCおよびラッチLT5は、データキャッシュDCにアクセスするメモリアクセスステージに含まれる。
なお、処理部100aは、図2に示した構成に限定されず、例えば、命令コードINSCをラッチするラッチLT1、ラッチされた命令コードINSCをデコードする命令デコーダID、およびデコードされた命令INSを実行する演算部OPを含んでいればよい。
制御部200aは、命令デコーダPID、ルックアップテーブルLUT、メモリMEM、判定部JDGa、信号生成部SGENaおよびラッチLT6、LT7、LT8を有する。
命令デコーダPIDは、命令メモリICから出力される命令コードINSCをデコードし、デコードにより得られた命令を示す情報を、ルックアップテーブルLUTおよびラッチLT7に出力する。ラッチLT7は、命令デコーダPIDから受ける命令を示す情報を、クロックに同期して判定部JDGaに出力する。命令デコーダPIDは、処理部100のラッチLT1にラッチされる前の命令コードINSCを受けるため、命令デコーダIDより1クロックサイクル早く命令コードINSCをデコード可能である。
ルックアップテーブルLUTは、命令の実行時に消費される電力を示す情報を、命令毎に保持する。例えば、消費電力を示す情報は、”消費電力が基準値より小さい”(図2に示す”小”)および”消費電力が基準値より大きい”(図2に示す”大”)のいずれかである。以降の説明では、消費電力が基準値より小さい命令は、命令OPy(OPy0、OPy1)とも称され、消費電力が基準値より大きい命令は、命令OPx(OPx0、OPx1)とも称される。命令OPyは、図1に示した命令OP1に対応し、命令OPxは、図1に示した命令OP2に対応する。ルックアップテーブルLUTに格納される電力を示す情報は、半導体装置SD1の設計時にシミュレーション等により得られる。
そして、ルックアップテーブルLUTは、命令を示す情報を命令デコーダPIDから受け、受けた情報が示す命令の実行時に消費される電力を示す情報(”小”または”大”を示す情報)をラッチLT6に出力する。換言すれば、ルックアップテーブルLUTは、処理部100aで実行される命令が、命令OPy、OPxのいずれであるかを示す命令情報を、ラッチLT6を介して判定部JDGaに出力する。ルックアップテーブルLUTは、命令OPy、OPxの実行により消費される電力を示す情報を記憶し、命令デコーダPIDによりデコードされた命令を受け、受けた命令が命令OPy、OPxのいずれであるかを示す命令情報を出力する記憶部の一例である。
この実施形態では、命令デコーダPIDによりデコードされた命令は、判定部JDGaに供給されるとともに、ルックアップテーブルLUTに供給される。これにより、判定部JDGaは、命令OPy、OPxの種別の判定をルックアップテーブルLUTに任せることができる。この結果、判定部JDGaが命令OPy、OPxの種別を判定する場合に比べて、判定部JDGaが制御信号DLYを出力するタイミングを早くでき、制御部200aの性能を向上できる。
メモリMEMは、半導体装置SD1の電源網における共振周波数の逆数である共振周期を記憶し、記憶している共振周期を示す情報を周期信号TRESとして出力する。電源網の共振周波数は、半導体装置SD1の設計時のシミュレーション等により得られる。以下の説明では、符号TRESは、共振周波数の周期として称する場合がある。例えば、メモリMEMは、ROM(Read Only Memory)等の不揮発性メモリである。なお、メモリMEMは、CPUコアの外部に配置されてもよい。
判定部JDGaは、ラッチLT6を介してルックアップテーブルLUTから消費電力を示す情報を受け、ラッチLT7を介して命令デコーダPIDから命令を示す情報を受ける。判定部JDGaは、ルックアップテーブルLUTからの情報に基づいて、命令デコーダPIDから供給される命令が、予め設定された基準値より消費電力の小さい命令OPyなのか、基準値より消費電力の大きい命令OPxなのかを判定する。そして、判定部JDGaは、命令OPyの次に命令OPxが実行されるタイミング(すなわち、消費電力が大きくなるタイミング)の周期を求める。判定部JDGaは、求めた周期が周期情報TRESにより示される周期に対して所定の範囲内に含まれる場合、命令OPy、OPxが繰り返し実行されることにより共振現象が発生するおそれがあると判定し、制御信号DLYを信号生成部SGENaに出力する。制御信号DLYは、処理部100aに対して、命令OPyの後に実行される命令OPxの実行タイミングを遅延させる指示である。
信号生成部SGENaは、ラッチLT8を介して命令デコーダIDから出力される命令INSを受け、処理部100aに命令INSを処理させる制御信号CNTを生成する。なお、命令デコーダIDから出力される命令INSは、命令コードをデコードすることにより得られ、命令を処理するための情報を含む。また、信号生成部SGENaは、判定部JDGaからの制御信号DLYに応答して、消費電力が基準値より大きい命令OPxの実行を一時的に停止するための制御信号CNTを処理部100aに出力する。
なお、図2に矢印で示した信号の経路は、1ビットに限らず複数ビットでもよい。複数ビットの信号を受けるラッチLT(LT1、LT2、LT3、LT4、LT5、LT6、LT7およびLT8の少なくともいずれか)は、信号のビット数に対応する複数のラッチ回路を有する。なお、ラッチLTおよびプログラムカウンタPCに示したかぎ形状は、クロックの入力端子を示す。
図3は、図2に示した処理部100aの例を示す。処理部100aは、図2に示した構成に加えて、セレクタSEL1、SEL2および加算器ADD1を有する。
プログラムカウンタPCは、命令が格納された命令キャッシュICにアクセスするアドレス値を生成する。プログラムカウンタPCは、制御部200aからイネーブル信号PCENを受けている期間に動作し、クロックCLKに同期してセレクタSEL1から受けたアドレス値ADを出力する。すなわち、プログラムカウンタPCは、ラッチの機能を有する。プログラムカウンタPCは、イネーブル信号PCENを受けていない期間、クロックCLKを受けても動作せず、保持しているアドレス値ADを出力し続ける。
命令キャッシュICは、命令メモリ(図2)から転送される命令が格納される。命令キャッシュICは、プログラムカウンタPCからのアドレス値ADをアドレス端子RADで受け、アドレス値ADにより示される記憶領域に格納された命令コードINSCを読み出す。命令キャッシュICは、読み出した命令コードINSCを出力端子DOから出力する。命令コードINSCは、ラッチLT1および制御部200aの命令デコーダPIDに供給される。
加算器ADD1は、プログラムカウンタPCからのアドレス値ADに”4”を加え、次の命令コードINSCが格納された記憶領域を示すアドレス値NADを生成する。例えば、処理部100a(すなわち、プロセッサ)は、32ビット幅のアーキテクチャを採用しており、命令を4バイト単位でフェッチする。このため、加算器ADD1は、アドレス値ADを”4”ずつインクリメントする。なお、処理部100aが、64ビット幅のアーキテクチャを採用する場合、加算器ADD1は、アドレス値ADを”8”ずつインクリメントする。
ラッチLT1は、制御部200aから活性化レベルのイネーブル信号EN1を受けている期間に動作し、クロックCLKに同期して命令キャッシュICから受けた信号および加算器ADD1から受けた信号をラッチし、ラッチした信号を出力する。ラッチLT1は、非活性化レベルのイネーブル信号EN1を受けている期間、クロックCLKを受けても動作せず、活性化レベルのイネーブル信号EN1を受けている期間に保持した値を出力し続ける。ラッチLT1は、パイプラインのステージの1つである命令キャッシュICから命令コードをフェッチするフェッチステージの結果を保持する。
命令デコーダIDは、ラッチLT1を介して受ける命令コードINSCをデコードし、デコードにより得られた命令INSを出力する。例えば、命令INSは、演算部OPが実行する命令を示す情報と、レジスタ番号またはアドレス等を含む。命令を示す情報INSは、レジスタ部REG、演算部OPおよびデータキャッシュDCを動作させるために制御部200aに供給される。レジスタ番号またはアドレス等を示す情報INSは、ラッチLT2を介してレジスタ部REGに供給され、あるいはラッチLT2、LT3を介して演算部OPの加算器ADD2に供給される。
ラッチLT2は、制御部200aから活性化レベルのイネーブル信号EN2を受けている期間に動作し、クロックCLKに同期して、命令INSとラッチLT1を介して受けるアドレス値NADとをラッチし、ラッチした値を出力する。ラッチLT2は、非活性化レベルのイネーブル信号EN2を受けている期間、クロックCLKを受けても動作せず、活性化レベルのイネーブル信号EN2を受けている期間に保持した値を出力し続ける。ラッチLT2は、パイプラインのステージの1つである命令デコーダIDによる命令のデコードステージの結果を保持する。
レジスタ部REGは、演算に用いるデータ値やアドレス等の値が格納される複数のレジスタを有する。レジスタ部REGは、制御部200aから制御信号REGCNTを受けて動作する。
例えば、命令デコーダIDから制御部200aに供給される命令INSが、2つのレジスタ間の演算を示す場合、レジスタ部REGは、制御信号REGCNTに基づいて入力端子RAD1、RAD2でレジスタ番号を示す命令INSを受ける。そして、レジスタ部REGは、レジスタ番号で示される2つのレジスタに保持されたデータ値を出力端子DO1、DO2に出力する。
例えば、制御部200aに供給される命令INSが、レジスタへのデータ値のストアを示す場合、レジスタ部REGは、制御信号REGCNTに基づいて入力端子WADでレジスタ番号を示す命令INSを受ける。そして、レジスタ部REGは、データキャッシュDCから出力され、入力端子DIで受けるデータ値をレジスタ番号で示されるレジスタに書き込む。
レジスタ部REGの出力端子DO1から出力されるデータ値は、ラッチLT3を介して演算器OPに供給される。レジスタ部REGの出力端子DO2から出力されるデータ値は、ラッチLT3を介して演算器OPに供給され、あるいはラッチLT3、LT4を介してデータキャッシュDCに供給される。
ラッチLT3は、制御部200aから活性化レベルのイネーブル信号EN3を受けている期間に動作し、クロックCLKに同期して、レジスタ部REGから出力されるデータ値をラッチし、ラッチしたデータ値を出力する。また、ラッチLT3は、活性化レベルのイネーブル信号EN3を受けている期間に、クロックCLKに同期して、命令デコーダPIDから出力される命令INSをラッチし、ラッチした命令INSを出力する。
さらに、ラッチLT3は、活性化レベルのイネーブル信号EN3を受けている期間に、クロックCLKに同期して、ラッチLT1、LT2を介して受けるアドレス値NADをラッチし、ラッチしたアドレス値NADを出力する。ラッチLT3は、非活性化レベルのイネーブル信号EN3を受けている期間、クロックCLKを受けても動作せず、活性化レベルのイネーブル信号EN3を受けている期間に保持した値を出力し続ける。ラッチLT3は、パイプラインのステージの1つであるレジスタ部REGによるレジスタアクセスステージの結果を保持する。
演算器OPは、加算器ADD2およびALU(Arithmetic Logic Unit)を有する。加算器ADD2は、ラッチLT3を介して受けるアドレス値NADにラッチLT3を介して命令デコーダIDから受けるアドレス値を加え、加えた値を分岐アドレス値BADとして出力する。すなわち、加算器ADD2は、分岐命令が実行される場合に、分岐先の分岐アドレス値BADを生成する。
例えば、ALUは、整数演算器、浮動小数演算器およびビット演算器等を含む。ALUは、ラッチLT3を介してレジスタ部REGの出力端子DO1、DO2から出力されるデータ値を受ける。ALUは、制御部200aからの制御信号ALUOPに応じて動作する整数演算器、浮動小数演算器およびビット演算器のいずれかを用いて、受けたデータ値を演算し、演算結果を出力する。例えば、ALUは、分岐命令に基づいて、データ値のビット演算やデータ値の大小の判定をする場合、真または偽を示す信号TFを演算結果としてセレクタSEL1に出力する。例えば、制御信号ALUOPは、複数ビットの信号であり、ALU内の複数の演算器を選択的に動作するために使用される。
ラッチLT4は、制御部200aから活性化レベルのイネーブル信号EN4を受けている期間に動作し、クロックCLKに同期して、演算部OPから出力されるデータ値をラッチし、ラッチしたデータ値を出力する。また、ラッチLT4は、活性化レベルのイネーブル信号EN4を受けている期間に、クロックCLKに同期して、ラッチLT3を介して受けるレジスタ部REGからのデータ値をラッチし、ラッチしたデータ値を出力する。さらに、ラッチLT4は、活性化レベルのイネーブル信号EN4を受けている期間に、クロックCLKに同期して、加算器ADD2から出力される分岐アドレス値BADをラッチし、ラッチした分岐アドレス値BADを出力する。ラッチLT4は、非活性化レベルのイネーブル信号EN4を受けている期間、クロックCLKを受けても動作せず、活性化レベルのイネーブル信号EN4を受けている期間に保持した値を出力し続ける。ラッチLT4は、パイプラインのステージの1つである演算部OPによる実行ステージの結果を保持する。
セレクタSEL1は、制御部200aからのセレクト信号SEL10およびALUからの信号TFを受けない場合、加算器ADD1から出力されるアドレス値NADをプログラムカウンタPCに出力する。セレクタSEL1は、制御部200aからのセレクト信号SEL10またはALUからの信号TFを受ける場合に、加算器ADD2から出力されるアドレス値BADをプログラムカウンタPCに出力する。
データキャッシュDCは、制御部200aからの制御信号DCCNTに基づいて動作し、ラッチLT4を介して受けるデータ値またはアドレス値をデータ端子DIまたはアドレス端子RAD、WADで受ける。例えば、制御部200aに供給される命令INS(デコード結果)が、データキャッシュDCからのデータ値の読み出しを示す場合、データキャッシュDCは、制御信号DCCNTに基づいて入力端子RADでアドレス値を受ける。そして、データキャッシュDCは、入力端子RADで受けるアドレス値が示す記憶領域に格納されたデータ値を読み出し、読み出したデータ値を出力端子DOから出力する。
例えば、制御部200aに供給される命令INS(デコード結果)が、データキャッシュDCへのデータ値の書き込みを示す場合、データキャッシュDCは、制御信号DCCNTに基づいて入力端子WADでアドレス値を受け、データ端子DIでデータ値を受ける。そして、データキャッシュDCは、入力端子WADで受けるアドレス値が示す記憶領域に、データ端子DIで受けたデータ値を書き込む。データキャッシュDCは、制御信号DCCNTを受けない期間、動作しない。
ラッチLT5は、制御部200aから活性化レベルのイネーブル信号EN5を受けている期間に動作し、クロックCLKに同期して、データキャッシュDCから出力されるデータ値をラッチし、ラッチしたデータ値を出力する。また、ラッチLT5は、活性化レベルのイネーブル信号EN5を受けている期間に、クロックCLKに同期して、ラッチLT4を介して受けるALUからのデータ値をラッチし、ラッチしたデータ値を出力する。ラッチLT5は、非活性化レベルのイネーブル信号EN5を受けている期間、クロックCLKを受けても動作せず、活性化レベルのイネーブル信号EN5を受けている期間に保持した値を出力し続ける。ラッチLT5は、パイプラインのステージの1つであるデータキャッシュDCのメモリアクセスステージの結果を保持する。
セレクタSEL2は、制御部200aからのセレクト信号SEL20に応じて、ラッチLT5を介して受けるデータキャッシュDCから出力されるデータ値またはラッチLT4、LT5を介して受けるALUからのデータ値を、レジスタ部REGの入力端子DIに出力する。例えば、ロード命令の実行では、セレクト信号SEL20が論理0に設定されて”0”で示される入力端子が選択され、データキャッシュDCから読み出されたデータ値がレジスタ部REGに供給される。例えば、演算命令の実行では、セレクト信号SEL20が論理1に設定されて”1”で示される入力端子が選択され、ALUの演算により求められたデータ値がレジスタ部REGに供給される。
なお、イネーブル信号PCEN、EN1、EN2、EN3、EN4、EN5、制御信号REGCNT、DCCNT、セレクト信号SEL10、SEL20は、図2に示した制御信号CNTに含まれる。
図4は、図2に示した半導体装置SD1の動作の例を示す。例えば、図4の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
消費電力が基準値より小さい命令OPyは、白抜きの図形で示され、消費電力が基準値より大きい命令OPxは、網掛けの図形で示される。各命令OPy、OPxは、1クロックサイクルで実行されてもよく、複数のクロックサイクルで実行されてもよい。太い実線で示す命令OPy、OPxは、図2に示した判定部JDGaにより判定されたことを示し、破線で示す命令OPy、OPXは、判定部JDGaにより判定される前であることを示す。
この例では、説明を簡単にするために、6つの命令OPyと、6つの命令OPxが繰り返し実行されるとする。6つの命令OPyと6つの命令OPxとの実行期間は、半導体装置SD1の電源網の共振周波数の周期TRESとほぼ等しい。判定部JDGaは、ルックアップテーブルLUTから読み出される情報を用いて、命令デコーダPIDから出力される命令が命令OPy、OPxのいずれであるかを判定する。
図4の上側の波形に示すように、判定部JDGaは、命令OPyの次に命令OPxが実行される場合に、命令OPxの実行が開始される時刻T0を記憶する。次に、判定部JDGaは、命令OPxの次に実行される命令OPyを検出し、さらに、命令OPyの次に命令OPxが実行される場合に、命令OPxの実行が開始される時刻TXを記憶する。
判定部JDGaは、時刻TXと時刻T0の差である周期TX−T0(命令OPyの次に命令OPxを実行するタイミングの間隔)が共振周波数の周期TRESに等しい場合、図2に示した制御信号DLYを信号生成部SGENaに出力する。例えば、判定部JDGaは、周期TX−T0が周期TRESの75%より大きく、周期TRESの125%より小さい場合に、周期TX−T0が周期TRESに等しいと判断する。すなわち、判定部JDGaは、周期TX−T0が周期TRESを含む所定の範囲(マイナス側25%、プラス側25%)に含まれる場合に、周期TX−T0が周期TRESに等しいと判断する。
図4の中央の波形に示すように、信号生成部SGENaは、制御信号DLYに応答して、本来は時刻TXに実行される命令OPx(7)の前に、命令を実行しないサイクルNOP(No OPeration)を挿入させる指示を処理部100aに発行する。そして、信号生成部SGENaは、命令OPy(6)の次に命令OPx(7)を実行するタイミングの間隔である周期を、例えば、周期TRESの1.5倍に設定する。これにより、命令OPx(7)は、時刻T1に実行される。なお、命令OPy、OPxの末尾に付けた括弧付きの数値は、図6に示す命令に対応し、括弧内の数値は、命令OPy、OPxの実行順を示す。
この後、図4の下側の波形に示すように、判定部JDGaは、挿入されたサイクルNOP後に実行される命令OPx(7)の時刻T1を時刻T0とする。判定部JDGaは、図4の上側に示した波形と同様に、命令OPx(7)の次に実行される命令OPy(12)を検出し、さらに、命令OPy(12)の次に命令OPxが実行される場合に、命令OPxの実行が開始される時刻TXを記憶する。そして、判定部JDGaは、周期TX−T0と周期TRESとに基づいて、サイクルNOPを挿入するか否かを判断する。
半導体装置SD1の電源線に流れる電源電流は、命令OPyの実行から命令OPxの実行に切り替わるときに増加し、命令OPxの実行から命令OPyの実行に切り替わるときに減少する。サイクルNOPでの電源電流は、命令OPyの実行時より少ない。半導体装置SD1の電源電圧は、電源電流が過渡的に増加するときに低下し、電源電流が過渡的に減少するときに上昇する。
半導体装置SD1は、サイクルNOPを挿入することで、電源電流の変動の周期を共振周波数の周期TRESと合わないようにする。このため、消費電力が基準値より小さい所定数の命令OPyと、消費電力が基準値より大きい所定数のOPxとが周期的に繰り返されても、繰り返しの周期が周期TRESと一致することを避けることができる。この結果、電源電圧の変動量が共振により増幅することはなく、電源ノイズを抑制でき、半導体装置SD1が電源電圧の共振現象により誤動作するおそれはない。
図5は、図2に示した半導体装置SD1の動作の別の例を示す。図4と同じ要素については、詳細な説明は省略する。図5の上側の波形に示すように、判定部JDGaは、周期TX−T0が共振周波数の周期TRESと異なる場合、すなわち、周期TX−T0が、周期TRESの75%以下、または周期TRESの125%以上である場合、図2に示した制御信号DLYを出力しない。このため、信号生成部SGENaは、時刻TXに実行される命令OPxの前に、サイクルNOPを挿入しない。
この実施形態では、判定部JDGaは、周期TX−T0が周期TRESを含む所定の範囲に含まれる場合に、周期TX−T0を周期TRESに等しいと判定する。これにより、周期TX−T0が周期TRESに近い場合にサイクルNOPを挿入することができ、電源電圧の変動量が共振により増幅する可能性を、周期TX−T0と周期TRESとの一致を判定する場合に比べて下げることができる。
次に、判定部JDGaは、時刻TXを時刻T0とし、命令OPxの次に実行される命令OPyを検出し、さらに、命令OPyの次に命令OPxが実行される場合に、命令OPxの実行が開始される時刻TXを記憶する。図5の中央に示す波形および図5の下側に示す波形は、図5の上側に示す波形の時刻TXにサイクルNOPが挿入されないことを除き、図4の中央に示した波形および図4の下側に示した波形と同様である。
図6は、図2に示した制御部200aおよび図3に示した処理部100aの動作の例を示す。すなわち、図6は、処理部100aが実行するパイプライン処理の例を示す。クロックCLKに付した数字は、クロックサイクルの番号を示す。図6の下側に示したかぎ括弧で囲った波形は、図5に示したように、周期TX−T0が共振周波数の周期TRESと異なる場合にサイクルNOPが挿入されない例を示す。
末尾に括弧付きの数値を付けた命令OPy、OPxは、図4の中央の波形に示した命令に対応する。プログラムカウンタPCおよびラッチLT1から出力される括弧付きの命令OPy、OPxは、命令コードを示す。ラッチLT3、LT4、LT5から出力される括弧付きの命令OPy、OPxは、命令OPy、OPxの処理により得られる値を示す。
2番目および3番目のクロックサイクルにおいて、命令キャッシュICは、プログラムカウンタPCの値に応じて、命令コードOPy(6)、OPx(7)を順次に出力する。図2に示した制御部200aの命令デコーダPIDは、命令キャッシュICから読み出される命令コードOPy(6)、OPx(7)をデコードする。図2に示した制御部200aの判定部JDGaは、命令OPy(6)の次に命令OPx(7)が実行されることを検出し、図4に示した周期TX−T0を求める。この例では、周期TX−T0は、電源網の共振周波数の周期TRESに等しいため、判定部JDGaは、制御信号DLYを出力する。
図2に示した制御部200aの信号生成部SGENaは、制御信号DLYに基づいて、4番目のクロックサイクルに同期してイネーブル信号PCEN、EN1、EN2を非活性化レベル(例えば、ロウレベル)に設定する。例えば、信号生成部SGENaは、イネーブル信号PCEN、EN1、EN2の非活性化期間を、共振周波数の周期TRESの半分に相当する6クロックサイクルに設定する。
また、信号生成部SGENaは、制御信号DLYに基づいて、5番目から10番目のクロックCLKにそれぞれ同期して、演算部OPの動作を禁止する制御信号ALUOP(DIS)を出力する。例えば、信号生成部SGENaは、制御信号ALUOP(DIS)を出力する期間を、共振周波数の周期TRESの半分に相当する6クロックサイクルに設定する。なお、信号生成部SGENaは、1番目から4番目のクロックCLKにそれぞれ同期して、演算部OPの動作を制御する制御信号ALUOP(OP)を、実行する命令に応じて出力する。
プログラムカウンタPCは、イネーブル信号PCENが非活性化されている期間に動作を停止するため、命令キャッシュICは、5番目から10番目のクロックサイクルにおいて、現在の読み出し値を出力し続ける。ラッチLT1は、イネーブル信号EN1が非活性化されている期間にラッチ動作を停止し、保持している値(OPx(7))を出力し続ける。ラッチLT2は、イネーブル信号EN2が非活性化されている期間にラッチ動作を停止し、保持している値(OPy(6))を出力し続ける。
信号生成部SGENaは、制御信号DLYに基づいて、5番目、6番目、7番目のクロックサイクルにイネーブル信号EN3、EN4、EN5を順次に非活性化レベル(例えば、ロウレベル)に設定する。例えば、信号生成部SGENaは、イネーブル信号EN3、EN4、EN5の非活性化期間を、それぞれ共振周波数の周期TRESの半分に相当する6クロックサイクルに設定する。
ラッチLT3は、イネーブル信号EN3が非活性化されている期間にラッチ動作を停止し、保持している値(OPy(6))を出力し続ける。ラッチLT4は、イネーブル信号EN4が非活性化されている期間にラッチ動作を停止し、保持している値(OPy(6))を出力し続ける。ラッチLT5は、イネーブル信号EN5が非活性化されている期間にラッチ動作を停止し、保持している値(OPy(6))を出力し続ける。
演算部OPは、ラッチLT3から出力される命令OPy(6)の値を5番目のクロックCLKに同期して演算し、その後、制御信号ALUOP(DIS)を受けて、6番目から11番目のクロックサイクルで動作を停止する。
ラッチLT2以降の回路において、制御信号ALUOP(DIS)により実行が停止された命令OPx(7)に対応する処理は、イネーブル信号EN2がハイレベルに変化した後の11番目のクロックサイクルから順次に実行される。これにより、命令OPy(6)の次に命令OPx(7)を実行するタイミングの間隔である周期は、図4に示したように、例えば、周期TRESの1.5倍に設定される。
なお、信号生成部SGENaは、イネーブル信号EN3の非活性化期間に対応して、レジスタ部REGの動作を禁止する制御信号REGCNTを出力してもよい。また、信号生成部SGENaは、イネーブル信号EN5の非活性化期間に対応して、データキャッシュDCの動作を禁止する制御信号DCCNTを出力してもよい。
以上により、半導体装置SD1は、制御信号DLYに応答して命令OPx(7)に対応する処理を保留することで、図4に示した周期TX−T0を共振周波数の周期TRESからずらすことができる。命令OPx(7)に対応する処理は、制御信号PCENがハイレベルに変化する10番目のクロックサイクルから順次に実行される。例えば、演算部OPは、ラッチLT3から出力される命令OPx(7)の値を11番目のクロックCLKに同期して演算する。
図7は、図2に示した制御部200aの処理の例を示す。例えば、図7に示す処理は、判定部JDGaおよび信号生成部SGENaのハードウェアにより実行される。
まず、ステップS100において、制御部200aは、命令デコーダPIDから命令OPyを受けたか否かを判定する。命令デコーダPIDから命令OPyを受けた場合、処理はステップS102に移行される。ステップS100は、命令デコーダPIDから命令OPyを受けるまで繰り返される。
ステップS102において、制御部200aは、命令デコーダPIDから命令OPxを受けるのを待つ。命令デコーダPIDから命令OPxを受けた場合、ステップS104において、制御部200aは、命令OPxが実行される時刻T0を記憶する。
次に、ステップS106において、制御部200aは、命令デコーダPIDから命令OPyを受けるのを待つ。命令デコーダPIDから命令OPyを受けた場合、ステップS108において、制御部200aは、命令デコーダPIDから命令OPxを受けるのを待つ。命令デコーダPIDから命令OPxを受けた場合、ステップS110において、制御部200aは、命令OPxが実行される時刻TXを記憶する。
次に、ステップS112において、制御部200aは、周期TX−T0が共振周波数の周期TRESに等しいか否かを判定する。周期TX−T0が共振周波数の周期TRESに等しい場合、処理はステップS114に移行される。周期TX−T0が共振周波数の周期TRESと異なる場合、処理はステップS116に移行される。なお、ステップS112では、図4で説明したように、例えば、周期TX−T0が周期TRESを中心としてプラス側およびマイナス側にそれぞれ25%の範囲内に含まれるか否かを判定する。
ステップS114において、制御部200aは、命令OPyの次に命令OPxを実行する時刻T1を、時刻T0から周期TRESの1.5倍が経過する後に設定する。すなわち、制御部200aは、図6に示したように、命令OPxの実行を保留する制御信号CNT(PCEN、EN1−EN5、ALUOP)を処理部100aに出力する。ステップS114の後、処理はステップS116に移行される。ステップS116において、制御部200aは、時刻T1を時刻T0に設定する。ステップS116の後、処理はステップS106に戻る。
一方、周期TX−T0が共振周波数の周期TRESと異なる場合、ステップS118において、制御部200aは、時刻TXを時刻T0に設定する。ステップS118の後、処理はステップS106に戻る。
図8は、図2に示した半導体装置SD1と異なる半導体装置の動作の例を示す。例えば、半導体装置は、図2に示した命令デコーダPID、判定部JDGa、ルックアップテーブルLUTおよびメモリMEMを持たない。
この種の半導体装置では、命令OPyの次に命令OPxを実行するタイミングの間隔である周期T1−T0(またはT2−T1)が共振周波数の周期TRESに等しい場合、電源電圧の変動量(振幅)は、共振現象により徐々に大きくなる。例えば、電源電圧の振幅は、図4に示した電源電圧の振幅の2倍程度まで大きくなるおそれがある。なお、電源電圧の振幅は、Q値が大きいほど大きくなる。
これに対して、図2に示した半導体装置SD1では、図4に示したように、周期TX−T0を共振周波数の周期TRESからずらすことができるため、電源電圧の変動量を図8に示した変動量の半分程度に抑えることができる。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD1を安定して動作させることができる。さらに、この実施形態では、制御部200aは、命令デコーダIDより1クロックサイクル早く動作する命令デコーダPIDを有する。このため、制御部200aは、周期TX−T0が共振周波数の周期TRESと等しくなることを、命令デコーダIDによりデコードされた命令により判定する場合に比べて、早く判定することができる。これにより、命令OPy、OPxの切り替わりタイミングでサイクルNOPを挿入することができ、消費電力が小さい命令OPyと消費電力が大きい命令OPxが繰り返される頻度を、命令デコーダPIDからの出力により判定する場合に比べて下げることができる。この結果、電源電圧の変動を抑制できる。
また、サイクルNOPを挿入するための制御回路を、処理部100aに追加することなく、制御部200aによる制御により、命令OPyと命令OPxとの切り替わりタイミングでサイクルNOPを挿入することができる。これにより、既存の処理部100aを流用して、半導体装置SD1を設計でき、処理部100aに制御回路を追加する場合に比べて設計期間を短縮することができる。
図9は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置SD2は、図2に示した処理部100aの代わりに処理部100bを有し、図2に示した制御部200aの代わり制御部200bを有する。
処理部100bは、図3に示した処理部100aにセレクタSEL3を追加している。セレクタSEL3は、制御部200bからの制御信号INSTSに応じて、ラッチLT1から出力される命令コードまたは命令コードNOPを命令デコーダIDの入力端子DIに出力する。例えば、セレクタSEL3は、論理1の制御信号INSTSを受けた場合に、”1”で示される入力端子で受ける命令コードNOPを命令デコーダIDに出力する。また、セレクタSEL3は、論理0の制御信号INSTSを受けた場合に、”0”で示される入力端子で受けるラッチLT1からの命令コードを命令デコーダIDに出力する。処理部100bのその他の構成は、図3に示した処理部100aと同様である。
制御部200bは、図2に示した信号生成部SGENaの代わりに信号生成部SGENbを有する。信号生成部SGENbは、制御信号DLYに応じて、制御信号CNT(PCEN、EN1−EN5、INSTS、REGCNT、ALUOP、DCCNT)および制御信号INSTSを生成する機能を有する。制御部200bのその他の構成は、図2に示した制御部200aと同様である。
図10は、図9に示した半導体装置SD2の動作の例を示す。図4と同じ要素については、詳細な説明は省略する。図10の上側の波形は、図4の上側の波形と同様である。例えば、図10の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
図10の中央の波形および図10の下側の波形では、図4に示した命令を実行しないサイクルNOPの代わりに、例えば、6つの命令NOP(No OPeration命令)が挿入される。そして、信号生成部SGENbは、命令OPyの次に命令OPxを実行するタイミングの間隔である周期を、例えば、電源網における共振周波数の周期TRESの1.5倍に設定する。
命令NOPにより消費される電力は、図4に示した命令を実行しないサイクルNOP中に消費される電力と同等であり、命令OPyと同様に命令OPxの実行により消費される電力より小さい。このため、図4と同様に、消費電力が基準値より小さい所定数の命令OPyと、消費電力が基準値より大きい所定数のOPxとが周期的に繰り返されても、繰り返しの周期が周期TRESと一致することを避けることができる。電源電流の変化および電源電圧の変化は、図4に示した電源電流の変化および電源電圧の変化と同様である。
図11は、図9に示した制御部200bおよび処理部100bの動作の例を示す。図6と同様の動作については、詳細な説明は省略する。
例えば、制御部200bは、イネーブル信号EN2、EN3、EN4、EN5を活性化レベル(ハイレベルH)に設定する。制御部200bは、制御信号INSTSを4番目のクロックCLKに同期してハイレベルに活性化し、10番目のクロックCLKに同期してロウレベルに非活性化する。制御部200bは、演算部OPの動作を制御する制御信号ALUOP(OP)を、実行する命令に応じてクロックサイクル毎に出力する。制御信号PCEN、EN1の波形は、図6に示した波形と同様である。
図9に示したセレクタSEL3は、制御信号INSTSの活性化期間である5番目から10番目のクロックサイクルに、命令デコーダIDに命令コードNOPを供給する。ラッチLT2は、5番目から10番目のクロックサイクルの各々において、命令デコーダIDによりデコードされた命令NOPをラッチし、ラッチした命令NOPを出力する。
ラッチLT3、LT4、LT5は、ラッチLT2がラッチした命令NOPに対応する値を順次にラッチし、ラッチした命令NOPを出力する。そして、演算部OPは、6番目から11番目のクロックサイクルの各々において、命令NOPを実行する。ラッチLT2以降の回路において、命令NOPにより実行が停止された命令OPx(7)に対応する処理は、図6と同様に、11番目のクロックサイクルから順次に実行される。これにより、命令OPy(6)の次に命令OPx(7)を実行するタイミングの間隔である周期は、図10に示したように、例えば、周期TRESの1.5倍に設定される。
なお、制御部200bの処理フローは、図7に示したフローと同様である。但し、この実施形態では、図7のステップS114において、命令NOPが共振周波数の周期TRESの半分に相当する期間挿入される。
以上、この実施形態においても、図1に示した実施形態と同様に、電源電圧の共振現象の発生を抑制でき、半導体装置SD2を安定して動作させることができる。また、図2から図7に示した実施形態と同様に、命令デコーダPIDにより、周期TX−T0が共振周波数の周期TRESと等しくなることを早く判定することができ、命令OPyと命令OPxとの切り替わりタイミングで命令NOPを挿入することができる。この結果、消費電力が小さい命令OPyと消費電力が大きい命令OPxとが繰り返される頻度を、命令デコーダPIDからの出力により判定する場合に比べて下げることができ、電源電圧の変動を抑制できる。
図12は、半導体装置の別の実施形態を示す。図1から図7および図9から図11で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
この実施形態の半導体装置SD3は、図9に示した処理部100bと同様の処理部100bを有する。但し、処理部100bのセレクタSEL3は、図9に示した命令コードNOPの代わりにダミー命令コードDMYを受ける。処理部100bのその他の構成は、図9に示した処理部100bと同様である。制御部200bは、図9に示した制御部200bと同様である。
セレクタSEL3は、論理1の制御信号INSTSを受けた場合に、ダミー命令コードDMYを命令デコーダIDに出力し、論理0の制御信号INSTSを受けた場合に、ラッチLT1からの命令コードを命令デコーダIDに出力する。
図13は、図12に示した半導体装置SD3の動作の例を示す。図4および図10と同じ要素については、詳細な説明は省略する。図13の上側の波形は、図4の上側の波形と同様である。例えば、図13の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
図13の中央の波形および図13の下側の波形では、図10に示した命令NOPの代わりにダミー命令DMYが挿入される。そして、信号生成部SGENbは、命令OPyの次に命令OPxを実行するタイミングの間隔である周期を、例えば、周期TRESの1.5倍に設定する。
例えば、ダミー命令DMYは、命令OPyと同様の電力を消費する命令であり、処理部100bが実行する処理(すなわち、半導体装置SD3のシステムとしての動作)に影響を与えない命令である。このため、命令OPyの次にダミー命令DMYが実行される場合、電源電流は変化せず、電源電圧の変化は、図10の命令NOPの実行時に比べて小さい。これにより、共振によって電源電圧の変動量が増幅する程度を、図10に比べて小さくすることができる。
図14は、図12に示した制御部200bおよび処理部100bの動作の例を示す。図6および図11と同様の動作については、詳細な説明は省略する。図12に示した制御部200bが生成する制御信号PCEN、INSTSおよびイネーブル信号EN1、EN2、EN3、EN4、EN5の波形は、図11に示した波形と同様である。
図12に示したセレクタSEL3は、制御信号INSTSの活性化期間である5番目から10番目のクロックサイクルに、命令デコーダIDにダミー命令コードDMYを供給する。ラッチLT2は、5番目から10番目のクロックサイクルの各々において、命令デコーダIDによりデコードされたダミー命令DMYをラッチして出力する。
ラッチLT3、LT4、LT5は、ラッチLT2がラッチしたダミー命令DMYに対応する値を順次にラッチし、ラッチしたダミー命令DMYを出力する。そして、演算部OPは、6番目から11番目のクロックサイクルの各々において、ダミー命令DMYを実行する。これにより、図11と同様に、命令OPy(6)の次に命令OPx(7)を実行するタイミングの間隔である周期は、周期TRESの1.5倍に設定される。
なお、制御部200bの処理フローは、図7に示したフローと同様である。但し、この実施形態では、図7のステップS114において、ダミー命令DMYが共振周波数の周期TRESの半分に相当する期間挿入される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD3を安定して動作させることができる。また、図2から図7、図9から図11に示した実施形態と同様に、消費電力が小さい命令OPyと消費電力が大きい命令OPxが繰り返される頻度を、命令デコーダPIDからの出力により判定する場合に比べて下げることができ、電源電圧の変動を抑制できる。さらに、命令OPyと同様の電力を消費するダミー命令DMYを挿入することにより、図4および図10に比べて、電源電流の変動を抑制でき、電源電圧の変動を抑制できる。
図15は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置SD4は、図2に示した制御部200aの代わり制御部200cを有する。
制御部200cは、図2に示した信号生成部SGENaの代わりに信号生成部SGENcを有する。信号生成部SGENcは、制御信号DLYに応答して、命令OPxの実行を一時的に停止する代わりに、命令OPxの動作レートを命令OPyの動作レートに比べて低くする制御信号CNT(図17に示すPCEN、EN1−EN5等)を出力する。すなわち、信号生成部SGENcは、処理部100aが実行する命令OPxの動作レートを命令OPyの動作レートに比べて低くする指示を処理部100aに発行する。制御信号CNTは、イネーブル信号PCEN、EN1−EN5および制御信号REGCNT、ALUOP、DCCNTを含む。制御部200cのその他の構成は、図2に示した制御部200aと同様である。
図16は、図15に示した半導体装置SD4の動作の例を示す。図4と同じ要素については、詳細な説明は省略する。図16の上側の波形は、図4の上側の波形と同様である。例えば、図16の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
図16の中央の波形および図16の下側の波形では、図4に示した命令を実行しないサイクルNOPの代わりに命令OPxの動作レートが図4の命令OPxの動作レートに比べて低くされる。動作レートは、命令OPxの次に命令OPyが実行されるときに戻される。これにより、命令OPyの次に命令OPxを実行するタイミングの間隔である周期を、共振周波数の周期TRESに対してずらすことができる。制御部200cの判定部JDGaは、動作レートを戻した後に、命令OPyの次に命令OPxの実行が開始される時刻を時刻T0として記憶する。
例えば、動作レートが低くされた命令OPxの実行により流れる電源電流は、命令OPxの実行により流れる電源電流より少なく、命令OPyの実行により流れる電源電流より多い。また、動作レートが低くされた命令OPxの実行中、電源電圧の変動は、図4および図10に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図4および図10に比べて小さくすることができる。
図17は、図15に示した制御部200cおよび処理部100aの動作の例を示す。図6と同様の動作については、詳細な説明は省略する。
この例では、信号生成部SGENaは、4番目、6番目、8番目、10番目、12番目、14番目のクロックCLKに同期して、制御信号PCENおよびイネーブル信号EN1、EN2を非活性化レベル(ロウレベル)に設定する。また、信号生成部SGENaは、5番目、7番目、11番目、13番目、15番目、17番目のクロックCLKに同期して、イネーブル信号EN3を非活性化レベル(ロウレベル)に設定する。信号生成部SGENaは、6番目、8番目、10番目、12番目、14番目、16番目のクロックCLKに同期して、イネーブル信号EN4を非活性化レベル(ロウレベル)に設定する。信号生成部SGENaは、7番目、9番目、11番目、13番目、15番目、17番目のクロックCLKに同期して、イネーブル信号EN5を非活性化レベル(ロウレベル)に設定する。また、信号生成部SGENaは、5番目、7番目、11番目、13番目、15番目、17番目のクロックCLKに同期して、演算部OPの動作を禁止する制御信号ALUOP(DIS)を出力する。
ラッチLT1−LT5は、対応するイネーブル信号EN1−EN5を受けて、動作レートが低くなる期間に、ラッチ動作を2クロックサイクルに1回実行する。なお、半導体装置SD4は、パイプライン構造を有するため、動作レートを低くする期間は、ステージ毎に順にずれる。そして、図17に示した波形により、図16に示した動作が実現される。なお、半導体装置SD5が処理部100aの処理能力を変更するスロットリング機能を有する場合、信号生成部SGENaは、スロットリング制御に応じて、制御信号CNT(PCEN、EN1−EN5)を非活性化レベルに設定してもよい。
図18は、図15に示した制御部200dの処理の例を示す。図7と同様の処理については、詳細な説明は省略する。この実施形態では、図7に示したステップS114、S116、S118の代わりにステップS120、S122、S124が実行される。ステップS100からステップS112の処理は、図7に示した処理と同様である。
周期TX−T0が共振周波数の周期TRESに等しい場合、ステップS120において、制御部は、命令OPxの動作レートを低くする制御信号CNT(PCEN、EN1−EN5、ALUOP)を出力する。次に、ステップS122において、制御部は、命令OPxの次に実行する命令OPyの動作レートを元に戻す制御信号CNT(PCEN、EN1−EN5、ALUOP)を出力する。ステップS122の後、処理はステップS102に移行される。
一方、周期TX−T0が共振周波数の周期TRESと異なる場合、ステップS124において、制御部は、命令デコーダPIDから命令OPxの次に実行される命令OPyを受けるのを待つ。ステップS124の後、処理は、ステップS102に移行される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD4を安定して動作させることができる。また、図2から図7に示した実施形態と同様に、動作レートを下げる制御回路を処理部100aに追加することなく、制御部200aによる制御により、命令OPyと命令OPxとの切り替わりタイミングでサイクルNOPを挿入することができる。このため、処理部100aに制御回路を追加する場合に比べて設計期間を短縮することができる。
さらに、動作レートが低くされた命令OPxの実行中、電源電圧の変動は、図4および図10に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図4および図10に比べて小さくすることができる。
図19は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置SD5は、図2に示した制御部200aの代わりに制御部200eを有する。また、半導体装置SD5は、クロック生成部300eを有する。処理部100aは、図2および図3と同一または同様である。
クロック生成部300eは、発振回路PLL(Phase Locked Loop)および分周回路1/Nを有する。例えば、発振回路PLLは、内蔵する発振器により生成するクロックの周波数を制御信号PCNTに応じて変更し、クロックCLK0として出力する。分周回路1/Nは、クロックCLK0の周波数を制御部200eからの制御信号NDIVに応じて分周し、クロックCLKとして出力する。例えば、制御信号NDIVは、複数ビットの信号である。
制御部200eは、図2に示した判定部JDGaの代わりに判定部JDGeを有し、図2に示した信号生成部SGENaの代わりに信号生成部SGENeを有する。
判定部JDGeの機能は、制御信号DLYの代わりに制御信号NDIVを出力することを除き、図2に示した判定部JDGaと同様である。判定部JDGeは、命令OPyの次に命令OPxが実行されるタイミングの周期(繰り返し周期)が、共振周波数の周期TRESに等しい場合、制御信号NDIVの値を変更し、クロック生成部300eにクロックCLKの周波数を低くさせる。すなわち、制御部200eは、処理部100aが実行する命令OPxのクロック周波数を低くする指示をクロック生成部300eに発行する。
例えば、判定部JDGeは、命令OPyの次に命令OPxが実行されるタイミングの周期が、周期TRESの75%より大きく、周期TRESの125%より小さい場合に、繰り返し周期が周期TRESに等しいと判断する。この場合、判定部JDGeは、制御信号NDIVの値を変更せずに維持する。
信号生成部SGENeは、判定部JDGeからの制御を受けることなく、命令INSに応じて制御信号CNTを生成することを除き、図2に示した信号生成部SGENaと同様の機能を有する。制御部200eのその他の構成は、図2に示した制御部200aと同様である。
図20は、図19に示した半導体装置SD5の動作の例を示す。図4および図16と同様の波形については、詳細な説明は省略する。図20の上側の波形は、図4の上側の波形と同様である。例えば、図20の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
図19に示した判定部JDGeは、期間TX−T0が周期TRESに等しいと判定した場合、制御信号NDIVを”1”から”2”に変更する。例えば、制御信号NDIVの値は、分周回路1/Nの分周比を示す。この後、判定部JDGeは、ラッチLT7を介して命令デコーダPIDから命令OPyを受けたときに、制御信号NDIVを”2”から”1”に戻す。なお、判定部JDGeは、制御信号NDIVによりクロックCLKの周波数を戻した後に、命令OPyの次に命令OPxの実行が開始される時刻T0を記憶する。
図19に示したクロック生成部300eは、制御信号NDIVが”2”に設定される期間に、クロックCLKの周波数を半分にする。信号生成部SGENeは、クロック生成部300eからのクロックCLKを受け、動作速度を半減する。これにより、命令OPyの次に命令OPxを実行するタイミングの間隔である周期を、共振周波数の周期TRESに対してずらすことができる。
また、図20の中央の波形および図20の下側の波形に示すように、各命令OPxの実行サイクルは、制御信号NDIVが”2”に設定される期間に延ばされる。このため、命令OPxにより消費される電力は、クロックCLKの周波数が高い場合に比べて削減される。
制御信号NDIVが”1”に設定される期間に、命令OPxの実行により流れる電源電流の波形および電源電圧の波形は、図16に示した電源電流の波形および電源電圧の波形と同様である。電源電圧の変動は、図4および図10に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図4および図10に比べて小さくすることができる。
図21は、図19に示した制御部200eおよび処理部100aの動作の例を示す。図6および図17と同様の動作については、詳細な説明は省略する。
この例では、信号生成部SGENeは、判定部JDGeによる制御を受けないため、判定部JDGeの判定にかかわらず、制御信号CNT(PCEN、EN1−EN5)を活性化レベル(ハイレベルH)に維持する。
判定部JDGeは、命令デコーダPIDがデコードした命令OPx(7)を、ラッチLT7を介して4番目のクロックサイクルで受ける。そして、判定部JDGeは、図20に示した周期TX−T0が周期TRESに等しいと判定し、制御信号NDIVを”1”から”2”に変更する。図19に示したクロック生成部300eは、制御信号NDIVの”1”から”2”への変化に基づいて、5番目のクロックサイクルから、クロックCLKの周波数を半減させる。そして、処理部100aは、クロックCLKの周波数に応じた速度で動作する。
なお、制御部200eの処理フローは、図18に示したフローと同様である。但し、図18のステップS120の処理の代わりに、クロックCLKの周波数を半減する処理が実行され、ステップS122の処理の代わりに、クロックCLKの周波数を元に戻す処理が実行される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD5を安定して動作させることができる。また、図2から図7に示した実施形態と同様に、制御部200eによる制御により、命令OPyと命令OPxとの切り替わりタイミングで、クロック周波数の変更に基づいて動作レートを変更できる。このため、処理部100aに制御回路を追加する場合に比べて設計期間を短縮することができる。さらに、図15から図18に示した実施形態と同様に、クロックCLKの周波数が低くされた命令OPxの実行中、電源電圧の変動は、図4および図10に比べて小さくなる。このため、電源電圧の変動量が共振により増幅する程度を、図4および図10に比べて小さくすることができる。
図22は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置SD6は、図2に示した制御部200aの代わりに制御部200fを有する。処理部100aは、命令キャッシュICから出力される命令コードINSCを制御部200fに出力しないことを除き、図2および図3に示した処理部100aと同様である。
制御部200fは、図2に示した命令デコーダPIDを持たないことを除き、図2に示した制御部200aと同様である。ラッチLT7およびルックアップテーブルLUTは、処理部100aの命令デコーダIDから出力される命令INSを受けて動作する。このため、判定部JDGaは、図2に比べて、1クロックサイクル遅く判定動作を実行する。
図23は、図22に示した半導体装置SD6の動作の例を示す。図4と同じ要素については、詳細な説明は省略する。図23の上側の波形は、図4の上側の波形と同様である。例えば、図23の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
判定部JDGaは、周期TX−T0が周期TRESに等しいと判定した場合、制御信号DLYを出力し、信号生成部SGENaに、命令を実行しないサイクルNOP(No OPeration)を周期TRESの0.5倍の期間挿入させる。これより、例えば、ラッチLT2は、命令OPx(7)をラッチした後、時刻TXdから0.5TRESの期間ラッチ動作を停止し、時刻T1から命令OPx(8)、OPx(9)、OPx(10)、OPx(11)、OPx(12)を順次にラッチする。なお、命令OPy、OPx末尾に付けた括弧付きの数値は、図24に示す命令に対応し、括弧内の数値は、命令OPy、OPxの実行順を示す。
この実施形態では、判定部JDGaは、ラッチLT2から出力されるタイミングと同じタイミングで、命令デコーダIDによりデコードされた命令をラッチLT7から受け、図4に比べて、1クロックサイクル遅く判定動作を実行する。これにより、判定部JDGaは、実際に実行される命令に対する判定動作を実行可能になる。例えば、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。これに対して、サイクルNOPを命令OPxの前に挿入する判定がされた後に、分岐により命令OPxではなく命令OPyが実行される場合、判定結果は誤りとなり、無駄なサイクルNOPが挿入されるおそれがある。
図24は、図22に示した制御部200fおよび処理部100aの動作の例を示す。図6と同様の動作については、詳細な説明は省略する。この実施形態では、判定部JDGaは、命令デコーダIDがデコードした命令OPx(7)を、ラッチLT7を介して5番目のクロックサイクルで受ける。判定部JDGaが各クロックサイクルで受ける命令は、ラッチLT2から出力される命令と同じである。
判定部JDGaは、図23に示した周期TX−T0が周期TRESに等しいことを判定した場合に、制御信号DLYを信号生成部SGENaに出力する。信号生成部SGENaは、制御信号DLYに応答して、6番目のクロックサイクルに制御信号ALUOP(DIS)を出力する。例えば、制御信号ALUOP(DIS)の出力期間は、共振周波数の周期TRESの半分に相当する6クロックサイクルである。
信号生成部SGENaが出力するイネーブル信号PCEN、EN1−EN5の非活性化タイミングおよび制御信号ALUOP(DIS)の出力タイミングは、図6に比べて1クロックサイクル遅くなる。これにより、ラッチLT1−LT5がラッチ動作を停止するタイミングは、図6に比べて1クロックサイクル遅くなる。このため、ラッチLT1−LT5は、動作が停止される前のクロックサイクルで、命令OPx(7)をラッチする。このため、演算部OPは、制御信号ALUOP(DIS)により動作が停止される前に、命令OPx(7)を実行する。ラッチLT2以降の回路において、実行が遅らされた命令OPx(8)に対応する処理は、イネーブル信号EN2がハイレベルに変化した後の12番目のクロックサイクルから順次に実行される。
図25は、図22に示した制御部200fの処理の例を示す。図7と同様の処理については、詳細な説明は省略する。この実施形態では、図7に示したステップS114、S116の代わりにステップS130、S132が実行される。ステップS100からステップS112の処理およびステップS118の処理は、図7に示した処理と同様である。
周期TX−T0が共振周波数の周期TRESに等しい場合、ステップS130において、制御部200fは、0.5TRESの期間、処理部100の動作を停止する。すなわち、制御部200fは、処理部100の動作を停止する制御信号CNT(PCEN、EN1−EN5、ALUOP)を出力する。次に、ステップS132において、制御部200fは、処理部100の動作を再開する時刻T0を記憶する。ステップS132の後、処理はステップS106に移行される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD6を安定して動作させることができる。さらに、サイクルNOPを命令OPxの前に挿入するか否かの判定を、実際に実行される命令に対して行うことができるため、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。また、制御部200fに命令デコーダPIDを配置しないため、命令デコーダPIDを配置する場合に比べて、半導体装置SD6の回路規模を小さくできる。
図26は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7、図9から図11に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置SD7は、図9に示した制御部200bの代わりに制御部200gを有する。
処理部100bは、命令キャッシュICから出力される命令コードINSCを制御部200gに出力しないことを除き、図9に示した処理部100bと同様である。すなわち、処理部100bは、制御信号INSTSに応じて、命令コードNOPを命令デコーダIDの入力端子DIに出力するセレクタSEL3を有する。
制御部200gは、図2に示した命令デコーダPIDを持たないことを除き、図9に示した制御部200bと同様である。すなわち、制御部200gは、判定部JDGaからの制御信号DLYに応じて、制御信号CNT(PCEN、EN1−EN5、REGCNT、ALUOP、DCCNT)および制御信号INSTSを生成する信号生成部SGENbを有する。
図27は、図26に示した制御部200gおよび処理部100bの動作の例を示す。図6および図11と同様の動作については、詳細な説明は省略する。制御部200gの信号生成部SGENbは、イネーブル信号PCEN、EN1の非活性化タイミングを、図11に比べて1クロックサイクル遅くする。これにより、ラッチLT1がラッチ動作を停止するタイミングは、図11に比べて1クロックサイクル遅くなる。
また、制御部200gの信号生成部SGENbは、イネーブル信号EN2、EN3、EN4、EN5を活性化レベル(ハイレベルH)に設定し、制御信号INSTSを5番目のクロックCLKに同期してハイレベルに活性化し、11番目のクロックCLKに同期してロウレベルに非活性化する。制御信号INSTSの活性化期間は、図11に比べて1クロックサイクル遅くなる。
ラッチLT2は、6番目から11番目のクロックサイクルの各々において、命令デコーダIDによりデコードされた命令NOPをラッチし、ラッチした命令NOPを出力する。ラッチLT3、LT4、LT5は、ラッチLT2がラッチした命令NOPに対応する値を順次にラッチし、ラッチした値を出力する。
ラッチLT1−LT5による命令NOPのラッチは、図11に比べて1クロックサイクル遅れるため、ラッチLT1−LT5は、命令NOPをラッチする前のクロックサイクルで、命令OPx(7)をラッチする。このため、演算部OPは、最初の命令NOPを実行する前に、命令OPx(7)を実行する。そして、演算部OPは、7番目から12番目のクロックサイクルの各々において、命令NOPを実行する。ラッチLT2以降の回路において、命令NOPにより実行が遅らされた命令OPx(8)に対応する処理は、12番目のクロックサイクルから順次に実行される。
なお、制御部200gの処理フローは、図25に示したフローと同様である。但し、この実施形態では、図25のステップS130において、命令NOPが共振周波数の周期TRESの半分に相当する期間挿入される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD7を安定して動作させることができる。また、図22から図25に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部200gに命令デコーダPIDを配置しないため、命令デコーダPIDを配置する場合に比べて、半導体装置SD7の回路規模を小さくできる。
図28は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7に示した実施形態および図12から図14に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
この実施形態の半導体装置SD8は、図12に示した制御部200bの代わりに制御部200gを有する。処理部100bは、命令キャッシュICから出力される命令コードINSCを制御部200gに出力しないことを除き、図12に示した処理部100bと同様である。すなわち、処理部100bのセレクタSEL3は、命令コードNOPの代わりにダミー命令コードDMYを受ける。
制御部200gは、図26に示した制御部200gと同様である。すなわち、制御部200gは、判定部JDGaからの制御信号DLYに応じて、制御信号CNT(PCEN、EN1−EN5、REGCNT、ALUOP、DCCNT)および制御信号INSTSを生成する信号生成部SGENbを有する。
図29は、図28に示した半導体装置SD8の動作の例を示す。図4、図13および図23と同じ要素については、詳細な説明は省略する。図29の上側の波形は、図4の上側の波形と同様である。例えば、図29の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
この実施形態では、判定部JDGaは、図13に比べて、1クロックサイクル遅く判定動作を実行する。このため、ラッチLT2が命令OPyの次の命令OPxを出力した後に、判定部JDGは、命令OPyの次に命令OPxを実行するタイミングの間隔である周期TX−T0が共振周波数の周期TRESに等しいと判定する。
判定部JDGは、周期TX−T0が周期TRESに等しいと判定した場合、制御信号DLYを出力し、信号生成部SGENbに、ダミー命令DMYを周期TRESの0.5倍の期間挿入させる。これより、例えば、ラッチLT2は、命令OPx(7)をラッチした後、時刻TXdから0.5TRESの期間ラッチ動作を停止し、時刻T1から命令OPx(8)、OPx(9)、OPx(10)、OPx(11)、OPx(12)のラッチを開始する。なお、命令OPy、OPxの末尾に付けた括弧付きの数値は、図30に示す命令に対応し、括弧内の数値は、命令OPy、OPxの実行順を示す。
図30は、図28に示した制御部200gおよび処理部100bの動作の例を示す。図6、図13、図24と同様の動作については、詳細な説明は省略する。制御部200gの信号生成部SGENbは、イネーブル信号PCEN、EN1の非活性化期間を、図13に比べて1クロックサイクル遅くする。これにより、ラッチLT1がラッチ動作を停止するタイミングは、図13に比べて1クロックサイクル遅くなる。
また、信号生成部SGENbは、イネーブル信号EN2、EN3、EN4、EN5を活性化レベル(ハイレベルH)に設定する。信号生成部SGENbは、制御信号INSTSを5番目のクロックCLKに同期してハイレベルに活性化し、11番目のクロックCLKに同期してロウレベルに非活性化する。制御信号INSTSの活性化期間は、図13に比べて1クロックサイクル遅くなる。
ラッチLT2は、6番目から11番目のクロックサイクルの各々において、命令デコーダIDによりデコードされたダミー命令DMYをラッチし、ラッチしたダミー命令DMYを出力する。ラッチLT3、LT4、LT5は、ラッチLT2がラッチしたダミー命令DMYに対応する値を順次にラッチし、ラッチした値を出力する。
図27と同様に、ラッチLT1−LT5によるダミー命令DMYのラッチは、図13に比べて1クロックサイクル遅れるため、ラッチLT1−LT5は、ダミー命令DMYをラッチする前のクロックサイクルで、命令OPx(7)をラッチする。このため、演算部OPは、最初のダミー命令DMYを実行する前に、命令OPx(7)を実行する。そして、演算部OPは、7番目から12番目のクロックサイクルの各々において、ダミー命令DMYを実行する。ラッチLT2以降の回路において、ダミー命令DMYにより実行が遅らされた命令OPx(8)に対応する処理は、12番目のクロックサイクルから順次に実行される。
なお、制御部200gの処理フローは、図25に示したフローと同様である。但し、この実施形態では、図25のステップS130において、ダミー命令DMYが共振周波数の周期TRESの半分に相当する期間挿入される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD8を安定して動作させることができる。また、図12から図14に示した実施形態と同様に、命令OPyと同様の電力を消費するダミー命令DMYを挿入することにより、図4および図10に比べて、電源電流の変動を抑制でき、電源電圧の変動を抑制できる。さらに、図22から図27に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部200gに命令デコーダPIDを配置しないため、命令デコーダPIDを配置する場合に比べて、半導体装置SD8の回路規模を小さくできる。
図31は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7、図15から図17、図22から図25に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置SD9は、図22に示した制御部200fの代わり制御部200iを有する。
制御部200iは、図22に示した信号生成部SGENaの代わりに、図15に示した信号生成部SGENcを有する。信号生成部SGENcは、判定部JDGaからの制御信号DLYに応答して、命令OPxの実行を一時的に停止する代わりに、命令OPxの動作レートを命令OPyの動作レートに比べて低くする制御信号CNTを出力する。制御部200iのその他の構成は、命令デコーダPIDを持たないことを除き、図15に示した制御部200cと同様である。
図32は、図31に示した半導体装置SD9の動作の例を示す。図4および図16と同じ要素については、詳細な説明は省略する。図32の上側の波形は、図4の上側の波形と同様である。例えば、図32の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
制御部200iの信号生成部SGENcは、図16と同様に、判定部JDGaからの制御信号DLYに応答して、命令OPxの実行を一時的に停止する代わりに、命令OPxの動作レートを命令OPyの動作レートに比べて低くする制御信号CNTを出力する。
この実施形態では、判定部JDGaは、図16に比べて、1クロックサイクル遅く判定動作を実行する。このため、ラッチLT2が命令OPyの次の命令OPxを出力した後に、判定部JDGaは、命令OPyの次に命令OPxを実行するタイミングの間隔である周期TX−T0が共振周波数の周期TRESに等しいと判定する。
また、この実施形態では、図16と同様に、周期TX−T0が共振周波数の周期TRESに等しいと判定された後、命令OPxの動作レートは、命令OPyの動作レートに比べて低くされる。動作レートは、命令OPxの次に命令OPyが実行されるときに戻される。
この実施形態では、制御部200iの判定部JDGaは、動作レートを戻した後に、命令OPyの次に命令OPxの実行が開始される時刻T0を記憶する。図31の下側の波形による動作時の電源電流および電源電圧は、図16に示した電源電流および電源電圧と同様である。
図33は、図31に示した制御部200iおよび処理部100aの動作の例を示す。図6および図17と同様の動作については、詳細な説明は省略する。
この実施形態では、イネーブル信号PCEN、EN1−EN5が非活性化されるクロックサイクルは、図17に比べて1クロックサイクル遅くなる。これにより、ラッチLT1−LT5がラッチ動作を停止するクロックサイクルは、図17に比べて1クロックサイクル遅くなる。ラッチLT1は、動作レートが低くなる前に、命令OPx(7)をラッチする。
なお、制御部200iの処理フローは、図18に示したフローと同様である。但し、この実施形態では、図18に示したフローは、命令キャッシュICから出力され、命令デコーダPIDによりデコードされた命令に対してではなく、命令デコーダIDによりデコードされた命令に対して実行される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD9を安定して動作させることができる。また、図15から図18に示した実施形態と同様に、動作レートが低くされた命令OPxの実行中、電源電圧の変動は、図4および図10に比べて小さくなるため、電源電圧の変動量が共振により増幅する程度を、図4および図10に比べて小さくすることができる。
さらに、図22から図27に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部200gに命令デコーダPIDを配置しないため、命令デコーダPIDを配置する場合に比べて、半導体装置SD9の回路規模を小さくできる。
図34は、半導体装置および半導体装置の制御方法の別の実施形態を示す。図1から図7、図19から図21に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置SD10は、図19に示した制御部200eの代わりに制御部200jを有する。また、半導体装置SD10は、図19と同様のクロック生成部300eを有する。処理部100aは、命令キャッシュICから出力される命令コードINSCを制御部200jに出力しないことを除き、図2および図3に示した処理部100aと同様である。
制御部200jは、図19に示した命令デコーダPIDを持たないことを除き、図19に示した制御部200eと同様である。ラッチLT7およびルックアップテーブルLUTは、処理部100aの命令デコーダIDから出力される命令INSを受けて動作する。このため、判定部JDGeは、図19に比べて、1クロックサイクル遅く判定動作を実行する。
図35は、図34に示した半導体装置SD10の動作の例を示す。図4および図20と同様の波形については、詳細な説明は省略する。図35の上側の波形は、図4の上側の波形と同様である。例えば、図35の波形は、ラッチLT3から出力され、演算部OPで実行される命令(実行ステージ)を示す。
この実施形態では、判定部JDGeは、図19に比べて、1クロックサイクル遅く判定動作を実行するため、制御信号NDIVが”2”を出力するタイミングは、図20に比べて1命令分遅くなる。したがって、元のクロック周波数より低いクロック周波数で実行される命令は、周期TX−T0が共振周波数の周期TRESに等しいと判定された命令OPxの次の命令OPxになる。図33の下側の波形による動作時の電源電流および電源電圧は、図20に示した電源電流および電源電圧と同様である。
図36は、図34に示した制御部200jおよび処理部100aの動作の例を示す。図6および図21と同様の動作については、詳細な説明は省略する。
この実施形態では、制御信号NDIVが”1”から”2”に変更されるタイミングは、図21に比べて1クロックサイクル遅く、5番目のクロックサイクルである。このため、半導体装置SD10は、6番目のクロックサイクルから動作周波数を低くする。その他の動作は、図20に示した動作と同様である。
なお、制御部200jの処理フローは、図18に示したフローと同様である。但し、図18のステップS120の処理の代わりに、クロックCLKの周波数を半減する処理が実行され、ステップS122の処理の代わりに、クロックCLKの周波数を元に戻す処理が実行される。また、この実施形態では、図18に示したフローは、命令キャッシュICから出力され、命令デコーダPIDによりデコードされた命令に対してではなく、命令デコーダIDによりデコードされた命令に対して実行される。
以上、この実施形態においても、図1に示した実施形態と同様に、共振現象による電源電圧の変動を抑制でき、半導体装置SD10を安定して動作させることができる。また、図19から図21に示した実施形態と同様に、クロックCLKの周波数が低くされた命令OPxの実行中、電源電圧の変動は、図4および図10に比べて小さくなる。このため、電源電圧の変動量が共振により増幅する程度を、図4および図10に比べて小さくすることができる。
さらに、図22から図27に示した実施形態と同様に、命令が分岐命令である場合にも、分岐処理に応じた分岐先の命令に基づいて、判定動作を実行できる。制御部200iに命令デコーダPIDを配置しないため、命令デコーダPIDを配置する場合に比べて、半導体装置SD10の回路規模を小さくできる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。