(57)【要約】【課題】プロセッシングユニットを休止状態から高速に復帰させることができるデータ処理装置を提供する。【解決手段】複数のプロセッシングユニットを有するデータ処理装置において、特定の命令を実行して休止されたプロセッシングユニットを動作可能な状態に復帰させるのに、割り込みを用いるほかに、プロセッシングユニットが書き換え可能な制御ビットに対する所定値への書き換えに応答する復帰処理、さらには、休止状態のプロセッシングユニットに対するタスクスケジューリングに応答する復帰処理を用いるようにする。これにより、休止状態からの復帰に割り込み処理による所要の処理を要する場合以外は、他のプロセッシングユニットによる制御ビットの書き換え又はタスクスケジューリングを行えばよい。制御ビットの書き換え又はタスクスケジューリングを行えば、空処理を伴う割り込み処理を行うことを要しない。【選択図】図３
2013041366.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行する複数個のプロセッシングユニットと、
前記プロセッシングユニットによる特定の命令の実行に応答して当該プロセッシングユニットによる新たな命令実行を休止させる制御を行うと共に、プロセッシングユニットに対応して設けられた制御ビットの所定値への書き換え又は当該プロセッシングユニットへの割り込み発生に応答して命令の実行休止を解除する制御を行う制御回路と、を有し、
前記プロセッシングユニットによって書き換え可能な制御レジスタが前記制御ビットを有する、データ処理装置。
【請求項２】
前記命令実行を休止させる制御は、プロセッシングユニットが有する中央処理装置への同期クロック信号の供給を停止させる制御であり、
前記命令の実行休止を解除する制御は、前記中央処理装置への同期クロック信号の供給を再開させる制御である、請求項１記載のデータ処理装置。
【請求項３】
前記命令実行を休止させる制御は、前記制御レジスタが保有するモードビットが第１の値のとき対応するプロセッシングユニットの内部メモリへの同期クロック信号の供給を維持させながら前記中央処理装置への同期クロック信号の供給を停止させ、前記モードビットが第２の値のとき前記中央処理装置及び前記内部メモリに対する同期クロック信号の供給を停止させる制御であり、
前記命令の実行休止を解除する制御は、前記モードビットが第１の値のとき前記制御ビットの所定値への書き換えに応答して対応する中央処理装置への同期クロック信号の供給を再開させ、前記モードビットが第２の値のとき前記制御ビットの所定値への書き換えに応答して対応する中央処理装置及び前記内部メモリへの同期クロック信号の供給を再開させる制御である、請求項２記載のデータ処理装置。
【請求項４】
前記プロセッシングユニットは、自らが処理するタスクのスケジューリングが行われているか否かを判別し、スケジューリングされているときはそのタスクの実行に遷移させ、スケジューリングされていないときは前記特定の命令を実行する、アイドルループ処理を行う、請求項１記載のデータ処理システム。
【請求項５】
前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから前記制御レジスタの制御ビットを所定値に書き換える第１のタスク起動処理を行う、請求項４記載のデータ処理システム。
【請求項６】
割り込み要求に応答して前記プロセッシングユニットに割り込み信号を出力する割り込みコントローラを有し、
前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから当該他のプロセッシングユニットに対する割り込み要求を前記割り込みコントローラに出力する第２のタスク起動処理を行い、
前記割り込みコントローラは前記第２のタスク起動処理による割り込み要求に応答して割り込み信号を他のプロセッシングユニットに出力する、請求項４記載のデータ処理システム。
【請求項７】
命令を実行する複数個のプロセッシングユニットと、
前記プロセッシングユニットが処理するタスクのスケジューリングを行うための制御データが格納されるメモリと、
前記プロセッシングユニットによる特定の命令の実行に応答して当該プロセッシングユニットによる新たな命令実行を休止させる制御を行うと共に、当該プロセッシングユニットが処理するタスクのタスク制御データが前記メモリの所定アドレスに格納されること又は当該プロセッシングユニットへの割り込みが発行されることに応答して命令の実行休止を解除する制御を行う制御回路と、を有するデータ処理装置。
【請求項８】
前記特定の命令が前記所定アドレスを指定する、請求項７記載のデータ処理装置。
【請求項９】
前記命令実行を休止させる制御は、プロセッシングユニットが有する中央処理装置への同期クロック信号の供給を停止させる制御であり、
前記命令の実行休止を解除する制御は、前記中央処理装置への同期クロック信号の供給を再開させる制御である、請求項７記載のデータ処理装置。
【請求項１０】
前記命令実行を休止させる制御は、制御レジスタが保有するモードビットが第１の値のとき対応するプロセッシングユニットの内部メモリへの同期クロック信号の供給を維持させながら前記中央処理装置への同期クロック信号の供給を停止させ、前記モードビットが第２の値のとき前記中央処理装置及び前記内部メモリに対する同期クロック信号の供給を停止させる制御であり、
前記命令の実行休止を解除する制御は、前記モードビットが第１の値のとき前記タスク制御データの格納に応答して対応する中央処理装置への同期クロック信号の供給を再開させ、前記モードビットが第２の値のとき前記タスク制御データの格納に応答して対応する中央処理装置及び前記内部メモリへの同期クロック信号の供給を再開させる制御である、請求項９記載のデータ処理装置。
【請求項１１】
前記プロセッシングユニットは、自らが処理するタスクのスケジューリングが行われているか否かを判別し、スケジューリングされているときはそのタスクの実行に遷移させ、スケジューリングされていないときは前記特定の命令を実行する、アイドルループ処理を行う、請求項７記載のデータ処理システム。
【請求項１２】
前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから前記タスク制御データを前記メモリに書き込む第１のタスク起動処理を行う、請求項１１記載のデータ処理システム。
【請求項１３】
割り込み要求に応答して前記プロセッシングユニットに割り込み信号を出力する割り込みコントローラを有し、
前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから当該他のプロセッシングユニットに対する割り込み要求を前記割り込みコントローラに出力する第２のタスク起動処理を行い、
前記割り込みコントローラは前記第２のタスク起動処理による割り込み要求に応答して割り込み信号を他のプロセッシングユニットに出力する、請求項１１記載のデータ処理システム。
【請求項１４】
命令を実行する複数個のプロセッシングユニットと、
前記プロセッシングユニットに同期クロック信号を供給するクロック制御回路と、
前記プロセッシングユニットによって書き換え可能な制御レジスタと、を有し、
前記クロック制御回路は、前記プロセッシングユニットによる特定の命令の実行に応答して当該プロセッシングユニットへの同期クロック信号の供給を停止し、前記制御レジスタに対する所定値の書き込み又は同期クロック信号の供給を停止しているプロセッシングユニットへの割り込み発生に応答して前記同期クロック信号の供給停止を解除する、データ処理装置。
【請求項１５】
命令を実行する複数個のプロセッシングユニットと、
前記プロセッシングユニットが処理するタスクのスケジューリングを行うための制御データが格納されるメモリと、
前記プロセッシングユニットに同期クロック信号を供給するクロック制御回路と、を有し、
前記プロセッシングユニットの命令セットは低消費電力制御命令を含み、
前記低消費電力制御命令は、この命令を実行したプロセッシングユニットへの同期クロック信号の供給を停止させ、当該プロセッシングユニットが処理する新たなタスクを別のプロセッシングユニットが前記メモリにスケジューリングすること又は当該プロセッシングユニットへ割り込みが発行されることを待って前記クロック制御回路に前記同期クロック信号の供給停止を解除させる命令である、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッシングユニットを複数持つデータ処理装置の低消費電力制御に関し、例えば対象型マルチプロセッシング（SMP：Symmetric Multiprocessing）によるデータ処理を行うマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
マイクロコンピュータにはスリープモードなどの低消費電力モードを持つものがある。例えば中央処理装置（ＣＰＵ）がスリープ命令を実行することによって当該ＣＰＵへの同期クロック信号の供給を止めて新たな命令実行を休止させるような休止状態に遷移する。特許文献１，２にはそのような低消費電力モードについて記載があり、この低消費電力モードから抜けて新たな命令を実行可能な状態に復帰するにはＣＰＵに対する割り込みが利用される。例えば外部から割り込み要求があると、割り込みコントローラが割り込み信号をＣＰＵに与えるとき、クロック制御回路にＣＰＵへの同期クロックの供給を再開させ、それによってＣＰＵは割り込み要求に応答する処理が可能になる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願平４−８７０４３号公報
【特許文献２】特開２００２−１６３０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明者は複数のプロセッシングユニットに処理を分散させるマルチプロセッシングにおける低消費電力モードについて検討した。プロセッシングユニットは少なくとも命令を実行する中央処理装置（ＣＰＵ）を含む回路モジュールである。
【０００５】
プロセッシングユニットを休止状態から動作可能な状態に復帰するには何らかの復帰処理が必要である。プロセッシングユニットを１個しか持たないマイクロコンピュータ（以下単にシングルコアマイコンとも記す）の場合、プロセッシングユニットを休止するとシステム動作を行うことはできないから、外部割込みやシステムリセットなどを用いてプロセッシングユニットを休止状態から復帰させなければならない。
【０００６】
これに対してプロセッシングユニットを複数持つマイクロコンピュータ（以下単にマルチコアマイコンとも記す）の場合、全てのプロセッシングユニットが休止状態にならない限りマルチコアシステムとしての動作を続けることができるから、外部割り込みのほかに、動作中の他のプロセッシングユニットからの割り込み要求によって復帰させることも可能である。例えば、省電力を目的に一部のプロセッシングユニットを一時的に休止させておき、実行可能なタスクが一定数以上になるなど処理負荷が増加したら休止状態のプロセッシングユニットを復帰させる。このようなシステム動作が維持されたままの状態で一部のプロセッシングユニットが休止されるマルチコアマイコンでは、プロセッシングユニットの休止及び休止からの復帰に高速な処理が要望される。特に、復帰の手法としてシングルコアマイコンと同様に外部割り込みやリセットによる復帰しか使えない場合には、高速な復帰動作を実現することができない。割り込みによる復帰動作では、プロセッシングユニットは割り込み信号に応答して割り込み処理を行うことになり、単にプロセッシングユニットへの同期クロック信号の供給再開を行うだけでよい場合にも、空処理の割り込み処理を実行しなければならず、実質的に意味のない処理に時間を費やすことになり、復帰に無駄な時間が掛かってしまう。特許文献１，２ではそのようなマルチコアマイコンにおける休止からの復帰の事情について着眼されていない。
【０００７】
本発明の目的は、プロセッシングユニットを休止状態から高速に復帰させることができるデータ処理装置を提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、複数のプロセッシングユニットを有するデータ処理装置において、特定の命令を実行して休止されたプロセッシングユニットを動作可能な状態に復帰させるのに、割り込みを用いるほかに、プロセッシングユニットが書き換え可能な制御ビットに対する所定値への書き換えに応答する復帰処理、さらには、休止状態のプロセッシングユニットを対象とするタスクスケジューリングのための所定アドレスへのメモリアクセスに応答する復帰処理を用いるようにする。
【００１１】
これにより、休止状態からの復帰に割り込み処理により所要の処理を必要とする場合以外は、他のプロセッシングユニットによる制御ビットの書き換え又はタスクスケジューリングのためのメモリアクセスを行えばよい。制御ビットの書き換え又はタスクスケジューリングのためのメモリアクセスを行えば、空処理を伴う割り込み処理を行うことを要しない。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１３】
すなわち、プロセッシングユニットを休止状態から高速に復帰させることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は本発明の第１の実施の形態にかかるマルチコアマイコンを例示するブロック図である。
【図２】図２は制御レジスタにおける一つの制御レジスタ領域のレジスタフォーマットを例示するフォーマット図である。
【図３】図３は図１のマルチコアマイコンにおけるアクティブ状態と休止状態との間の遷移制御形態を例示する説明図である。
【図４】図４はタスク処理を管理するためのタスク変数とタスクコントロールフィールドとの関係を例示する説明図である。
【図５】図５はタスクスケジューリングとタスクディスパッチの処理例を示すフローチャートである。
【図６】図６はＯＳの管理の下でタスクによる処理の流れを振り分け管理するディスパッチャー処理の概略を例示するフローチャートである。
【図７】図７は省電力処理の一例を示すフローチャートである。
【図８】図８はプロセッシングユニットの休止状態を割り込みを介して解除する動作を例示するフローチャートである。
【図９】図９はプロセッシングユニットの休止状態をウェイクアップビットＷＵＰｘの操作によって解除する動作を例示するフローチャートである。
【図１０】図１０は本発明の第２の実施の形態にかかるマルチコアマイコンを例示するブロック図である。
【図１１】図１１は図１０のマルチコアマイコンにおけるアクティブ状態と休止状態との間の遷移制御形態を例示する説明図である。
【図１２】図１２はプロセッシングユニットの休止状態を所定のスケジュールタスク変数に対する書込み操作によって解除する動作を例示すフローチャートである。
【図１３】図１３は４個のプロセッシングユニットを備えたマルチコアマイコンの利用形態を例示する説明図である。
【図１４】図１４は図１３のシステムにおいて負荷が低下した状態を例示する説明図である。
【発明を実施するための形態】
【００１５】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕＜制御ビットの書き換えに応答して命令の実行休止を解除＞
本発明の代表的な実施の形態に係るデータ処理装置（１）は、命令を実行する複数個のプロセッシングユニット（１１、１２）と、前記プロセッシングユニットによる特定の命令（スリープ命令）の実行に応答して当該プロセッシングユニットによる新たな命令実行を休止させる制御を行うと共に、プロセッシングユニットに対応して設けられた制御ビット（ＷＰＵｘ）の所定値への書き換え又は当該プロセッシングユニットへの割り込み発生（ＩＮＴ１，ＩＮＴｎ）に応答して命令の実行休止を解除する制御を行う制御回路（２２）とを有する。前記プロセッシングユニットによって書き換え可能な制御レジスタ（３０）が前記制御ビットを有する。
【００１７】
これにより、休止状態からの復帰に、割り込み処理による所要の処理を要する場合以外は、他のプロセッシングユニットによる制御ビットの書き換えを行えばよい。制御ビットの書き換えを行えば、空処理を伴う割り込み処理を行うことを要しない。したがって、プロセッシングユニットを休止状態から高速に復帰させることができる。更に、簡単且つ頻繁にプロセッシングユニットの休止を使用できるようになり、省電力への貢献度を増すことが容易になる。
【００１８】
〔２〕＜スリープ命令の実行に応答する新たな命令実行の停止＞
項１のデータ処理装置において、前記命令実行を休止させる制御は、プロセッシングユニットが有する中央処理装置への同期クロック信号（ＣＬＫ１，ＣＬＫｎ）の供給を停止させる制御である。前記命令の実行休止を解除する制御は、前記中央処理装置への同期クロック信号の供給を再開させる制御である。
【００１９】
これにより、同期クロック信号の供給と停止で命令実行の停止と再開を制御するから、プロセッシングユニットの内部状態を維持して休止と再開の制御を容易に実現することができる。
【００２０】
〔３〕＜ライトスリープモード＞
項２のデータ処理装置において、前記命令実行を休止させる制御は、前記制御レジスタが保有するモードビット（ＬＴＳＬＰｘ）が第１の値のとき対応するプロセッシングユニットの内部メモリへの同期クロック信号の供給を維持させながら前記中央処理装置への同期クロック信号の供給を停止させ、前記モードビットが第２の値のとき前記中央処理装置及び前記内部メモリに対する同期クロック信号の供給を停止させる制御である。前記命令の実行休止を解除する制御は、前記モードビットが第１の値のとき前記制御ビットの所定値への書き換えに応答して対応する中央処理装置への同期クロック信号の供給を再開させ、前記モードビットが第２の値のとき前記制御ビットの所定値への書き換えに応答して対応する中央処理装置及び前記内部メモリへの同期クロック信号の供給を再開させる制御である。
【００２１】
これによれば、モードビットの状態に応じて、休止状態におけるプロセッシングユニットの省電力の大小とプロセッシングユニットの完全復帰までに要する時間の長短とを選択可能になる。
【００２２】
〔４〕＜タスクディスパッチ処理＞
項１乃至３の何れかのデータ処理装置において、前記プロセッシングユニットは、自らが処理するタスクのスケジューリングが行われているか否かを判別し、スケジューリングされているときはそのタスクの実行に遷移させ、スケジューリングされていないときは前記特定の命令を実行する処理（Ｓ２）を行う。
【００２３】
これによれば、実行すべきタスクがないときプロセッシングユニットは必ず休止状態になり、省電力を促進することができる。
【００２４】
〔５〕＜タスク起動処理＞
項４のデータ処理装置において、前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから前記制御レジスタの制御ビットを所定値に書き換える第１のタスク起動処理（Ｓ４３）を行う。
【００２５】
これによれば、制御ビットの書き換えによって休止状態から復帰するとき、復帰して実行すべきタスクが必ず存在する状態を保証することができ、プロセッシングユニットが無駄に復帰する事態の発生を未然に防止することができる。
【００２６】
〔６〕＜割り込みによる命令実行休止の解除とタスク起動＞
項４のデータ処理装置は、割り込み要求に応答して前記プロセッシングユニットに割り込み信号を出力する割り込みコントローラ（２１）を有する。前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから当該他のプロセッシングユニットに対する割り込み要求を前記割り込みコントローラに出力する第２のタスク起動処理を行う。前記割り込みコントローラは前記第２のタスク起動処理（Ｓ４１）による割り込み要求に応答して割り込み信号を他のプロセッシングユニットに出力する。
【００２７】
これによれば、割り込みによって休止状態から復帰するとき、復帰して実行すべきタスクが必ず存在する状態を保証することができ、プロセッシングユニットが無駄に復帰する事態の発生を未然に防止することができる。
【００２８】
〔７〕＜タスクスケジューリングに応答して命令の実行休止を解除＞
本発明の別の実施の形態に係るデータ処理装置（１Ａ）は、命令を実行する複数個のプロセッシングユニット（１１，１２）と、前記プロセッシングユニットが処理するタスクのスケジューリングを行うための制御データが格納されるメモリ（２）と、前記プロセッシングユニットによる特定の命令（拡張スリープ命令）の実行に応答して当該プロセッシングユニットによる新たな命令実行を休止させる制御を行うと共に、当該プロセッシングユニットが処理するタスクのタスク制御データが前記メモリの所定アドレスに格納されること又は当該プロセッシングユニットへの割り込みが発行されることに応答して命令の実行休止を解除する制御を行う制御回路（２２Ａ）と、を有する。
【００２９】
これにより、休止状態からの復帰に割り込み処理による所要の処理を要する場合以外は、他のプロセッシングユニットによるタスクスケジューリングを行えばよい。タスクスケジューリングのための制御データのメモリ格納動作を行えば、空処理を伴う割り込み処理を行うことを要しない。したがって、プロセッシングユニットを休止状態から高速に復帰させることができる。更に、簡単且つ頻繁にプロセッシングユニットの休止を使用できるようになり、省電力への貢献度を増すことが容易になる。
【００３０】
〔８〕＜特定の命令が所定アドレスを指定＞
項７のデータ処理装置において、前記特定の命令が前記所定アドレスを指定する。
【００３１】
これによれば、休止状態を解除する条件の一つである所定アドレスについても前記特定の命令で指定することができ、特定の命令実行で設定した休止状態からの復帰に対しても命令記述によって柔軟に対応することが可能になる。
【００３２】
〔９〕＜拡張スリープ命令の実行に応答する新たな命令実行の停止＞
項７のデータ処理装置において、前記命令実行を休止させる制御は、プロセッシングユニットが有する中央処理装置への同期クロック信号（ＣＬＫ１，ＣＬＫｎ）の供給を停止させる制御である。前記命令の実行休止を解除する制御は、前記中央処理装置への同期クロック信号の供給を再開させる制御である。
【００３３】
これにより、同期クロック信号の供給と停止で命令実行の停止と再開を制御するから、プロセッシングユニットの内部状態を維持して休止と再開の制御を容易に実現することができる。
【００３４】
〔１０〕＜ライトスリープモード＞
項９のデータ処理装置において、前記命令実行を休止させる制御は、制御レジスタ（３０Ａ）が保有するモードビット（ＬＴＳＬＰｘ）が第１の値のとき対応するプロセッシングユニットの内部メモリへの同期クロック信号の供給を維持させながら前記中央処理装置への同期クロック信号の供給を停止させ、前記モードビットが第２の値のとき前記中央処理装置及び前記内部メモリに対する同期クロック信号の供給を停止させる制御である。前記命令の実行休止を解除する制御は、前記モードビットが第１の値のとき前記タスク制御データの格納に応答して対応する中央処理装置への同期クロック信号の供給を再開させ、前記モードビットが第２の値のとき前記タスク制御データの格納に応答して対応する中央処理装置及び前記内部メモリへの同期クロック信号の供給を再開させる制御である。
【００３５】
これによれば、モードビットの状態に応じて、休止状態におけるプロセッシングユニットの省電力に大小とプロセッシングユニットの完全復帰までに要する時間の長短とを選択可能になる。
【００３６】
〔１１〕＜タスクディスパッチ処理＞
項７乃至１０の何れかのデータ処理装置において、前記プロセッシングユニットは、自らが処理するタスクのスケジューリングが行われているか否かを判別し、スケジューリングされているときはそのタスクの実行に遷移させ、スケジューリングされていないときは前記特定の命令を実行する処理（Ｓ２）を行う。
【００３７】
これによれば、実行すべきタスクがないときプロセッシングユニットは必ず休止状態になり、省電力を促進することができる。
【００３８】
〔１２〕＜タスク起動処理＞
項１１のデータ処理装置において、前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから前記タスク制御データを前記メモリに書き込む第１のタスク起動処理（Ｓ４６）を行う。
【００３９】
これによれば、制御ビットの書き換えによって休止状態から復帰するとき、復帰して実行すべきタスクが必ず存在する状態を保証することができ、プロセッシングユニットが無駄に復帰する事態の発生を未然に防止することができる。
【００４０】
〔１３〕＜割り込みによる命令実行休止の解除とタスク起動＞
項１１のデータ処理装置は、割り込み要求に応答して前記プロセッシングユニットに割り込み信号を出力する割り込みコントローラ（２１Ａ）をさらに有する。前記プロセッシングユニットは、命令実行が休止されている他のプロセッシングユニットに対するタスクのスケジューリングを行ってから当該他のプロセッシングユニットに対する割り込み要求を前記割り込みコントローラに出力する第２のタスク起動処理を行う。前記割り込みコントローラは前記第２のタスク起動処理による割り込み要求に応答して割り込み信号を他のプロセッシングユニットに出力する。
【００４１】
これによれば、割り込みによって休止状態から復帰するとき、復帰して実行すべきタスクが必ず存在する状態を保証することができ、プロセッシングユニットが無駄に復帰する事態の発生を未然に防止することができる。
【００４２】
〔１４〕＜制御ビットの書き換えに応答して命令の実行休止を解除＞
本発明の更に別の実施の形態に係るデータ処理装置（１）は、命令を実行する複数個のプロセッシングユニット（１１，１２）と、前記プロセッシングユニットに同期クロック信号を供給するクロック制御回路（２２）と、前記プロセッシングユニットによって書き換え可能な制御レジスタ（３０）と、を有する。前記クロック制御回路は、前記プロセッシングユニットによる特定の命令の実行に応答して当該プロセッシングユニットへの同期クロック信号の供給を停止し、前記制御レジスタに対する所定値の書き込み又は同期クロック信号の供給を停止しているプロセッシングユニットへの割り込み発生に応答して前記同期クロック信号の供給停止を解除する。
【００４３】
これにより、休止状態からの復帰に割り込み処理による所要の処理を要する場合以外は、他のプロセッシングユニットによる制御ビットの書き換えを行えばよい。制御ビットの書き換えを行えば、空処理を伴う割り込み処理を行うことを要しない。したがって、プロセッシングユニットを休止状態から高速に復帰させることができる。更に、簡単且つ頻繁にプロセッシングユニットの休止を使用できるようになり、省電力への貢献度を増すことが容易になる。
【００４４】
〔１５〕＜タスクスケジューリングに応答して命令の実行休止を解除＞
本発明の更に別の実施の形態に係るデータ処理装置（１Ａ）は、命令を実行する複数個のプロセッシングユニット（１１，１２）と、前記プロセッシングユニットが処理するタスクのスケジューリングを行うための制御データが格納されるメモリ（２）と、前記プロセッシングユニットに同期クロック信号を供給するクロック制御回路（２２Ａ）と、を有する。前記プロセッシングユニットの命令セットは低消費電力制御命令（拡張スリープ命令）を含む。前記低消費電力制御命令は、この命令を実行したプロセッシングユニットへの同期クロック信号の供給を停止させ、当該プロセッシングユニットが処理する新たなタスクを別のプロセッシングユニットが前記メモリにスケジューリングすること又は当該プロセッシングユニットへ割り込みが発行されることを待って前記クロック制御回路に前記同期クロック信号の供給停止を解除させる命令である。
【００４５】
これにより、休止状態からの復帰に割り込み処理による所要の処理を要する場合以外は、他のプロセッシングユニットによるタスクスケジューリングを行えばよい。タスクスケジューリングのための制御データのメモリ格納動作を行えば、空処理を伴う割り込み処理を行うことを要しない。したがって、プロセッシングユニットを休止状態から高速に復帰させることができる。更に、簡単且つ頻繁にプロセッシングユニットの休止を使用できるようになり、省電力への貢献度を増すことが容易になる。
【００４６】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００４７】
《実施の形態１》
図１には本発明の第１の実施の形態にかかるマルチコアマイコンが例示される。同図に示されるマルチコアマイコン１は、特に制限されないが、相補型ＭＯＳ集積回路製造技術によって単結晶シリコンなどの１個の半導体基板に形成される。
【００４８】
マルチコアマイコン（ＭＣＵ）１は、内部バス１３に接続された複数個のプロセッシングユニット（ＰＲＣＳ（＃１）、ＰＲＣＳ（＃ｎ））１１，１２を有する。夫々のプロセッシングユニット１１，１２は少なくとも命令を実行するＣＰＵを有し、ここでは更に浮動小数点演算ユニット、メモリマネージメントユニット、及びキャッシュメモリを備える。特に制限されないが、複数個のプロセッシングユニット１１，１２は、ＳＭＰを実現するＯＳ（オペレーティングシステム）の管理の下でアプリケーションプログラムを実行する。
【００４９】
内部バス１３はバスブリッジ（ＢＢＲＤＧ）１４を介して周辺バス１６にインタフェースされる。周辺バス２６には、割り込みコントローラ（ＩＮＴＣ）２１、クロック制御回路（ＣＰＣＮＴ）２２、バスステートコントローラ（ＬＢＣＮＴ）２３、ＳＤＲＡＭコントローラ（ＳＤＲＡＭＣＮＴ）２５、入出力ポート（ＩＯＰ）２４などが接続される。
【００５０】
割り込みコントローラ２１はマルチコアマイコン１の内外から与えられる割込み要求に対する割り込み優先レベルや割り込みマスク制御を行って、割り込み要求の受付を制御する。割り込み要求を受け付けると、割り込みコントローラ２１はその割り込み要求に応ずる割り込み信号をプロセッシングユニット１１，１２の内のひとつに与える。割り込み信号ＩＮＴ１，ＩＮＴｎはプロセッシングユニット（ＰＲＣＳ（＃１），ＰＲＣＳ（＃ｎ））１１，１２ごとに割り当てられている。割り込み信号が与えられたプロセッシングユニットは例えば実行途中の命令実行を完了してから、退避などの必要な処理を行った後、その割り込み要因に応ずる処理ルーチンに分岐する。
【００５１】
クロック制御回路２２は図示を省略する発振子又は外部から供給されるシステムクロック信号に基づいてマルチコアマイコン１の内部で使用される同期クロック信号を生成する。例えばプロセッシングユニット１１には同期クロック信号ＣＬＫ１が供給され、プロセッシングユニット１２には同期クロック信号ＣＬＫｎが供給される。クロック制御回路２２は、特に制限されないが、低消費電力制御のための制御レジスタ（ＳＴＢＣＲ）３０を有する。
【００５２】
バスステートコントローラ２３には例えば外部バス４を経由してＲＯＭ３及びＳＲＡＭ２が接続される。ＲＯＭ３はプログラムやパラメータデータなどを保有する。ＳＲＡＭ２はプロセッシングユニット１１，１２のワーク領域などとして用いられる。ＳＤＲＡＭコントローラ２５にはＤＤＲ３などのＳＤＲＡＭ５が接続される。ＳＤＲＡＭ５は大容量のデータ一次記憶領域などに用いられる。
【００５３】
マルチコアマイコン１はプロセッシングユニットの低消費電力モードを持つ。例えばＣＰＵがスリープ命令を実行することによって当該ＣＰＵへの同期クロック信号の供給を止めて新たな命令実行を休止させるような休止状態に遷移される。この休止状態が低消費電力モードである。低消費電力モードの解除方法として、リセット、割り込み要求、又は制御レジスタ３０の書き換えの３種類が用意されている。
【００５４】
図２には制御レジスタ３０における一つの制御レジスタ領域のレジスタフォーマットが例示される。
【００５５】
制御レジスタ３０はプロセッシングユニット１１，１２毎に対応する記憶領域（制御レジスタ領域）を有する。夫々の制御レジスタ領域は、特に制限されないが、図２に例示されるように、ライトスリープビットＬＴＳＬＰｘ、スリープ表示ビットＳＬＥＥＰｘ、ウェイクアップビットＷＵＰｘなどを有する。ｘは対応するプロセッシングユニットを意味するサフィックスである。例えば、ｘ＝１はプロセッシングユニット（ＰＲＣＳ（＃１））１１に対応し、ｘ＝ｎはプロセッシングユニット（ＰＲＣＳ（＃ｎ））１２に対応する。
【００５６】
ライトスリープビットＬＴＳＬＰｘはスリープ命令を実行したときスリープモードへ遷移するかライトスリープモードへ遷移するかを示すモードビットであり、値”０”は対応するプロセッシングユニットがスリープモードへ遷移すること、値”１”は対応するプロセッシングユニットがライトスリープモードへ遷移することを指示する。スリープモードとは、対応するプロセッシングユニットの全体、即ち、ＣＰＵ、浮動小数点演算ユニット、メモリマネージメントユニット、及びキャッシュメモリなどへの動作クロック信号の供給が停止されることによって当該プロセッシングユニットが休止される動作モードである。ライトスリープモードとは、対応するプロセッシングユニットのＣＰＵへの動作クロック信号の供給が停止され、その他の浮動小数点演算ユニット、メモリマネージメントユニット、及びキャッシュメモリへの動作クロック信号の供給が維持されることによって当該プロセッシングユニットが休止される動作モードである。ライトスリープビットＬＴＳＬＰｘはプロセッシングユニット１１，１２がユーザモード即ちアプリケーションプログラムに従ってリード及びライト可能な制御ビットとされる。
【００５７】
スリープ表示ビットＳＬＥＥＰｘは、対応するプロセッシングユニットにスリープモード若しくはライトスリープモードが設定されて休止状態になっているか、又は休止状態が解除されて動作可能な状態（アクティブ状態）になっているかを示す。値”０”はアクティブ状態、値”１”は休止状態を示す。スリープ表示ビットＳＬＥＥＰｘはユーザモードではリード動作だけが任意に可能にされ、ライト動作については所定のハードウェアロジックを介して、スリープ命令の実行に応答して対応するビットが”１”にセットされ、休止状態の解除に応答して値”０”にクリアされる。
【００５８】
ウェイクアップビットＷＵＰｘは、対応するプロセッシングユニットの休止状態を解除してアクティブ状態に戻すための制御ビットであり、値”１”によって対応するプロセッシングユニットを休止状態からアクティブ状態に戻すことを指示する。値”０”の書き込みは無視される。特に制限されないが、スリープ命令の実行に応答して対応するスリープ表示ビットＳＬＥＥＰｘが値”１”にセットされるのに連動してウェイクアップビットＷＵＰｘが値”０”にクリアされる。
【００５９】
図３にはマルチコアマイコン１におけるアクティブ状態と休止状態との間の遷移制御形態が示される。ここではプロセッシングユニット（ＰＲＣＳ（＃ｎ））１２を休止状態にする場合が例示される。プロセッシングユニット１２がスリープ命令を実行することによってクロック制御回路２２に同期クロック信号ＣＬＫｎの停止が要求され、これによってプロセッシングユニット１２に対するクロック信号ＣＬＫｎの供給が停止される。プロセッシングユニット１２における同期クロック信号ＣＬＫｎの停止範囲は前記ライトスリープビットＬＴＳＬＰｘ（ｘ＝ｎ）の値によって決まる。
【００６０】
休止状態のプロセッシングユニット１２にタスク処理を再開させるには、プロセッシングユニット１２に対する外部割込み要求の発生、アクティブ状態のプロセッシングユニット１１によるプロセッシングユニット１２に対する内部割込み要求の発生、又はプロセッシングユニット１１によりプロセッシングユニット１２に対応するウェイクアップビットＷＵＰｘ（ｘ＝ｎ）が値”１”に書き換えられるのを待つ。これによってクロック制御回路２２は同期クロック信号ＣＬＫｎの供給を再開する。プロセッシングユニット１２のウェイクアップビットＷＵＰｘを値”１”に書き換えるときは、先ず、プロセッシングユニット１１は、休止状態を解除したときプロセッシングユニット１２に処理させるタスクをＳＲＡＭ２にスケジューリングする。同様に、休止状態のプロセッシングユニット１２に割り込みを要求するときも、先ず、プロセッシングユニット１１は休止状態を解除したときプロセッシングユニット１２に処理させるタスクをＳＲＡＭ２にスケジューリングする。
【００６１】
図４にはタスク処理を管理するためのタスク変数とタスクコントロールフィールドとの関係が例示される。タスクコントロールフィールドにはＴＣＦＬＤにはタスク毎にその処理に用いるタスク制御データなどの格納に利用されるタスクコントロールブロックＴＣＢＬＫｍが割り当てられる。図ではタスクＴＳＫ１、ＴＳＫ２、ＴＳＫ３に対応してタスクコントロールブロックＴＣＢＬＫ１、ＴＣＢＬＫ２、ＴＣＢＬＫ３が割り当てられている。タスク変数として実行中のタスクを表す実行変数（ctxtsk）と、スケジュールされたタスクを表すスケジュールタスク変数（schedtsk）がある。それぞれの変数には対応するタスクのコントロールブロックＴＣＢＬＫｍの先頭アドレスが書き込まれることになる。通常、実行変数（ctxtsk）とスケジュールタスク変数（schedtsk）の値は一致されることになる。タスクのスケジューリングは、例えば所要のプロセッシングユニットに対応するスケジュールタスク変数（schedtsk）に新たなタスクに関するコントロールブロックの先頭アドレスを書き込むことによって行われる。現在実行中のタスクよりも高優先度のタスクが実行可能状態になったときなどに、スケジュールタスク変数（schedtsk）の書き換えが行われる。ＯＳは実行変数（ctxtsk）とスケジュールタスク変数（schedtsk）が一致しないとき、それが一致するように実行変数（ctxtsk）にスケジュールタスク変数（schedtsk）の値を書き込むことによって、タスクのディスパッチ（タスクの切り替え）を行う。
【００６２】
図５にはタスクスケジューリングとタスクディスパッチの処理例が示される。実行すべきタスクが無いとき、実行変数（ctxtsk変数）とスケジュールタスク変数（schedtsk変数）は共に値”０”になる。プロセッシングユニット１１，１２の休止状態においても同様に値”０”になる。この状態から、新たに実行可能状態のタスクＴＳＫｉが発生すると、スケジュールタスク変数（schedtsk変数）にそのタスクＴＳＫｉに応ずるタスクコントロールブロックの先頭アドレ、例えば”0x80001080”が書き込まれる。それによって相互に対応する実行変数（ctxtsk変数）の値とスケジュールタスク変数（schedtsk変数）の値が不一致となるので、対応する実行変数（ctxtsk変数）にその値”0x80001080”が書き込まれることによって、ディスパッチが発生し、タスクＴＳＫｉが実行中になる。
【００６３】
図６にはＯＳの管理の下でタスクによる処理の流れを振り分け管理するディスパッチャー処理の概略的なフローチャートが例示される。ディスパッチャー処理では、タスク処理の終了に合わせて、タスクコンテキストの退避（Ｓ１）、カーネルアイドルループ処理（Ｓ２）、及びタスクコンテキストの復帰処理（Ｓ３）を行って、タスク処理への復帰を制御する。カーネルアイドルループ処理（Ｓ２）では、次に処理するタスクがスケジューリングされているか否かを判定し（Ｓ２１）、スケジューリングされていなければ省電力処理が（Ｓ２２）が行われ、スケジューリングされていればタスクコンテキストの復帰処理（Ｓ３）に進む。
【００６４】
省電力処理（Ｓ２２）では対応するＣＰＵがスリープ命令を実行し、前述のようにしてそのプロセッシングユニットは休止状態にされる。
【００６５】
図７には省電力処理の一例が示される。ここでは対応するライトスリープビットＬＴＳＬＰｘに値”１”をセットする場合（Ｓ３０）を一例とする。その後に割り込みを解除し（Ｓ３１）、スリープ（Ｓ３２）から復帰後に割り込みを禁止して（Ｓ３３）処理を終了する。休止状態として前記ライトスリープモードを使用する場合には、キャッシュメモリなどの同期クロック信号は維持されているので、キャッシュコヒーレンシが維持される。即ち、ライトスリープモードでは、休止前にキャッシュの書き戻しなどの処理が不要であり、休止状態からの復帰後もキャッシュミスが少なくて済む。これにより、プロセッシングユニットの休止状態への遷移、及び休止状態からアクティブ状態への遷移を、共に高速化することができる。
【００６６】
図８にはプロセッシングユニットの休止状態を割り込みを介して解除する動作が例示される。図６のカーネルアイドルループ処理Ｓ２でスリープ命令を実行することによって休止状態に遷移したプロセッシングユニットをアクティブ状態に復帰させるための一つの方法として、他のプロセッシングユニットが当該休止状態のプロセッシングユニットに対して割り込みを要求する方法がある。ここでは、プロセッシングユニット（ＰＲＣＳ（＃ｎ））１２が前記ディスパッチャー処理でタスクコンテキストの退避を行ってカーネルアイドルループ（Ｓ２）上で休止状態にされているものとする。このとき、マルチコアマイコン１のデータ処理の負荷が増してプロセッシングユニット１２の休止状態を解除しようとするとき、他のプロセッシングユニット１１はそのためのタスク起動処理（Ｓ４０）を行う。タスク起動処理では、最初に、復帰後にプロセッシングユニット１２に処理させたいタスクのスケジューリングをＳＲＡＭ２に対して行い（Ｓ４１）、次いで、プロセッシングユニット１１は休止状態のプロセッシングユニット１２に対する割り込み要求を割り込みコントローラ２１に発行する（Ｓ４２）。
【００６７】
割り込みコントローラ１２は休止中のプロセッシングユニット１２に対する割り込み要求に応答して、プロセッシングユニット１２に割り込み信号ＩＮＴｎを出力すると供に、クロック制御回路２２にプロセッシングユニット１２に対する同期クロック信号ＣＬＫｎの供給を再開する。これによってアクティブ状態に遷移されたプロセッシングユニット１２は、割り込み信号ＩＮＴｎに応答して割り込み処理を実行する（Ｓ５０）。割り込み処理（Ｓ５０）では、退避や割り込みハンドラのアドレスフェッチなどの割り込み入り口処理（Ｓ５１）、割り込みハンドラの記述プログラムに従った割り込みハンドラによる処理（Ｓ５２）、及び当該割り込みハンドラからの復帰などの割り込み出口処理（Ｓ５３）を行う。ここではプロセッシングユニット１２の休止状態が解除されれば良いから、割り込みハンドラによる処理は実質的な処理無し（空処理）であれば、その割り込みの目的は充分達せられる。割り込み出口処理（Ｓ５３）の後、タスクコンテキストの復帰が行われ（Ｓ３）、タスク処理に復帰されて、ステップＳ４１でスケジューリングされたタスクの処理が行われる。
【００６８】
図８の処理手順から明らかなように、プロセッシングユニットの休止状態を割り込みを用いて解除する場合、割り込みハンドラが空処理の場合にはそれを一度呼び出してからもとのルーチンに復帰する一連の処理が実質的に無駄な処理となり、プロセッシングユニットの休止状態を解除するまでに無駄時間が費やされ、データ処理の効率化に反する結果となる。尚、タスク処理の開始までに予め割り込みハンドラによって実行すべき処理がある場合には、その処理は無駄時間とはならず、データ処理上許容される。
【００６９】
図９にはプロセッシングユニットの休止状態をウェイクアップビットＷＵＰｘの操作によって解除する動作が例示される。図６のカーネルアイドルループ処理Ｓ２でスリープ命令を実行することによって休止状態に遷移したプロセッシングユニットをアクティブ状態に復帰させるためのもう一つの方法は、他のプロセッシングユニットが当該休止状態のプロセッシングユニットに対応する制御レジスタ３０のウェイクアップビットＷＵＰｘを値”１”に書き換える方法である。図８同様に、プロセッシングユニット（ＰＲＣＳ（＃ｎ））１２が前記ディスパッチャー処理でタスクコンテキストの退避を行ってカーネルアイドルループ（Ｓ２）上で休止状態にされているものとする。このとき、マルチコアマイコン１のデータ処理の負荷が増してプロセッシングユニット１２の休止状態を解除しようとするとき、他のプロセッシングユニット１１はそのためのタスク起動処理（Ｓ４３）を行う。タスク起動処理では、最初に、復帰後にプロセッシングユニット１２に処理させたいタスクのスケジューリングをＳＲＡＭ２に対して行い（Ｓ４４）、次いで、プロセッシングユニット１１は休止状態のプロセッシングユニット１２に対する制御レジスタ３０のウェイクアップビットＷＵＰｘを値”１”に書き換える（Ｓ４５）。
【００７０】
この書き換えに応答してクロック制御回路２２はプロセッシングユニット１２に対する同期クロック信号ＣＬＫｎの供給を再開する。これによってアクティブ状態に遷移されたプロセッシングユニット１２は、直ちにタスクコンテキストの復帰を行って（Ｓ３）、タスク処理に復帰し、ステップＳ４４でスケジューリングされたタスクの処理を開始する。
【００７１】
ウェイクアップビットＷＵＰｘの書き換えによってプロセッシングユニットの休止状態を解除する場合には割り込み処理を一切要さず、図８で説明した空処理で実質的に無駄な時間を一切費やすことはない。したがって、タスク処理の再開までに割り込み処理によって予め実行すべき処理がない場合には、ウェイクアップビットＷＵＰｘの書き換えによる休止状態の解除手法を採用することによって、データ処理効率の向上に資することができる。
【００７２】
更に、タスクへの復帰時間が高速なので、頻繁にプロセッシングユニットを休止させて低消費電力を測ってもシステムパフォーマンスへの影響が少なくて済む。
【００７３】
また、スリープ解除用にカーネルで使用していたＣＰＵ間割り込み要求信号を１本空ける事ができ、これを他の割り込み要因に振り分けて利用することが可能になる。
【００７４】
《実施の形態２》
図１０には本発明の第２の実施の形態にかかるマルチコアマイコンが例示される。同図に示されるマルチコアマイコン１Ａは、特に制限されないが、相補型ＭＯＳ集積回路製造技術によって単結晶シリコンなどの１個の半導体基板に形成される。
【００７５】
マルチコアマイコン（ＭＣＵ）１Ａは、内部バス１３に接続された複数個のプロセッシングユニット（ＰＲＣＳ（＃１）、ＰＲＣＳ（＃ｎ））１１，１２を有する。夫々のプロセッシングユニット１１，１２は少なくとも命令を実行するＣＰＵを有し、ここでは更に浮動小数点演算ユニット、メモリマネージメントユニット、及びキャッシュメモリを備える。特に制限されないが、複数個のプロセッシングユニット１１，１２は、ＳＭＰを実現するＯＳ（オペレーティングシステム）の管理の下でアプリケーションプログラムを実行する。
【００７６】
内部バス１３はバスブリッジ（ＢＢＲＤＧ）１４を介して周辺バス１６にインタフェースされる。周辺バス２６には、割り込みコントローラ（ＩＮＴＣ）２１、クロック制御回路（ＣＰＣＮＴ）２２Ａ、バスステートコントローラ（ＬＢＣＮＴ）２３Ａ、ＳＤＲＡＭコントローラ（ＳＤＲＡＭＣＮＴ）２５、入出力ポート（ＩＯＰ）２４などが接続される。
【００７７】
割り込みコントローラ２１Ａはマルチコアマイコンの内外から与えられる割込み要求に対する割り込み優先レベルや割り込みマスク制御を行って、割り込み要求の受付を制御する。割り込み要求を受け付けると、割り込みコントローラはその割り込み要求に応ずる割り込み信号をプロセッシングユニット１１，１２の内の少なくともひとつに与える。割り込み信号ＩＮＴ１，ＩＮＴｎはプロセッシングユニット（ＰＲＣＳ（＃１），ＰＲＣＳ（＃ｎ））１１，１２ごとに割り当てられている。割り込み信号が与えられたプロセッシングユニットは例えば実行途中の命令実行を完了してから、退避などの必要な処理を行った後、その割り込み要因に応ずる処理ルーチンに分岐する。尚、割り込みコントローラには、固定分配モードと自動分配モードの２つのモードがあり、固定分配モードは、プロセッシングユニット毎に割り込みマスクレジスタを設定することで、対応する割り込み要求をマスクし、処理するＣＰＵを固定的に選択して使用する。このモードは、１要因を１このＣＰＵで処理場合等に適用され、たとえば、ＡＭＰ方式などＣＰＵに固定の役割を持たせたシステムにおいて利用される。一方、自動分配モードは、分配対象のＣＰＵに同時に割り込み要求を分配し、いずれかのＣＰＵが受け付けた時点で、各ＣＰＵの割り込み要求をマスクするもので、たとえば、ＳＭＰ方式などで利用される。固定分配モードのように処理するＣＰＵが固定されている場合、そのＣＰＵが割り込み禁止状態となっていると、割り込み禁止が解除されるまで割り込みが待たされることになるが、自動分配モードでは、分配するいずれかのＣＰＵで割り込みが受け付け可能であれば、待たせることなく割り込みを処理することが可能となる。
【００７８】
クロック制御回路２２Ａは図示を省略する発振子又は外部から供給されるシステムクロック信号に基づいてマルチコアマイコン内部で使用される同期クロック信号を生成する。例えばプロセッシングユニット１１には同期クロック信号ＣＬＫ１が供給され、プロセッシングユニット１２には同期クロック信号ＣＬＫｎが供給される。クロック制御回路２２は、特に制限されないが、低消費電力制御のための制御レジスタ（ＳＴＢＣＲ）３０Ａを有する。制御レジスタ３０ＡはウェイクアップビットＷＵＰｘを有していない点が図１の制御レジスタと相違する。
【００７９】
バスステートコントローラ２３Ａには例えば外部バス４を経由してＲＯＭ３及びＳＲＡＭ２が接続される。ＲＯＭ３はプログラムやパラメータデータなどを保有する。ＳＲＡＭ２はプロセッシングユニット１１，１２のワーク領域などとして用いられる。ＳＤＲＡＭコントローラ２５にはＤＤＲ３などのＳＤＲＡＭ５が接続される。ＳＤＲＡＭ５は大容量のデータ一次記憶領域などに用いられる。
【００８０】
マルチコアマイコン１Ａはプロセッシングユニットの低消費電力モードを持つ。例えばＣＰＵがスリープ命令を実行することによって当該ＣＰＵへの同期クロック信号の供給を止めて新たな命令実行を休止させるような休止状態に遷移される。この休止状態が低消費電力モードである。低消費電力モードの解除方法として、リセット、割り込み要求、又は所定のスケジュールタスク変数の書き換えの３種類が用意されている。
【００８１】
スケジュールタスク変数の書き換えによる休止状態の解除について説明する。バスステートコントローラ２３Ａは、休止状態のプロセッシングユニットがアクティブ状態になって処理すべき新たなタスクがスケジューリングされたか否かをＳＲＡＭに対するアクセスアドレスに基づいて判別し、その判別結果をクロック制御回路２２Ａに通知する。
【００８２】
例えば、バスステートコントローラ２３Ａには、プロセッシングユニット１１，１２毎にスケジュールタスク変数（schedtsk）がマッピングされたＳＲＡＭ２のアドレスマッピング情報が与えられると共に、制御レジスタ３０のスリープ表示ビットＳＬＥＥＰｘを参照し、休止状態のプロセッシングユニットに対応するスケジュールタスク変数にタスクコントロールフィールドの先頭アドレスが新たに書き込まれたか否かを判別する。クロック制御回路２２Ａは、その判別結果ＤＳＴを受け取ることによって、新たなタスクがスケジューリングがされたことを検出したとき、休止中のプロセッシングユニットに対する同期クロック信号の供給を再開する制御を行う。この場合には休止状態の解除を制御するプロセッシングユニットはスケジュールタスク変数の書き換えを行うストア命令などを別に実行することが必用である。
【００８３】
更に休止状態を効率的に解除する手法として、書き込みを検出すべきスケジュールタスク変数（schedtsk）のマッピングアドレスをスリープ命令上で指定するようにしてもよい。そのようなスリープ命令を単に拡張スリープ命令とも称する。拡張スリープ命令を用いれば、バスステートコントローラ２３Ａは上記マッピング情報を保持したり、制御レジスタ３０のスリープ表示ビットＳＬＥＥＰｘを参照したりすることを要しない。バスステートコントローラ２３Ａは拡張スリープ命令で指定されたアドレス情報を保持し、保持したアドレスに対する書き込みを監視し、当該書き込みを検出したとき、これをその判別結果ＤＳＴとして出力すればよい。
【００８４】
図１１にはマルチコアマイコン１Ａにおけるアクティブ状態と休止状態との間の遷移制御形態が示される。ここではプロセッシングユニット（＃ｎ）１２を休止状態にする場合が例示される。プロセッシングユニット１２がスリープ命令を実行することによってクロック制御回路２２Ａに同期クロック信号ＣＬＫｎの停止が要求され、これによってプロセッシングユニット１２に対するクロック信号ＣＬＫｎの供給が停止される。プロセッシングユニット１２における同期クロック信号ＣＬＫｎの停止範囲は前記ライトスリープビットＬＴＳＬＰｘの値によって決まる。
【００８５】
休止状態のプロセッシングユニット１２をアクティブ状態に遷移させるには、プロセッシングユニット１２に対する外部割込み要求の発生、アクティブ状態のプロセッシングユニット１１によるプロセッシングユニット１２に対する内部割込み要求の発生、又はプロセッシングユニット１１によりプロセッシングユニット１２の新たなタスクがスケジューリングされるのを待てばよい。これによってクロック制御回路２２Ａは同期クロック信号ＣＬＫｎの供給を再開する。
【００８６】
例えばプロセッシングユニット１２の命令セットに前記拡張スリープ命令が含まれるものとする。このとき、プロセッシングユニット１２が休止状態に遷移するために前記拡張スリープ命令を実行すれば、当該命令で指定されたアドレス情報がバススステートコントローラ２３Ａにセットされ、バスステートコントローラ２３Ａはその命令で指定されたアドレスへの書き込みを監視する。当該アドレス情報は、プロセッシングユニット１２のスケジュールタスク変数（schedtsk）の先頭のマッピングアドレスとされる。休止中のプロセッシングユニット１２によるタスク処理を再開しようとするときアクティブ状態のプロセッシングユニット１１が当該スケジュールタスク変数（schedtsk）に書き込みを行ってタスクにスケジューリングを行うと、バスステートコントローラ２３Ａはこれを検出してクロック制御回路２２Ａにクロック信号ＣＬＫｎの出力を再開させる。
【００８７】
前記拡張スリープ命令を実行したとき、スケジュールタスク変数（schedtsk）への書き込みが発生する前に、休止中のプロセッシングユニット１２に対する割り込み要求が発生すると、割り込みコントローラ２１Ａはクロック制御回路２２Ａにクロック信号ＣＬＫｎの出力を再開させ、これによってプロセッシングユニット１２はアクティブ状態になり、その割り込み要求に対応する割り込みハンドラで規定される割り込み処理が行われる。
【００８８】
特に制限されないが、タスク処理を管理するためのタスク変数とタスクコントロールフィールドとの関係は図４で説明したこと同じである。
【００８９】
図１２にはプロセッシングユニットの休止状態を所定のスケジュールタスク変数に対する書込み操作によって解除する動作が例示される。図６で説明したと同様にカーネルアイドルループ処理（Ｓ２）でスリープウェイクアップ命令を実行することによって休止状態に遷移したプロセッシングユニット１２をアクティブ状態に復帰させるための一つの方法は、他のプロセッシングユニット１１が当該休止状態のプロセッシングユニット１２に対してタスクスケジューリングを行うという方法である。プロセッシングユニットＰＲＣＳ（＃ｎ）１２が前記ディスパッチャー処理でタスクコンテキストの退避を行ってカーネルアイドルループ（Ｓ２）上で休止状態にされているものとする。このとき、マルチコアマイコン１Ａのデータ処理の負荷が増してプロセッシングユニット１２の休止状態を解除しようとするとき、他のプロセッシングユニット１１はそのためのタスク起動処理（Ｓ４６）を行う。タスク起動処理では、復帰後にプロセッシングユニット１２に処理させたいタスクのスケジューリングをＳＲＡＭ２に対して行う（Ｓ４７）。即ち、プロセッシングユニット１２のスケジュールタスク変数（schedtsk）の先頭のマッピングアドレスに対する書き込みを行う。前記拡張スリープ命令の実行によって休止状態にされているときは前記書き込みアドレスは当該拡張スリープ命令で指定されているアドレスであり、このアクセスをバスステートコントローラ２３Ａが検出することによって、クロック制御回路２２Ａは同期クロック信号ＣＬＫｎの出力を再開する。これによってアクティブ状態に遷移されたプロセッシングユニット１２は、直ちにタスクコンテキストの復帰を行って（Ｓ３）、タスク処理に復帰し、ステップＳ４７でスケジューリングされたタスクの処理を開始する。
【００９０】
割り込み要求によって休止状態を解除するには図８で説明したのと同様の処理を行えばよい。
【００９１】
拡張スリープ命令で指定したアドレスに代表されるように所定アドレスに対する書き込みによって休止状態のプロセッシングユニットに対する新たなタスクスケジューリングが行われることに起因して、自動的に休止状態のプロセッシングユニットをアクティブ状態に遷移させるから、休止状態を解除するために割り込み処理を一切要さず、前述の空処理で実質的に無駄な時間を一切費やすことはない。したがって、タスク処理の再開までに割り込み処理によって予め実行すべき処理がない場合には、拡張スリープ命令などで指定した所定のアドレスへの書き込みによるタスクスケジューリングに連動した休止状態の解除手法を採用することによって、実施の形態１と同様にデータ処理効率の向上などに資することができる。特に、拡張スリープ命令を用いて休止状態に遷移させたときは、他のプロセッシングユニットによって所定のスケジュールタスク変数にタスクスケジューリングを行えば、その後に何ら操作を追加することなく即座に休止状態を解除することができる。
【００９２】
《実施の形態３》
上記マルチコアマイコン１（１Ａ）の利用例について説明する。
【００９３】
図１３には４個のプロセッシングユニットを備えたマルチコアマイコンの利用形態が例示される。ここではプロセッシングユニット以外の図示を省略しているが、実際には図１及び図１０で説明したその他の構成についても設けられている。図１３のマルチコアマイコンは４個のプロセッシングユニットＰＲＣＳ（＃１）、ＰＲＣＳ（＃２）、ＰＲＣＳ（＃３）、ＰＲＣＳ（＃４）を有し、例えば携帯電話システムに適用される。ここでは、着信監視、バッテリ監視の常時起動しているタスクと、ゲームアプリ、動画再生アプリ、動画デコーダ、ブラウザ、メールアプリの各タスクが動作している。夫々のプロセッシングユニットの処理性能をＬＤ＝１００とする。各タスクの（）内のＬＤ＝ｙの数字ｙの値は対応するプロセッシングユニットへの負荷とし、その数字だけ処理性能を必要とすることを意味する。
【００９４】
図１４には図１３のシステムにける負荷が低下した状態を例示する。図１３の状態から、例えばメールと動画再生アプリ及び動画再生デコーダが終了すると、負荷の合計はＬＤ＝１８０となる。この場合には２個分のプロセッシングユニットの処理性能で足りるので、動作中のタスクを２個のプロセッシングユニットに集約することにより、残りの２個のプロセッシングユニットを休止状態にする事ができる。
【００９５】
このようにシステム全体の負荷に応じて、動作させるプロセッシングユニットの数を動的に減らすことによって省電力を実現することができる。再び負荷が増大したときは、休止状態のプロセッシングユニットをアクティブ状態に戻せばよい。システム全体の負荷の状態に応じてプロセッシングユニットを休止させたりアクティブ状態に戻す処理を頻繁に行っても、図１で説明したウェイクアップビットＷＵＰｘを用い、或いは図１０で説明した所定アドレスに対するタスクスケジューリングに連動した復帰の技術を採用することにより、データ処理のパフォーマンスを低下させることなく省電力を実現することができる。
【００９６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００９７】
例えば、本発明は、複数のプロセッシングユニットに処理を分散させるマルチプロセッシングのひとつでＳＭＰ、即ち、複数のプロセッシングユニットで同じメモリ空間を利用し、それぞれ情報を共有できるようにすることによって、複数のプロセッシングユニットが互いに他と同じ処理を行うことを可能にして処理能力などを向上させようとするマルチプロセッサに限定されない。各プロセッシングユニットに予め所定の機能が割り当てられた非対称型マルチプロセッシング（AMP：Asymmetric Multiprocessing）を行うマルチプロセッサにも適用可能である。
【００９８】
プロセッシングユニットの休止制御はＣＰＧによる同期クロック信号の出力制御に限定されず、クロックパスに配置されたクロックゲートのスイッチ制御によっておこなってもよい。
【００９９】
また、以上に説明ではプロセッシングユニットの休止状態は同期クロック信号の停止によって行われるものと、休止状態において回路の電源は維持され、休止状態においてプロセッシングユニットの内部状態は休止直前の状態に維持されているものとし、同期クロック信号の供給を再開すれば直前の状態から処理を再開できるものとした。本発明は、それに限定されず、再開に必要な内部状態を維持するために何らかの退避処理を必用とする場合にも同じく適用することができる。その場合には、休止状態から処理を再開するには退避した情報の復帰が必用になる。
【０１００】
プロセッシングユニットの数、ＣＰＵ以外にプロセッシングユニットが備える回路、マルチコアマイコンが備える回路モジュールの種類などについても適宜変更可能である。
【符号の説明】
【０１０１】
１、１Ａ  マルチコアマイコン（ＭＣＵ）
２  ＳＲＡＭ
３  ＲＯＭ
１１，１２  プロセッシングユニット（ＰＲＣＳ＃１、ＰＲＣＳ＃ｎ）
２１，２１Ａ  割り込みコントローラ（ＩＮＴＣ）
２２，２２Ａ  クロック制御回路（ＣＰＣＮＴ）
ＣＬＫ１、ＣＬＫｎ  同期クロック信号
２３，２３Ａ  バスステートコントローラ（ＬＢＣＮＴ）
２５  ＳＤＲＡＭコントローラ（ＳＤＲＡＭＣＮＴ）
ＩＮＴ１，ＩＮＴｎ  割り込み信号
３０、３０Ａ  制御レジスタ（ＳＴＢＣＲ）
ＬＴＳＬＰｘ  ライトスリープビット
ＳＬＥＥＰｘ  スリープ表示ビット
ＷＵＰｘ  ウェイクアップビット
ＴＣＦＬＤ  タスクコントロールフィールド
ＴＳＫ１、ＴＳＫ２、ＴＳＫ３  タスク
ＴＣＢＬＫ１、ＴＣＢＬＫ２、ＴＣＢＬＫ３  タスクコントロールブロック
ＰＲＣＳ＃１、ＰＲＣＳ＃２、ＰＲＣＳ＃３、ＰＲＣＳ＃４  プロセッシングユニット
【図１】
2013041366.tif 000003
【図２】
2013041366.tif 000004
【図３】
2013041366.tif 000005
【図４】
2013041366.tif 000006
【図５】
2013041366.tif 000007
【図６】
2013041366.tif 000008
【図７】
2013041366.tif 000009
【図８】
2013041366.tif 000010
【図９】
2013041366.tif 000011
【図１０】
2013041366.tif 000012
【図１１】
2013041366.tif 000013
【図１２】
2013041366.tif 000014
【図１３】
2013041366.tif 000015
【図１４】
2013041366.tif 000016