以下、本発明の実施形態を図面を用いて説明する。
図1は、本発明の一実施形態を示している。プロセッサシステム10は、全体制御用のCPU(Central Processing Unit)20、信号処理用のDSP(Digital Signal Processor)30、モード制御部40、メモリ50、割り込み状態レジスタ60、監視部70、補助ハードウェア80、電力制御部90および周期カウンタ100を有している。例えば、プロセッサシステム10は、携帯端末に用いられる。
CPU20、DSP30、メモリ50、割り込み状態レジスタ60、監視部70および周期カウンタ100は、CPUバス22に接続されている。メモリ50には、モード選択テーブル52が保持されている。モード選択テーブル52は、DSP30の動作モードを設定する際に、モード制御部40により参照されるテーブルである。なお、モード選択テーブル52の詳細は、後述する図6で説明する。また、メモリ50に保持されたモード選択テーブル52は、CPUバス22経由で設定変更可能である。
CPU20は、例えば、CPUバス22に接続されたメインメモリ(図示せず)に保持されているプログラムに基づいて、プロセッサシステム10の全体の動作を制御する。また、この実施形態では、CPU10は、割り込み信号INTの1つである割り込み信号INT1をDSP30および監視部70に出力する。
DSP30は、CPU20および補助ハードウェア80からの割り込み信号INT(INT1−4)を受け付け、割り込み処理を実施する。以下、割り込み信号および割り込み信号に対応する割り込み処理は、同じ符号で示す。例えば、割り込み処理INT1は、割り込み信号INT1を受けたDSP30により実施される割り込み処理を示す。また、DSP30は、後述する図2に示すように、周期的にメイン処理MAINを実施する。すなわち、DSP30は周期的に動作する。なお、例えば、DSP30は、省電力化を実現するために、複数の動作モードを有している。
モード制御部40は、DSP30の状態(動作モード)を制御するステートマシンである。なお、モード制御部40の動作の詳細は、後述する図9で説明する。例えば、モード制御部40は、モード選択テーブル52および割り込み状態レジスタ60を参照し、周期の残り時間を示す時刻情報TMに基づいて、DSP30の動作モードを示すモード信号MINFを生成する。ここで、割り込み状態レジスタ60は、周期毎に割り込み処理INTの発生履歴を保持する書き換え可能なレジスタである。本明細においては履歴記憶部とも呼ぶ。例えば、割り込み状態レジスタ60は、割り込み処理INTの終了を示す終了情報を割り込み処理INT1−4毎に保持し、周期の開始を示す周期開始信号STによりリセットされる。なお、割り込み状態レジスタ60に保持された終了情報は、割り込み処理の終了を示す終了信号ESIG(ESIG1−4)により、割り込み処理INT1−4毎に更新される。
監視部70は、割り込み処理INTの発生および終了を割り込み処理INT1−4毎に監視する。なお、監視部70の詳細は、後述する図8で説明する。例えば、監視部70は、DSP30のプログラムカウンタの値(以下、プログラムカウンタ値とも称する)PCおよび割り込み信号INT1−4を受け、割り込み処理INTの発生を示す発生信号SSIG(SSIG1−4)および終了信号ESIGを生成する。そして、例えば、監視部70は、発生信号SSIGをモード制御部40に出力し、終了信号ESIGをモード制御部40および割り込み状態レジスタ60に出力する。また、監視部70は、起動直後に、周期開始信号STによりリセットされる。
補助ハードウェア80は、例えば、アクセラレータであり、DSP30の性能を補助するためのハードウェアである。また、この実施形態では、補助ハードウェア80は、割り込み信号INT2−4をDSP30および監視部70に出力する。電力制御部90は、モード信号MINFに基づいて、DSP30の電源のオン/オフの制御、DSP30の電源電圧の制御およびDSP30の動作周波数の制御等を実施する。周期カウンタ100は、CPUバス22経由で周期(例えば、後述する図2に示す周期T)の大きさ(時間)が設定され、周期開始信号STを、モード制御部40、割り込み状態レジスタ60および監視部70に出力し、周期の残り時間を示す時刻情報TMをモード制御部40に出力する。
図2は、図1に示したDSP30の動作の一例を示している。図中の網掛けは、割り込み処理INTを示している。なお、各周期T内に発生する割り込み処理INTの種類は、予め設定されている。図の例では、最初の周期T(図2の(a))および2番目の周期T(図2の(b))の両方で、割り込み処理INT1−4が発生するように予め設定されている。また、各周期T内に発生する割り込み処理INT1−4は、周期T内でいつ発生するか分からない。例えば、最初の周期T(図2の(a))では、割り込み処理INTは、メイン処理MAINが終了した後に、割り込み処理INT1、INT4、INT2、INT3の順に発生している。そして、2番目の周期T(図2の(b))では、メイン処理MAINが実施されている最中に、割り込み処理INT1が発生し、割り込み処理INT1が終了し、メイン処理MAINの続きが実施されている最中に、割り込み処理INT2が発生し、メイン処理MAINが終了した後に、割り込み処理INT3、INT4が発生している。
すなわち、DSP30は、各周期Tの開始時にメイン処理MAINを実施し、周期T毎に不規則なタイミングで発生する割り込み処理INT1−4を、割り込み信号INT1−4をトリガにして実施する。なお、この実施形態では、メイン処理MAINおよび割り込み処理INT1−4が実施されるときのDSP30の動作モードは、通常モードである。また、DSP30は、通常モードの他に、省電力化のための複数の省電力モードを有している。すなわち、DSP30の動作モードは、通常モードおよび複数の省電力モードから選択される。
図3は、割り込み処理INTの概要を示している。図3の(a)の網掛けは、割り込み処理INTに対する応答時間RETを示している。例えば、応答時間RETは、割り込み処理INTに対して応答するために、DSP30が演算を開始してから終了するまでの期間であり、割り込み処理INTのアルゴリズムから算出される。例えば、割り込み処理INTのアルゴリズムが実装されたシステムの割り込み処理INTの発生から応答までの時間を評価ツール等で測定し、最悪条件での測定値(時間)を応答時間RETとして用いる。
また、割り込み処理INTは、割り込み処理INTが発生してから制約時間LT内に応答RESを終了しなければならない。例えば、DSP30は、時刻t0に割り込み処理INTが発生した場合、時刻t0から制約時間LT経過した時刻t2までに、応答する必要がある。例えば、制約時間LTは、DSP30が用いられているシステム全体のアルゴリズムから算出され、システムが運用される前に予め決められている。なお、復帰制約時間RLTは、制約時間LTから応答時間RETを引いた値(時間)である。
図3の(a)の例では、割り込み処理INTは、時刻t0に発生し、割り込み処理INT(割り込み信号INT)に対する応答RESは、制約時間LT内の時刻t1に終了する。ここで、時刻t3の割り込み処理INTの終了ENDは、例えば、応答RESに対する返答をDSP30が受けた場合、その返答に対する処理の終了を示している。したがって、応答RESに対する返答がない割り込み処理INTでは、割り込み処理INTに対する応答RESが終了した時刻t1が、割り込み処理INTの終了ENDの時刻である。
上述したように、DSP30は、割り込み信号INTを受けてから制約時間LT内に応答すればよい。すなわち、制約時間LTは、割り込み信号INTを受けてから応答するまでに費やすことのできる時間である。したがって、DSP30は、割り込み信号INTを受けてから復帰制約時間RLT内に、割り込み処理INTに対する応答RESのための演算を開始することにより、制約時間LT内に応答できる。すなわち、復帰制約時間RLTは、割り込み処理INTが発生してから、DSP30が割り込み処理INTを開始するまでの待機時間の上限である。
図3の(b)に示すように、割り込み処理INT1の復帰制約時間RLT1は、割り込み処理INT1の制約時間LT1から応答時間RET1を引いた値である。また、割り込み処理INT2の復帰制約時間RLT2は、割り込み処理INT2の制約時間LT2から応答時間RET2を引いた値であり、割り込み処理INT3の復帰制約時間RLT3は、割り込み処理INT3の制約時間LT3から応答時間RET3を引いた値である。同様に、割り込み処理INT4の復帰制約時間RLT4は、割り込み処理INT4の制約時間LT4から応答時間RET4を引いた値である。なお、この実施形態では、復帰制約時間RLT2は復帰制約時間RLT1より大きく、復帰制約時間RLT3は復帰制約時間RLT2より大きく、復帰制約時間RLT4は復帰制約時間RLT3より大きい。
図4は、省電力モードと復帰時間RTとの関係の一例を示している。省電力モードMD1−3は、DSP30の消費電力を通常モードに比べて小さくするモードである。なお、復帰時間RT(RT10、RT20、RT30)は、各省電力モードMD1−3から通常モードに復帰するまでに費やされる時間である。例えば、復帰時間RTは、省電力化のための制御方法、製造プロセスおよびレイアウト等が決まった時点で算出される。
例えば、省電力モードMD1では、DSP30の動作周波数は、通常モードに比べて低く設定される。あるいは、省電力モードMD1では、DSP30で使用するクロックは、停止状態に設定される。また、例えば、省電力モードMD2では、DSP30の電源電圧は通常モードに比べて低く設定され、省電力モードMD3では、DSP30の電源はオフされる。以下、省電力モードMD1、MD2、MD3を、それぞれ周波数制御モードMD1、電圧制御モードMD2、電源制御モードMD3とも称する。
この実施形態では、例えば、省電力モードMD1から通常モードに復帰するまでにかかる復帰時間RT10は、割り込み処理INT1の復帰制約時間RLT1より大きく、割り込み処理INT2の復帰制約時間RLT2以下である。また、例えば、省電力モードMD2から通常モードに復帰するまでにかかる復帰時間RT20は、割り込み処理INT2の復帰制約時間RLT2より大きく、割り込み処理INT3の復帰制約時間RLT3以下である。例えば、省電力モードMD3から通常モードに復帰するまでにかかる復帰時間RT30は、割り込み処理INT3の復帰制約時間RLT3より大きく、割り込み処理INT4の復帰制約時間RLT4以下である。したがって、この実施形態では、復帰制約時間RLTと復帰時間RTとの関係に基づいて、割り込み処理INTが実施される前のDSP30の動作モードを適切に選択することにより、割り込み処理INTに対して、制約時間LT内に応答できる。
図5は、割り込み処理INTと省電力モードの復帰時間RTとの関係の一例を示している。図中の網掛けは、割り込み処理INT2に対する応答時間RET2を示している。なお、図5の(a)は、割り込み信号INT2を受ける前のDSP30の動作モードが周波数制御モードMD1の場合を示し、図5の(b)は、割り込み信号INT2を受ける前のDSP30の動作モードが電圧制御モードMD2の場合を示している。また、図中の符号MD0は、通常モードMD0を示している。
図5の(a)に示すように、DSP30は、時刻t0の割り込み信号INT2をトリガにして、周波数制御モードMD1から通常モードMD0に遷移する。通常モードMD0に復帰するまでに復帰時間RT10かかるため、DSP30は、時刻t0から復帰時間RT10後の時刻t10に、割り込み処理INT2に対する応答RESのための演算を開始する。上述した図4で説明したように、復帰時間RT10が割り込み処理INT2の復帰制約時間RLT2以下のため、DSP30は、制約時間LT2内の時刻t20に、割り込み処理INT2に対する応答RESを実行できる。
これに対し、図5の(b)の例では、DSP30は、時刻t0の割り込み信号INT2をトリガにして、電圧制御モードMD2から通常モードMD0に遷移する。通常モードMD0に復帰するまでに復帰時間RT20かかるため、DSP30は、時刻t0から復帰時間RT20後の時刻t12に、割り込み処理INT2に対する応答RESのための演算を開始する。上述した図4で説明したように、復帰時間RT20が割り込み処理INT2の復帰制約時間RLT2より大きいため、DSP30は、制約時間LT2を過ぎた時刻t22に、割り込み処理INT2に対する応答RESを実行する。すなわち、割り込み信号INT2を受ける前のDSP30の動作モードが電圧制御モードMD2の場合、DSP30は、割り込み処理INT2に対する応答RESを制約時間LT2内に実施できない。なお、この実施形態では、例えば、後述する図6に示すモード選択テーブル52を用いることにより、割り込み処理INTが実施される前のDSP30の動作モードを、制約時間LTを満足する適切な動作モードに設定する。
図6は、図1に示したモード選択テーブル52の一例を示している。モード選択テーブル52では、割り込み処理INTの状態は、復帰制約時間RLTと復帰時間RTとの関係に基づいて分類されている。例えば、“INT1未”の列は、割り込み処理INT1が実施されていない状態に対応し、“INT2未”の列は、割り込み処理INT1が実施され、かつ、割り込み処理INT2が実施されていない状態に対応する。また、“INT3未”の列は、割り込み処理INT1、INT2が実施され、かつ、割り込み処理INT3が実施されていない状態に対応し、“INT4未”の列は、割り込み処理INT1−3が実施され、かつ、割り込み処理INT4が実施されていない状態に対応する。なお、“全て済み”の列は、割り込み処理INT1−4の全てが実施された状態に対応する。ここで、図の例では、“全て済み”の列と、“INT4未”の列とが互いに同じため、“INT4未”の列を、上述した“INT4未”の状態および“全て済み”の状態の両方に対応させてもよい。すなわち、“全て済み”の列を省いてもよい。
また、上述した図2で説明したように、各周期Tの開始時にメイン処理MAINが実施されるため、DSP30の動作モードは、周期Tの開始時までに、通常モードMD0に復帰している必要がある。このため、モード選択テーブル52では、周期Tの残り時間ET(次の周期Tが開始されるまでの時間)は、復帰時間RTに基づいて分類されている。例えば、残り時間ETが復帰時間RT30より大きい場合、DSP30の動作モードは、通常モードMD0および省電力モードMD1−3の中から、未実施の割り込み処理INTに基づいて選択される。また、例えば、残り時間ETが復帰時間RT30以下で、かつ、復帰時間RT20より大きい場合、DSP30の動作モードは、次の周期Tの開始時までに通常モードMD0に復帰している必要があるため、通常モードMD0および省電力モードMD1−2の中から選択される。
同様に、例えば、残り時間ETが復帰時間RT20以下で、かつ、復帰時間RT10より大きい場合、DSP30の動作モードは、通常モードMD0および省電力モードMD1の中から選択される。なお、例えば、残り時間ETが復帰時間RT10以下の場合、DSP30は、割り込み処理INTの状態に拘わらず、通常モードMD0に設定される。すなわち、この実施形態では、モード選択テーブル52を用いることにより、割り込み処理INTが実施される前のDSP30の動作モードを、割り込み処理INTの状態および残り時間ETに基づいて、適切な動作モードに設定できる。ここで、適切な動作モードとは、制約時間LTを満足し、かつ、次の周期Tの開始時までに通常モードMD0に復帰可能な動作モードである。
図7は、図1に示した割り込み状態レジスタ60の一例を示している。割り込み状態レジスタ60は、上述した図1で説明したように、周期T毎に割り込み処理INT1−4の発生履歴を保持する書き換え可能なレジスタである。例えば、割り込み状態レジスタ60の状態CONの“終了”は、割り込み処理INTが終了したことを示し、“未”は、割り込み処理INTが未実施であることを示している。なお、割り込み状態レジスタ60の状態CONは、周期Tの最初に、全て“未”に設定される。図の例では、割り込み処理INT1、INT3は、終了し、割り込み処理INT2、INT4は、未実施である。すなわち、図の割り込み状態レジスタ60の情報は、周期Tの残り時間ET内のどこかで割り込み処理INT2、INT4が発生することを示している。なお、図の割り込み状態レジスタ60が示す割り込み処理INTの状態は、上述した図6に示したモード選択テーブル52の“INT2未”の状態(割り込み処理INT1が実施され、かつ、割り込み処理INT2が実施されていない状態)に対応する。
図8は、図1に示した監視部70の概要を示している。なお、図8は、割り込み処理INT1−4の1つに対応する信号生成部GENを示し、残りの3つ割り込み処理INTにそれぞれ対応する信号生成部GENの記載を省略している。
図8の(a)に示すように、例えば、監視部70の信号生成部GENは、割り込み検出部DEC、プログラムカウンタ格納レジスタPCREGおよび比較部CMPを有している。割り込み検出部DECは、割り込み信号INTを受け、割り込み処理INTの発生を検出し、発生信号SSIGを生成する。プログラムカウンタ格納レジスタPCREGは、割り込み信号INTおよびプログラムカウンタ値PCを受け、割り込み処理INTの発生時のプログラムカウンタ値PC(復帰ポイント)を保持する。比較部CMPは、プログラムカウンタ値PCと、プログラムカウンタ格納レジスタPCREGに保持されている値とを比較し、終了信号ESIGを生成する。
ここで、例えば、割り込み処理INTが終了した場合、プログラムは、割り込み処理INTが発生したときのプログラムカウンタが示す値(復帰ポイント)から再開される。したがって、比較部CMPが受けるプログラムカウンタ値PCとプログラムカウンタ格納レジスタPCREGに保持されている値(復帰ポイント)とを比較することにより、割り込み処理INTの終了は、検出される。
例えば、図8の(b)に示すように、割り込み信号INTをトリガにして、発生信号SSIGが出力され、復帰ポイントV1(割り込み処理INTの発生時のプログラムカウンタ値PC)がプログラムカウンタ格納レジスタPCREGに保持される。そして、比較部CMPが順次受けるプログラムカウンタ値PCがプログラムカウンタ格納レジスタPCREGに保持されている復帰ポイントV1に一致したときに、終了信号ESIGが出力される。
なお、監視部70は、各割り込み処理INT1−4に対応する信号生成部GENの他に、メイン処理MAINの終了を検出するための信号生成部GENを有している。例えば、メイン処理MAINの終了は、メイン処理MAINの終了を示すプログラムカウンタ値をプログラムカウンタ格納レジスタPCREGに予め保持させることにより、割り込み処理INTの終了の検出と同様に、検出される。この場合、メイン処理MAINの終了を検出するための比較判定は、上述した図1に示した周期カウンタからの周期開始信号STをトリガにして開始される。例えば、メイン処理MAINの終了を示す信号は、監視部70からモード制御部40に転送される。図1では、メイン処理MAINの終了を示す信号の記載を省略している。なお、メイン処理MAINの終了は、DSP30からモード制御部40に直接通知されてもよい。
図9は、DSP30の動作モードの制御方法の一例を示している。なお、図9は、モード制御部40のステートの遷移を示している。先ず、周期Tの開始時にメイン処理MAINが実施されるため、周期Tの開始時のモード制御部40の状態は、通常モードMD0に対応するステートST0(開始ステート)である。そして、メイン処理MAINが終了したときに、モード制御部40の状態は、ステートST0から判定ステートSTJに遷移する。なお、メイン処理MAIN中に割り込み処理INTが発生した場合、DSP30の動作モードは、省電力モードMD1−3に移行することなく通常モードMD0に維持される。この場合、仕掛かり中の処理(メイン処理MAINおよびメイン処理MAIN中に発生した割り込み処理INT)が終了したときに、モード制御部40の状態は、ステートST0から判定ステートSTJに遷移する。
判定ステートSTJでは、モード制御部40は、上述した図6に示したモード選択テーブル52を参照し、残り時間ETおよび未実施の割り込み処理INTに対応する動作モードを選択する。DSP30の動作モードが通常モードMD0に設定された場合、モード制御部40の状態は、判定ステートSTJからステートST0に遷移する。DSP30の動作モードが周波数制御モードMD1に設定された場合、モード制御部40の状態は、判定ステートSTJから周波数制御モードMD1に対応するステートST1に遷移する。DSP30の動作モードが電圧制御モードMD2に設定された場合、モード制御部40の状態は、判定ステートSTJから電圧制御モードMD2に対応するステートST2に遷移する。DSP30の動作モードが電源制御モードMD3に設定された場合、モード制御部40の状態は、判定ステートSTJから電源制御モードMD3に対応するステートST3に遷移する。
ステートST1−3では、モード制御部40は、割り込み処理INTの発生および残り時間ETを監視し、割り込み処理INTが発生したとき、および残り時間ETが復帰時間RT以下になるときに、DSP30の動作モードを通常モードMD0に設定する。すなわち、割り込み処理INTが発生したとき、および残り時間ETが復帰時間RT以下になるときに、モード制御部40の状態は、各ステートST1−3からステートST0に遷移する。このように、ステートST1−3(省電力モードMD1−3)では、図6に示したモード選択テーブル52を参照することなく、割り込み処理INTの発生および復帰時間RT以下になる残り時間ETの検出をトリガにして、モード制御部40の状態が、各ステートST1−3からステートST0に遷移する。
割り込み処理INTの発生により、モード制御部40の状態がステートST0に遷移した場合、モード制御部40は、割り込み処理INTが終了したときに、DSP30の動作モードを通常モードMD0に設定する。すなわち、割り込み処理INTが終了したときに、モード制御部40の状態は、ステートST0から判定ステートSTJに遷移する。なお、モード制御部40は、割り込み処理INTが終了したときに、上述した図1で説明したように、割り込み状態レジスタ60を更新する。このように、モード制御部40は、割り込み処理INTの状態および残り時間ETに応じて、上述の動作を繰り返す。
図10は、図9に示した判定ステートSTJの動作の一例を示している。なお、図10に示した処理は、モード制御部40により実施される。
先ず、処理200では、モード制御部40は、割り込み状態レジスタ60を参照し、判定ステートSTJに推移した時点で、未実施の割り込み処理INTが存在するか否かを判定する。未実施の割り込み処理INTが存在する場合(処理200のYes)、モード制御部40の動作は、処理210に移り、未実施の割り込み処理INTが存在しない場合(処理200のNo)、モード制御部40の動作は、処理220に移る。
処理210では、モード制御部40は、未実施の割り込み処理INTのうち、復帰制約時間RLTが最小の割り込み処理INTを検出する。例えば、処理200で参照された割り込み状態レジスタ60の状態CONが上述した図7に示した割り込み状態レジスタ60の内容の場合、モード制御部40は、復帰制約時間RLTが最小の割り込み処理INTとして、割り込み処理INT2を検出する。処理220では、モード制御部40は、周期カウンタ100から受けた時刻情報TMに基づいて、周期Tの残り時間ETを検出する。
処理230では、モード制御部40は、上述した図6に示したモード選択テーブル52を参照し、割り込み処理INTの状態および残り時間ETに対応する動作モードを選択する。例えば、処理210で割り込み処理INT2が検出され、処理220で検出された残り時間ETが復帰時間RT30より大きい場合、モード選択テーブル52の“INT2未”の列から、“ET>RT30”の行の周波数制御モードMD1が選択される。あるいは、例えば、処理210で割り込み処理INT2が検出され、処理220で検出された残り時間ETが復帰時間RT10以下の場合、モード選択テーブル52の“INT2未”の列から、“RT10≧ET>0”の行の通常モードMD0が選択される。
そして、処理240では、モード制御部40は、DSP30の動作モードを、処理230で選択した動作モードに設定する。例えば、モード制御部40は、処理230で選択した動作モードを示すモード信号MINFを、電力制御部90に出力する。
図11は、DSP30の動作モードの遷移の一例を示している。図中の網掛けは、メイン処理MAINおよび割り込み処理INTのいずれかがDSP30により実施されている期間を示している。
周期Tの開始時にメイン処理MAINが実施されるため、周期Tの開始時のDSP30の動作モードは、通常モードMD0である(図11の(a))。なお、図の最初の周期Tでは、DSP30がメイン処理MAINを実施している最中に、割り込み処理INT4、INT1、INT3が間隔を置いて発生している(図11の(b)、(c)、(d))。このため、DSP30は、メイン処理MAINが終了するまで通常モードMD0で動作する(図11の(e))。
メイン処理MAINが終了したとき、DSP30の動作モードは、通常モードMD0から周波数制御モードMD1に遷移する(図11の(f))。例えば、上述した図9で説明したように、メイン処理MAINが終了したとき、モード制御部40の状態は、ステートST0から判定ステートSTJに遷移する。この時点では、割り込み状態レジスタ60は、割り込み処理INT1、INT3、INT4が終了したことを示している。また、周期Tの残り時間ETは、復帰時間RT30より大きい。このため、モード制御部40は、モード選択テーブル52の“INT2未”の列から、“ET>RT30”の行の周波数制御モードMD1を選択し、DSP30の動作モードを周波数制御モードMD1に設定する。
周波数制御モードMD1(モード制御部40のステートST1)では、モード制御部40は、割り込み処理INTの発生および残り時間ETを監視する。そして、割り込み処理INT2が発生したときに、DSP30の動作モードは、周波数制御モードMD1から通常モードMD0に遷移する(図11の(g))。
割り込み処理INT2が終了したとき、DSP30の動作モードは、通常モードMD0から電源制御モードMD3に遷移する(図11の(h))。例えば、割り込み処理INT2が終了したときに、割り込み状態レジスタ60が更新され、モード制御部40の状態は、ステートST0から判定ステートSTJに遷移する。この時点では、割り込み状態レジスタ60は、割り込み処理INT1−4の全てが終了したことを示している。また、周期Tの残り時間ETは、復帰時間RT30より大きい。このため、モード制御部40は、モード選択テーブル52の“全て済み”の列から、“ET>RT30”の行の電源制御モードMD3を選択し、DSP30の動作モードを電源制御モードMD3に設定する。
電源制御モードMD3(モード制御部40のステートST3)では、モード制御部40は、割り込み処理INTの発生および残り時間ETを監視する。そして、残り時間ETが復帰時間RT30以下になったときに、DSP30の動作モードは、電源制御モードMD3から通常モードMD0に遷移する(図11の(i))。これにより、次の周期Tの開始時に、DSP30は、通常モードMD0で動作できる(図11の(j))。なお、図の2番目の周期Tの開始時に、割り込み状態レジスタ60は、クリアされる(状態CONが全て“未”に設定される)。
2番目の周期Tでは、DSP30がメイン処理MAINを実施している最中に、割り込み処理INTは、発生していない。このため、メイン処理MAINが終了し、モード制御部40の状態がステートST0から判定ステートSTJに遷移した時点では、割り込み状態レジスタ60は、割り込み処理INT1−4が未実施であることを示している。また、メイン処理MAINが終了した時点では、未実施の割り込み処理INT1−4のうち、復帰制約時間RLTが最小の割り込み処理INTは、割り込み処理INT1であり、残り時間ETは、復帰時間RT30より大きい。したがって、モード制御部40は、モード選択テーブル52の“INT1未”の列から、“ET>RT30”の行の通常モードMD0を選択する。このため、DSP30の動作モードは、メイン処理MAINの終了後も、通常モードMD0に維持される(図11の(k))。
メイン処理MAINの終了後に発生した割り込み処理INT1が終了したとき、DSP30の動作モードは、通常モードMD0から周波数制御モードMD1に遷移する(図11の(l))。例えば、割り込み処理INT1が終了した時点では、未実施の割り込み処理INT2−4のうち、復帰制約時間RLTが最小の割り込み処理INTは、割り込み処理INT2であり、残り時間ETは、復帰時間RT30より大きい。このため、モード制御部40は、モード選択テーブル52の“INT2未”の列から、“ET>RT30”の行の周波数制御モードMD1を選択し、DSP30の動作モードを周波数制御モードMD1に設定する。
割り込み処理INT2の発生により、DSP30の動作モードは、周波数制御モードMD1から通常モードMD0に遷移する(図11の(m))。割り込み処理INT2が実施されている最中に、割り込み処理INT3が発生しているため、DSP30は、割り込み処理INT2、INT3が終了するまで通常モードMD0で動作する(図11の(n))。割り込み処理INT3が終了したとき、DSP30の動作モードは、割り込み処理INT4が未実施で、かつ、残り時間ETが復帰時間RT30より大きい条件に対応する電源制御モードMD3に、通常モードMD0から遷移する(図11の(o))。そして、割り込み処理INT4の発生により、DSP30の動作モードは、電源制御モードMD3から通常モードMD0に遷移する(図11の(p))。
割り込み処理INT4が終了したとき、DSP30の動作モードは、通常モードMD0から電圧制御モードMD2に遷移する(図11の(q))。例えば、割り込み処理INT4が終了したときに、割り込み状態レジスタ60が更新され、モード制御部40の状態は、ステートST0から判定ステートSTJに遷移する。この時点では、割り込み状態レジスタ60は、割り込み処理INT1−4の全てが終了したことを示している。また、周期Tの残り時間ETは、復帰時間RT30より小さく、復帰時間RT20より大きい。このため、モード制御部40は、モード選択テーブル52の“全て済み”の列から、“RT30≧ET>RT20”の行の電圧制御モードMD2を選択し、DSP30の動作モードを電圧制御モードMD2に設定する。
残り時間ETが復帰時間RT20以下になったときに、DSP30の動作モードは、電圧制御モードMD2から通常モードMD0に遷移する(図11の(r))。これにより、次の周期Tの開始時に、DSP30は、通常モードMD0で動作できる(図11の(s))。
このように、この実施形態では、未実施の割り込み処理INTの復帰制約時間RLTおよび残り時間ETが大きい場合、DSP30の動作モードを、通常モードMD0より消費電力の小さい省電力モードMD1−3に設定することができる。特に、この実施形態では、割り込み処理INTの状態および残り時間ETに応じて、DSP30の動作モードを、周波数制御モードMD1より省電力効果の高い(消費電力の小さい)電圧制御モードMD2や電源制御モードMD3に設定することができる。これにより、消費電力を効率よく小さくできる。なお、周波数制御モードMD1より復帰時間RTの大きい電圧制御モードMD2や電源制御モードMD3に設定された場合でも、上述したように、DSP30は、割り込み処理INTの制約時間LTを満足でき、かつ、次の周期Tの開始時までに通常モードMD0に復帰できる。すなわち、この実施形態では、DSP30が用いられているシステム全体の性能を劣化させることなく、省電力化できる。
以上、この実施形態では、モード制御部40は、メイン処理MAINおよび割り込み処理INTのいずれも実施されない期間では、未実施の割り込み処理INTの制約時間LT(より詳細には、制約時間LTに基づいて算出される復帰制約時間RLT)と、復帰時間RTと、周期Tの残り時間ETとに基づいて、DSP30の動作モードを設定する。この結果、この実施形態では、プロセッサシステム10の性能を劣化させずに省電力化できる。
図12は、別の実施形態におけるDSP30の動作モードの遷移の一例を示している。この実施形態では、周期Tの終了間際における動作モードの制御方法が、上述した図11と相違している。すなわち、この実施形態では、モード制御部40の動作およびモード選択テーブル52が、上述した図1−図11に示した実施形態と相違している。その他の動作および構成は、図1−図11と同じである。図1−図11で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
図中の過渡時間TRT1は、電圧制御モードMD2から周波数制御モードMD1に遷移するまでの時間を示し、過渡時間TRT2は、電源制御モードMD3から電圧制御モードMD2に遷移するまでの時間を示している。例えば、過渡時間TRTは、省電力化のための制御方法、製造プロセスおよびレイアウト等が決まった時点で算出される。
また、図中の時間RT12は、周期Tの終了間際に、DSP30の動作モードを周波数制御モードMD1から通常モードMD0に遷移させる際のトリガとなる残り時間を示している。時間RT22は、周期Tの終了間際に、DSP30の動作モードを電圧制御モードMD2から周波数制御モードMD1に遷移させる際のトリガとなる残り時間を示している。時間RT32は、周期Tの終了間際に、DSP30の動作モードを電源制御モードMD3から電圧制御モードMD2に遷移させる際のトリガとなる残り時間を示している。以下、時間RT12、RT22、RT32を、それぞれ第2復帰時間RT12、RT22、RT32とも称する。
図中の期間KT1は、例えば、第2復帰時間RT12と復帰時間RT10との差分であり、周波数制御モードMD1から通常モードMD0に遷移したときに、周期Tが終了するまでの時間(次の周期Tが開始するまでの時間)を示している。また、例えば、期間KT2は、電圧制御モードMD2から周波数制御モードMD1に遷移したときに、周波数制御モードMD1に維持される最大時間を示し、期間KT3は、電源制御モードMD3から電圧制御モードMD2に遷移したときに、電圧制御モードMD2に維持される最大時間を示している。
図の最初の周期Tでは、割り込み処理INT2の終了により、DSP30の動作モードが通常モードMD0から電源制御モードMD3に遷移するまで(図12の(h))、プロセッサシステム10の動作は、上述した図11に示した最初の周期Tと同じである。
電源制御モードMD3(モード制御部40のステートST3)では、モード制御部40は、割り込み処理INTの発生および残り時間ETを監視する。そして、残り時間ETが第2復帰時間RT32以下になったときに、DSP30の動作モードは、電源制御モードMD3から1つ上の電圧制御モードMD2に遷移する(図12の(i1))。その後、残り時間ETが第2復帰時間RT22以下になったときに、DSP30の動作モードは、電圧制御モードMD2から1つ上の周波数制御モードMD1に遷移する(図12の(i2))。そして、残り時間ETが第2復帰時間RT12以下になったときに、DSP30の動作モードは、周波数制御モードMD1から1つ上の通常モードMD0に遷移する(図12の(i3))。このように、この実施形態では、周期Tの終了間際にDSP30の動作モードが省電力モードMD1−3から通常モードMD0に戻る場合、DSP30の動作モードは、1つ上の動作モードを経由して段階的に推移する。
図の2番目の周期Tでは、割り込み処理INT3の終了により、DSP30の動作モードが通常モードMD0から電源制御モードMD3に遷移するまで(図12の(o))、プロセッサシステム10の動作は、上述した図11に示した最初の周期Tと同じである。
電源制御モードMD3(モード制御部40のステートST3)では、モード制御部40は、割り込み処理INTの発生および残り時間ETを監視する。そして、残り時間ETが第2復帰時間RT32以下になったときに、DSP30の動作モードは、電源制御モードMD3から1つ上の電圧制御モードMD2に遷移する(図12の(p1))。そして、残り時間ETが第2復帰時間RT22以下になる前に発生した割り込み処理INT4により、DSP30の動作モードは、電源制御モードMD3から通常モードMD0に遷移する(図12の(p2))。このように、周期Tの終了間際にDSP30の動作モードを段階的に推移させているため、周期Tの終了間際に割り込み処理INTが発生したときに、DSP30は、短い復帰時間(図の例では、復帰時間RT30より小さい復帰時間RT20)で通常モードMD0の動作を開始できる。
割り込み処理INT4が終了したとき、DSP30の動作モードは、通常モードMD0から周波数制御モードMD1に遷移する(図12の(q1))。例えば、割り込み処理INT4が終了したときに、割り込み状態レジスタ60が更新され、モード制御部40の状態は、ステートST0から判定ステートSTJに遷移する。この時点では、割り込み状態レジスタ60は、割り込み処理INT1−4の全てが終了したことを示している。また、周期Tの残り時間ETは、第2復帰時間RT22より小さく、第2復帰時間RT12より大きい。このため、モード制御部40は、後述する図13に示すモード選択テーブル53の“全て済み”の列から、“RT22≧ET>RT12”の行の周波数制御モードMD1を選択し、DSP30の動作モードを周波数制御モードMD1に設定する。
そして、残り時間ETが復帰時間RT12以下になったときに、DSP30の動作モードは、周波数制御モードMD1から通常モードMD0に遷移する(図12の(r1))。これにより、各周期Tの開始時に、DSP30は、通常モードMD0で動作できる(図11の(a)、(j)、(s))。なお、各周期Tの開始時に、割り込み状態レジスタ60は、クリアされる(状態CONが全て“未”に設定される)。
図13は、図12に示した動作を実現するためのモード選択テーブル53の一例を示している。モード選択テーブル53は、DSP30の動作モードを分類するための残り時間ETの範囲が、上述した図6に示したモード選択テーブル52と相違している。その他の構成は、図6に示したモード選択テーブル52と同じである。例えば、モード選択テーブル53では、周期Tの残り時間ET(次の周期Tが開始されるまでの時間)は、第2復帰時間RT12、RT22、RT32に基づいて分類されている。
例えば、残り時間ETが第2復帰時間RT32より大きい場合、DSP30の動作モードは、通常モードMD0および省電力モードMD1−3の中から選択される。また、例えば、残り時間ETが第2復帰時間RT32以下で、かつ、第2復帰時間RT22より大きい場合、DSP30の動作モードは、通常モードMD0および省電力モードMD1−2の中から選択される。同様に、例えば、残り時間ETが第2復帰時間RT22以下で、かつ、第2復帰時間RT12より大きい場合、DSP30の動作モードは、通常モードMD0および省電力モードMD1の中から選択される。なお、例えば、残り時間ETが第2復帰時間RT12以下の場合、DSP30は、割り込み処理INTの状態に拘わらず、通常モードMD0に設定される。
図14は、図12に示した動作を実現するためのDSP30の動作モードの制御方法の一例を示している。なお、図14は、モード制御部40のステートの遷移を示している。図14の動作は、ステートST1−3の動作が上述した図9と相違している。その他の動作は、上述した図9と同じである。
ステートST1−3では、モード制御部40は、割り込み処理INTの発生および残り時間ETを監視する。そして、モード制御部40は、割り込み処理INTが発生したとき、DSP30の動作モードを通常モードMD0に設定し、残り時間ETが第2復帰時間RT(RT12、RT22、RT32)以下になるときに、DSP30の動作モードを1つ上の動作モードに設定する。このように、例えば、省電力モードMD1−3では、図13に示したモード選択テーブル53が参照されることなく、第2復帰時間RT以下になる残り時間ETの検出をトリガにして、DSP30の動作モードは、1つ上の動作モードに遷移する。
図15は、図14に示したステートST1−3の動作の一例を示している。なお、図15に示した処理は、モード制御部40により実施される。
先ず、処理300では、モード制御部40は、割り込み処理INTが発生したか否かを判定する。割り込み処理INTが発生した場合(処理300のYes)、モード制御部40の動作は、処理320に移り、モード制御部40は、DSP30の動作モードを通常モードMD0に設定する。また、割り込み処理INTが発生していない場合(処理300のNo)、モード制御部40の動作は、処理310に移る。
処理310では、モード制御部40は、周期T内の残り時間ETが第2復帰時間RT(RT12、RT22、RT32)以下か否かを判定する。残り時間ETが第2復帰時間RT以下の場合(処理310のYes)、モード制御部40の動作は、処理330に移り、モード制御部40は、DSP30の動作モードを1つ上の動作モードに設定する。また、残り時間ETが第2復帰時間RTより大きい場合(処理310のNo)、モード制御部40の動作は、処理300に移る。このように、処理300、310により、割り込み処理INTの発生および残り時間ETが監視される。
以上、この実施形態においても、上述した図1−図11で説明した実施形態と同様の効果を得ることができる。
図16は、別の実施形態における割り込み状態レジスタ62の一例を示している。この実施形態のプロセッサシステム10では、上述した図1に示した割り込み状態レジスタ60の代わりに割り込み状態レジスタ62が設けられている。また、割り込み状態レジスタ62の更新動作が上述した図1−図11に示した実施形態と相違している。その他の動作および構成は、図1−図11と同じである。図1−図11で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。図中の“終了”および“未”の意味は、上述した図7と同じである。
割り込み状態レジスタ62は、周期T毎に割り込み処理INT1−4の発生履歴を保持する書き換え可能なレジスタである。割り込み状態レジスタ62の設定周期PEには、割り込み処理INT1−4毎に、発生周期が予め設定される。例えば、設定周期PEに“0”が設定されている割り込み処理INT1、INT4は、各周期Tで発生する。また、例えば、設定周期PEに“1”が設定されている割り込み処理INT2は、2周期Tに1回の割合で発生する。また、例えば、設定周期PEに“2”が設定されている割り込み処理INT3は、3周期Tに1回の割合で発生する。
すなわち、割り込み状態レジスタ62の設定周期PEに設定されている値(以下、単に、設定周期PEとも称する)は、割り込み処理INTが発生する周期T間の周期Tの数を示している。周期カウンタ値TCVは、割り込み処理INTが発生した後の周期Tの回数を示し、周期Tの開始毎に設定周期PEまでカウントアップされる。なお、前回の周期カウンタ値TCVが設定周期PEまでカウントアップされている場合、周期カウンタ値TCVは“0”に戻される。すなわち、正常に動作している場合、周期カウンタ値TCVは、割り込み処理INTが発生する予定の周期Tの開始時に、“0”に設定される。
図17は、図16に示した割り込み状態レジスタ62の周期カウンタ値TCVの更新動作の一例を示している。例えば、周期カウンタ値TCVの更新動作は、各周期Tの開始時に実施される。処理400では、前回の周期カウンタ値TCV(前の周期Tに設定された周期カウンタ値TCV)が設定周期PEより小さく、かつ、割り込み処理INTが終了しているか否かを判定する。前回の周期カウンタ値TCVが設定周期PEより小さく、かつ、割り込み処理INTが終了している場合(処理400のYes)、処理410において、周期カウンタ値TCVはカウントアップしされ、状態CONは“終了”に設定される。一方、前回の周期カウンタ値TCVが設定周期PEと等しい場合、あるいは、割り込み処理INTが終了していない場合(処理400のNo)、処理420において、周期カウンタ値TCVは“0”に設定され、状態CONは“未”に設定される。
図18は、図16に示した割り込み状態レジスタ62の更新動作の一例を示している。なお、図18は、割り込み状態レジスタ62の周期カウンタ値TCVおよび状態CONのうち、割り込み処理INT1−3に対応する周期カウンタ値TCV1−3および状態CON1−3の更新動作を示している。また、図18では、上述した図16に示した設定周期PEが“0”に設定されている割り込み処理INT4に対応する周期カウンタ値TCVおよび状態CONの更新動作の記載を省略している。例えば、割り込み処理INT4に対応する周期カウンタ値TCVおよび状態CONの更新動作は、設定周期PEが“0”に設定されている割り込み処理INT1に対応する周期カウンタ値TCV1および状態CON1の更新動作と同じである。
上述した図16で説明したように、周期カウンタ値TCVは、割り込み処理INTが発生する予定の周期Tの開始時に、“0”に設定される。このため、例えば、割り込み状態レジスタ62は、起動直後に、上述した図1に示した周期開始信号STにより、図の周期T0の開始時の状態にリセットされる。例えば、割り込み処理INT1に対応する周期カウンタ値TCV1および状態CON1は、起動直後のリセットにより、“0”および“未”にそれぞれ設定される。
また、例えば、割り込み処理INT2に対応する周期カウンタ値TCV2および状態CON2は、起動直後のリセットにより、“1”および“終了”にそれぞれ設定される。同様に、例えば、割り込み処理INT3に対応する周期カウンタ値TCV3および状態CON3は、起動直後のリセットにより、“1”および“終了”にそれぞれ設定される。なお、例えば、周期T1で割り込み処理INT3が最初に発生する場合、起動直後のリセットにより、周期カウンタ値TCV3および状態CON3は、“2”および“終了”にそれぞれ設定される。周期T1以降は、上述した図17に示した動作により、周期カウンタ値TCVが更新される。また、割り込み状態レジスタ62の状態CONは、割り込み処理INTの終了により、“終了”に更新される。
例えば、図16に示した設定周期PEに“0”が設定されている割り込み処理INT1では、前の周期Tに設定された周期カウンタ値TCV1が設定周期PEより小さくなることがないため(図17に示した処理400のNo)、周期カウンタ値TCV1は、常に“0”に設定される。また、例えば、割り込み処理INT1が正常に発生しなかった周期T3では、状態CON1は、“終了”に設定されることなく、“未”に維持される。そして、周期T4の開始時に、図17に示した処理420により、周期カウンタ値TCV1および状態CON1は、“0”および“未”にそれぞれ設定される。これにより、周期T4以降では、DSP30は、割り込み処理INT1の処理を正常に実施できる。
例えば、設定周期PEに“1”が設定されている割り込み処理INT2では、周期T1の開始時に、周期T0の周期カウンタ値TCV2および状態CON2が“1”および“終了”にそれぞれ設定されているため(図17に示した処理400のNo)、周期カウンタ値TCV2および状態CON2は、“0”および“未”にそれぞれ設定される。そして、周期T2の開始時に、周期T1の周期カウンタ値TCV2および状態CON2が“0”および“終了”にそれぞれ設定されているため(図17に示した処理400のYes)、周期カウンタ値TCV2は、“1”にカウントアップされ、状態CON2は、“終了”に維持される。
なお、例えば、割り込み処理INT2が正常に発生しなかった周期T5では、状態CON2は、“未”に維持される。そして、周期T6の開始時に、図17に示した処理420により、周期カウンタ値TCV2および状態CON2は、“0”および“未”にそれぞれ設定される。周期T6で割り込み処理INT2が発生したため、周期T7の開始時に、図17に示した処理410により、周期カウンタ値TCV2は、“1”にカウントアップされ、状態CON2は、“終了”に維持される。そして、周期T8の開始時に、図17に示した処理420により、周期カウンタ値TCV2および状態CON2は、“0”および“未”にそれぞれ設定される。このように、周期T6以降では、割り込み処理INT2は、2周期Tに1回の割合で発生する正常な状態に戻る。これにより、周期T6以降では、周期カウンタ値TCV2は、割り込み処理INT2が発生する予定の周期Tの開始時に、“0”に設定される。
例えば、設定周期PEに“2”が設定されている割り込み処理INT3では、周期T1の開始時に、周期T0の周期カウンタ値TCV3および状態CON3が“1”および“終了”にそれぞれ設定されているため(図17に示した処理400のYes)、周期カウンタ値TCV3は、“2”にカウントアップされ、状態CON3は、“終了”に維持される。そして、周期T2の開始時に、周期T1の周期カウンタ値TCV3および状態CON3が“2”および“終了”にそれぞれ設定されているため(図17に示した処理400のNo)、周期カウンタ値TCV3および状態CON3は、“0”および“未”にそれぞれ設定される。そして、周期T3の開始時に、周期T2の周期カウンタ値TCV3および状態CON3が“0”および“終了”にそれぞれ設定されているため(図17に示した処理400のYes)、周期カウンタ値TCV3は、“1”にカウントアップされ、状態CON3は、“終了”に維持される。
なお、例えば、周期T6では、予定外の割り込み処理INT3が発生している。周期T6では、割り込み処理INT3が発生する前に、状態CON3が“終了”に設定されているため、割り込み処理INT3の発生に拘わらず、状態CON3は、“終了”に維持される。そして、周期T7の開始時に、周期T6の周期カウンタ値TCV3および状態CON3が“1”および“終了”にそれぞれ設定されているため(図17に示した処理400のYes)、周期カウンタ値TCV3は、“2”にカウントアップされ、状態CON3は、“終了”に維持される。
そして、周期T8の開始時に、図17に示した処理420により、周期カウンタ値TCV3および状態CON3は、“0”および“未”にそれぞれ設定される。なお、周期T8では、周期カウンタ値TCV3が“0”に設定されるが、周期T6で割り込み処理INT3が発生したため、割り込み処理INT3は発生しない。そして、周期T9の開始時に、図17に示した処理420により、周期カウンタ値TCV3および状態CON3は、“0”および“未”にそれぞれ設定される。周期T9で割り込み処理INT3が発生したため、周期T10の開始時に、図17に示した処理410により、周期カウンタ値TCV3は、“1”にカウントアップされ、状態CON3は、“終了”に維持される。そして、周期T11の開始時に、図17に示した処理410により、周期カウンタ値TCV3は、“2”にカウントアップされ、状態CON3は、“終了”に維持される。
周期T12の開始時に、図17に示した処理420により、周期カウンタ値TCV3および状態CON3は、“0”および“未”にそれぞれ設定される。このように、周期T9以降では、割り込み処理INT3は、3周期Tに1回の割合で発生する正常な状態に戻る。これにより、周期T9以降では、周期カウンタ値TCV3は、割り込み処理INT3が発生する予定の周期Tの開始時に、“0”に設定される。
上述したように、割り込み処理INTが正常に発生しなかった場合や予定外の割り込み処理が発生した場合でも、数周期T後には、割り込み状態レジスタ62は、周期カウンタ値TCVが“0”に設定された周期Tに割り込み処理INTが発生することを示す状態に復帰できる。これにより、例えば、この実施形態では、プロセッサシステム10がデッドロックすることを防止できる。なお、周期T0で割り込み処理INTが発生するかどうかに拘わらず、起動直後のリセットで、周期カウンタ値TCVおよび状態CONは、“0”および“未”にそれぞれ設定されてもよい。この場合、周期カウンタ値TCVおよび状態CONは、割り込み処理INTが最初に発生するまで、“0”および“未”にそれぞれ維持される。以上、この実施形態においても、上述した図1−図11で説明した実施形態と同様の効果を得ることができる。
なお、上述した実施形態では、プロセッサシステム10が携帯端末に用いられる場合の例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、プロセッサシステム10は、周期的に動作し、かつ、外部からの信号(割り込み処理INTに対応)により起動停止等を制御されるデバイスを有する装置に用いられてもよい。この場合、例えば、プロセッサシステム10は、上述した図1に示したDSP30の代わりに、上述の外部からの信号により起動停止等を制御されるデバイスを有する。この場合にも、上述した実施形態と同様の効果を得ることができる。
上述した実施形態では、割り込み処理INTの数が4つの場合の例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、割り込み処理INTの数は、1つ以上であればよく、3つ以下でもよいし、5つ以上でもよい。この場合にも、上述した実施形態と同様の効果を得ることができる。
上述した実施形態では、省電力モードの数が3つの場合の例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、省電力モードの数は、1つ以上であればよく、2つ以下でもよいし、4つ以上でもよい。また、例えば、省電力化の方式は、上述した省電力モードMD1−3の方式に限定されるものではない。例えば、DSP30は、動作周波数の制御と電源電圧の制御の両方を実施する省電力モードを有してもよい。この場合にも、上述した実施形態と同様の効果を得ることができる。
上述した実施形態では、割り込み処理INTが周期T内で終了する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、周期Tの終了間際(残り時間ETが少ないとき)に発生した割り込み処理INTは、割り込み処理INTが発生した周期Tの次の周期Tに終了してもよい。なお、この場合、例えば、上述した図7に示した割り込み状態レジスタ60は、メイン処理MAINの開始時に、クリアされる(状態CONが全て“未”に設定される)。また、この場合でも、DSP30は、割り込み処理INTが発生した周期T内に、割り込み処理INTに対する応答RESのための演算を開始できる。このため、DSP30が用いられているシステム全体の性能が劣化することを防止できる。この場合にも、上述した実施形態と同様の効果を得ることができる。
上述した実施形態では、モード制御部40が、図10に示した処理210で、復帰制約時間RLTが最小の未実施の割り込み処理INTを検出する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、モード制御部40は、割り込み処理INT1−4の状態を検出し、割り込み処理INT1−4の状態に対応して分類されたモード選択テーブル(後述する図19に示すモード選択テーブル54)を用いることにより、上述した図10に示した処理210を省いてもよい。この場合にも、上述した実施形態と同様の効果を得ることができる。
上述した実施形態では、1つのモード選択テーブル52が用いられる例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、プロセッサシステム10が複数の動作モードを有する場合、プロセッサシステム10の複数の動作モードにそれぞれ対応する複数のモード選択テーブル52を有してもよい。この場合、例えば、モード制御部40は、プロセッサシステム10の動作モードに応じて、参照するモード選択テーブルを複数のモード選択テーブルから選択する。この場合にも、上述した実施形態と同様の効果を得ることができる。
図19は、プロセッサシステム10が2つのモード選択テーブルを有する場合のモード選択テーブル54、55の一例を示している。なお、図19の“X”は、割り込み処理INTが終了および未実施のどちらでもよいことを示している。例えば、モード選択テーブル54は、各省電力モードMD1−3から通常モードMD0に復帰するまでの復帰時間RTと割り込み処理INTの復帰制約時間RLTとの関係が上述した実施形態と同じ場合(RT1<RT10≦RLT2<RT20≦RLT3<RT30≦RLT4)に対応する。
モード選択テーブル54は、割り込み処理INTの状態を示す情報および分類される状態の数が、上述した図6に示したモード選択テーブル52と相違している。その他の構成は、図6に示したモード選択テーブル52と同じである。例えば、モード選択テーブル54の“未、X、X、X”、“終了、未、X、X”および“終了、終了、未、X”の列は、図6に示したモード選択テーブル52の“INT1未”、“INT2未”および“INT3未”の列にそれぞれ対応している。また、モード選択テーブル54の“終了、終了、終了、X”の列は、図6に示したモード選択テーブル52の“INT4未”および“全て済み”の両方の列に対応している。
また、例えば、モード選択テーブル55は、割り込み処理INT2の復帰制約時間RLTと割り込み処理INT3の復帰制約時間RLTとが上述した実施形態と逆の場合(RT1<RT10≦RLT3<RT20≦RLT2<RT30≦RLT4)に対応する。なお、モード選択テーブル55の網掛けは、モード選択テーブル54と相違する部分を示している。すなわち、モード選択テーブル55は、図の網掛け部分(割り込み処理INT2、INT3の状態の組み合わせ(その組み合わせに対応する動作モードも含む))を除いて、モード選択テーブル54と同じである。
例えば、周期Tの残り時間ETが復帰時間RT20より大きいときに、割り込み処理INT1、INT2が終了し、割り込み処理INT3が未実施の場合、参照されるモード選択テーブル54、55に応じて、選択される動作モードが異なる。あるいは、周期Tの残り時間ETが復帰時間RT20より大きいときに、割り込み処理INT1、INT3が終了し、割り込み処理INT2が未実施の場合、参照されるモード選択テーブル54、55に応じて、選択される動作モードが異なる。
例えば、割り込み処理INT1、INT2が終了し、割り込み処理INT3が未実施で、かつ、残り時間ETが復帰時間RT30より大きい場合、モード選択テーブル54を参照したモード制御部40は、DSP30の動作モードとして、省電力モードMD2を選択する。これに対し、モード選択テーブル55が参照された場合、モード制御部40は、DSP30の動作モードとして、省電力モードMD1を選択する。このように、プロセッサシステム10の動作モードに応じて、参照されるモード選択テーブル54、55を切りかえることにより、モード制御部40は、DSP30の動作モードを、通常モードMD0および省電力モードMD1−3から簡易に選択できる。
なお、モード制御部40は、モード選択テーブル54、55を参照する場合、未実施の割り込み処理INTのうち、復帰制約時間RLTが最小の割り込み処理INTを検出することなく、DSP30の動作モードを選択できる。すなわち、モード選択テーブル54、55が参照される場合、モード制御部40は、割り込み処理INT1−4の状態を検出することにより、上述した図10に示した処理210を省くことができる。また、プロセッサシステム10は、上述した図6に示したモード選択テーブル52と同じ構成の複数のモード選択テーブルを有してもよい。この場合、モード制御部40は、図10に示した処理210において、プロセッサシステム10の動作モードに対応する復帰制約時間RLTを用いて、復帰制約時間RLTが最小の未実施の割り込み処理INTを検出する。この場合にも、上述した実施形態と同様の効果を得ることができる。
また、例えば、モード選択テーブル55に対応するプロセッサシステム10の動作モードで、割り込み処理INT1が使用されない場合、モード選択テーブル55の“INT1”が“未”に対応する列および“INT1”の行が削除されたモード選択テーブルが用いられる。この場合、例えば、割り込み状態レジスタ60の割り込み処理INT1に対応する状態CONは、クリアされることなく、常に、“終了”に設定される。なお、モード選択テーブルを参照する際に、割り込み処理INT1の状態の内容が反映されない場合、割り込み処理INT1に対応する状態CONは、“未”に設定されてもよい。
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
10‥プロセッサシステム;20‥CPU;30‥DSP;40‥モード制御部;50‥メモリ;52‥モード選択テーブル;60‥割り込み状態レジスタ;70‥監視部;80‥補助ハードウェア;90‥電力制御部