(57)【要約】  複数のプロセッサを含む半導体集積回路における低消費電力制御の実現と、リアルタイム性が要求される処理性能の保障とを両立させる。  複数のプロセッサを含む半導体集積回路において、プログラムに含まれる制御情報に基づいて電圧の値及びクロック信号の周波数を変更する第１制御と、上記プロセッサでの処理の進捗状況に応じて、上記電圧の値及び上記クロック信号の周波数を変更する第２制御とを組み合わせることによって上記プロセッサでの処理の進捗を加速させるための管理ユニットを設ける。各プロセッサの周波数や電圧が上昇された期間は消費電力が増えるが、高速処理が可能となる。また、各プロセッサの周波数や電圧が上昇されない期間は高速処理は不可能であるが、消費電力が少なくて済む。それによって、複数のプロセッサを含む半導体集積回路における低消費電力制御の実現と、リアルタイム性が要求される処理性能の保障とを両立させることができる。
2007141849.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ電圧及びクロック信号が供給されることによってプログラムの実行を可能とする複数のプロセッサを含む半導体集積回路であって、
上記プログラムに含まれる制御情報に基づいて上記電圧の値及び上記クロック信号の周波数を変更する第１制御と、
上記プロセッサでの処理の進捗状況に応じて、当該プロセッサに供給される上記電圧の値及び上記クロック信号の周波数を変更する第２制御とを組み合わせることによって上記プロセッサでの処理の進捗を加速させるための管理ユニットを含むことを特徴とする半導体集積回路。
【請求項２】
所定の処理を実行する１以上のプロセッサを含むグループ毎にドメインが設定され、上記第２制御は、ドメイン毎の上記進捗状況に応じて行われる請求項１記載の半導体集積回路。
【請求項３】
上記管理ユニットは、上記ドメイン毎の上記進捗状況に応じてバス使用の優先度を変更する処理を含む請求項１記載の半導体集積回路。
【請求項４】
それぞれ電圧及びクロック信号が供給されることによってプログラムの実行を可能とする複数のプロセッサと、上記プロセッサでの処理の進捗を加速させるための管理ユニットと、を含み、
上記管理ユニットは、上記プログラムに含まれる制御情報に基づいて上記電圧の値及び上記クロック信号の周波数を変更する第１制御と、
上記プロセッサでの処理の進捗状況に応じて、当該プロセッサに供給される上記電圧の値及び上記クロック信号の周波数を変更する第２制御と、
上記プロセッサでの処理の進捗状況に応じて、バス使用の優先度変更可能な第３制御とを実行するためのプロセッサを含み、
所定の処理を実行する１以上のプロセッサを含むグループ毎にドメインが設定され、
上記第２制御には、上記各ドメイン毎の処理の進捗状況を確認する第１処理と、
予定よりも進捗が遅れているドメインがある場合には、進捗が遅れているドメインの中で、優先度の高いドメインから順番に、当該ドメインに属するプロセッサについて上記電圧の値及び上記クロック信号の周波数を上昇させる第２処理とが含まれて成ることを特徴とする半導体集積回路。
【請求項５】
上記第３制御には、各ドメイン毎の処理の進捗状況を確認する第３処理と、
リアルタイム性を確保しなければならないドメインほど優先度が高くなるようにバス使用の優先度を設定し、且つ、優先度が競合する場合には、進捗が遅れているドメインについてのバス使用の優先度を高くする第４処理と、が含まれる請求項４記載の半導体集積回路。
【請求項６】
それぞれ電圧及びクロック信号が供給されることによってプログラムの実行を可能とする複数のプロセッサを含む半導体集積回路であって、
上記プログラムに含まれる制御情報に基づいて設定された上記電圧の値及び上記クロック信号の周波数と、ドメイン毎の処理の進捗状況とに基づいて、処理を完了するのに課せられた要求時間を満たすための動作周波数及び動作電圧を算出可能な演算回路と、
上記算出回路での算出結果に基づく周波数のクロック信号を生成して、それを該当するプロセッサに供給するためのクロック生成回路と、
上記算出回路での算出結果に基づく動作電圧と基板バイアス電圧を該当するプロセッサに供給するための電圧発生回路と、を含むことを特徴とする半導体集積回路。
【請求項７】
上記電圧発生回路は、上記プロセッサの動作電圧の制御に伴って当該プロセッサの基板バイアス電圧を上昇あるいは下降させることで、当該プロセッサを形成するデバイスのしきい値電圧を制御可能な請求項６記載の半導体集積回路。
【請求項８】
上記演算回路は、上記ドメイン毎の処理の進捗状況に応じてバス使用の優先度を変更するための処理を含む請求項６記載の半導体集積回路。
【請求項９】
上記プロセッサは、汎用プロセッサ、ＤＳＰ、又はリコンフィギュラブルプロセッサとされる請求項１乃至８の何れか１項記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路に関し、例えば複数のマイクロプロセッサ（単に「プロセッサ」ともいう）を含んで成るマルチプロセッサチップに適用して有効な技術に関する。
【背景技術】
【０００２】
半導体製造技術の進歩による素子の微細化により、１チップ上に膨大な数のトランジスタを集積することが可能となっている。従来、微細化とともにプロセッサの高周波数化も進んできたが、動作時電力の増加、またリーク電流に起因する待機時電力の増加により、動作周波数の向上はあまり望めなくなってきており、さらに論理方式の改善による性能向上にも限界が見えはじめている。【０００３】
一方、自動車のナビゲーションシステム、携帯電話、ディジタルテレビなど、画像、音声、データベース情報といった多様なデータを同時に扱うディジタル民生機器が登場し、特性の異なる膨大なデータを短時間に処理する要求が日々高まっている。このような要求に対して、性能向上と低電力化を両立するため、汎用プロセッサ、専用プロセッサ、リコンフィギュラブルプロセッサやＤＳＰ（Digital Signal Processor）などのアクセラレータ、といった様々なプロセッサを１個の半導体チップに搭載する、いわゆるマルチプロセッサチップが用いられるようになった。マルチプロセッサチップによれば、処理を並列に行うことで、動作周波数を向上させなくとも高い演算性能を得ることができる。【０００４】
また、シングルコアのＬＳＩ（半導体集積回路）において、プロセッサの周波数と電圧を制御することにより、低消費電力化が図られてきた。これは、プロセッサなどの処理負荷が小さい場合に周波数と電圧を低下させたり、演算を行わないプロセッサの電源をオフしたりすることによりシステム全体の消費電力や発熱量の低減を図る技術である。この方法は、１つのＬＳＩに複数のプロセッサが搭載される場合においても、それぞれのプロセッサに対して周波数と電圧を制御する技術を適用することで低消費電力化を図ることができる。例えば、特許文献１、特許文献２、及び特許文献３では、マルチプロセッサ構成システムにおいて、システムの動作周波数と回路の電源電圧をオペレーティングシステムの制御により動的に変化させることでシステム全体の消費電力を低減できることが知られている。【０００５】
【特許文献１】特開２００２−９９４３３号公報
【特許文献２】特開２００２−２０２８９３号公報
【特許文献３】特開２００１−２２９０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明者は、複数のプロセッサを含む半導体集積回路における消費電力の低減技術について検討した。【０００７】
従来、あるタスクに対して静的に周波数と電圧が指定されたプログラムがあり、これによって処理を低消費電力で実現することができる。また、リアルタイム性を要求される処理において、処理中に処理を完了すべき時間に対しての現在の処理の進捗状況を計算し、周波数と電源電圧を動的に変更して低消費電力化を図る方法が用いられる。これらの組み合わせは、例えば画像処理であるＭＰＥＧ（Moving Picture Coding Experts Group／Moving Picture Experts Group）において、３０分の１秒間の間に１フレームを処理しなければならない場合において、予め低電圧かつ低周波数で処理を実行しておいて、繰り返し処理や例外的な外乱によって動作が遅れる場合に電源電圧や周波数を向上させる方法がとられてきた。【０００８】
しかし、従来技術によれば、複数のプロセッサに対して静的に周波数と電圧が指定されたプログラムを実行させることは行われても、それに加えて動的な周波数制御は行われない。それは、従来、静的に電圧と周波数が指定されてきたＬＳＩは、リアルタイム処理専用に回路が割り当てられていたり、例外的な外乱が入りにくかったり、同時に複数のリアルタイム処理は行われてこなかったために、動的な周波数制御が必要とされなかったことに起因する。【０００９】
ところが、今後ますます処理性能の要求が高くなっていくにつれ、また、マルチプロセッサ化が組み込み機器でも主流になっていくにつれ、複数のリアルタイム処理が同時に実行される場合や、プログラムを通信によってダウンロードすることが考えられ、そのとき、静的な周波数−電圧制御が指定されたプログラムに対してスケジュール通りに処理が実行されない場合が出てくる。その主たる原因は、共有資源であるバスや共有メモリへのアクセスが他のプロセッサの要求と重なることである。また、イベントに対して行われる処理、例えば携帯電話に電話がかかってくる場合や、ディジタル家電においてユーザがスイッチを押すことによってタスクが起動する場合によっても、予め静的にスケジューリングされた周波数−電圧での処理が、スケジュール通りに実行されない場合がある。【００１０】
また、マルチコア化、メニーコア化が進むにつれ、各プロセッサに対して周波数−電圧制御を行うための情報、計算も大きなものとなり、周波数−電圧制御が間に合わなくなり、チップ全体の処理自体も破綻する虞れがある。【００１１】
本発明の目的は、複数のプロセッサを含む半導体集積回路における低消費電力制御の実現と、リアルタイム性が要求される処理性能の保障とを両立させることにある。【００１２】
本発明の別の目的は、静的に指定された周波数−電圧制御と、処理の進捗に応じて動的に周波数と電圧を制御との協調により低消費電力を実現することにある。【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。【００１５】
〔１〕それぞれ電圧及びクロック信号が供給されることによってプログラムの実行を可能とする複数のプロセッサを含む半導体集積回路において、上記プログラムに含まれる制御情報に基づいて上記電圧の値及び上記クロック信号の周波数を変更する第１制御と、上記プロセッサでの処理の進捗状況に応じて、当該プロセッサに供給される上記電圧の値及び上記クロック信号の周波数を変更する第２制御とを組み合わせることによって上記プロセッサでの処理の進捗を加速させるための管理ユニットを設ける。【００１６】
上記の手段によれば、各プロセッサの周波数や電圧が上昇された期間は消費電力が増えるが、高速処理が可能となる。また、各プロセッサの周波数や電圧が上昇されない期間は高速処理は不可能であるが、消費電力が少なくて済む。このことが、複数のプロセッサを含む半導体集積回路における低消費電力制御の実現と、リアルタイム性が要求される処理性能の保障とを両立させるという、本発明の目的を達成する。また、静的に指定された周波数−電圧制御命令と、処理の進捗に応じて動的に周波数と電圧を制御する機構の協調動作により消費電力の低減を図るという目的も達成する。【００１７】
〔２〕上記〔１〕において、所定の処理を実行する１以上のプロセッサを含むグループ毎にドメインが設定され、上記第２制御は、ドメイン毎の上記進捗状況に応じて行われるように構成することができる。【００１８】
〔３〕上記〔１〕において、上記管理ユニットには、上記ドメイン毎の上記進捗状況に応じてバス使用の優先度を変更する処理を含めることができる。【００１９】
〔４〕それぞれ電圧及びクロック信号が供給されることによってプログラムの実行を可能とする複数のプロセッサと、上記プロセッサでの処理の進捗を加速させるための管理ユニットと、を含む半導体集積回路において、上記管理ユニットは、上記プログラムに含まれる制御情報に基づいて上記電圧の値及び上記クロック信号の周波数を変更する第１制御と、上記プロセッサでの処理の進捗状況に応じて、当該プロセッサに供給される上記電圧の値及び上記クロック信号の周波数を変更する第２制御と、上記プロセッサでの処理の進捗状況に応じて、バス使用の優先度変更可能な第３制御とを実行するためのプロセッサを含める。このとき、所定の処理を実行する１以上のプロセッサを含むグループ毎にドメインが設定され、上記第２制御には、上記各ドメイン毎の処理の進捗状況を確認する第１処理と、予定よりも進捗が遅れているドメインがある場合には、進捗が遅れているドメインの中で、優先度の高いドメインから順番に、当該ドメインに属するプロセッサについて上記電圧の値及び上記クロック信号の周波数を上昇させる第２処理とを含めることができる。【００２０】
〔５〕上記〔４〕において、上記第３制御には、各ドメイン毎の処理の進捗状況を確認する第３処理と、リアルタイム性を確保しなければならないドメインほど優先度が高くなるようにバス使用の優先度を設定し、且つ、優先度が競合する場合には、進捗が遅れているドメインについてのバス使用の優先度を高くする第４処理とを含めることができる。【００２１】
〔６〕それぞれ電圧及びクロック信号が供給されることによってプログラムの実行を可能とする複数のプロセッサを含む半導体集積回路において、上記プログラムに含まれる制御情報に基づいて設定された上記電圧の値及び上記クロック信号の周波数と、ドメイン毎の処理の進捗状況とに基づいて、処理を完了するのに課せられた要求時間を満たすための動作周波数及び動作電圧を算出可能な演算回路と、上記算出回路での算出結果に基づく周波数のクロック信号を生成して、それを該当するプロセッサに供給するためのクロック生成回路と、上記算出回路での算出結果に基づく動作電圧と基板バイアス電圧を該当するプロセッサに供給するための電圧発生回路とを設ける。【００２２】
〔７〕上記〔６〕において、上記電圧発生回路は、上記プロセッサの動作電圧の変更に伴って当該プロセッサの基板に対して順バイアス、あるいは逆バイアスを加えることで、当該プロセッサを形成するデバイスのしきい値電圧を制御することができる。【００２３】
〔８〕上記〔６〕において、上記演算回路には、上記ドメイン毎の処理の進捗状況に応じてバス使用の優先度を変更するための処理を含めることができる。【００２４】
〔９〕上記〔１〕〜〔８〕において、上記プロセッサは、汎用プロセッサ、ＤＳＰ、リコンフィギュラブルプロセッサ、又はある機能に特化したハードウェアとされる。
【発明の効果】
【００２５】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。【００２６】
すなわち、複数のプロセッサを含む半導体集積回路における低消費電力制御の実現と、リアルタイム性が要求される処理性能の保障とを両立させることができる。また、静的に指定された周波数−電圧制御命令と、処理の進捗に応じて動的に周波数と電圧を制御する機構の協調動作により消費電力の低減を達成することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明にかかる半導体集積回路の一例であるマルチプロセッサチップの構成例ブロック図である。
【図２】上記マルチプロセッサチップにおける主要部の構成例ブロック図である。
【図３】上記マルチプロセッサチップの全体的な構成例ブロック図である
【図４】上記マルチプロセッサチップにおける主要動作のフローチャートである。
【図５】上記マルチプロセッサチップにおける主要動作のフローチャートである。
【図６】上記マルチプロセッサチップにおける主要動作のフローチャートである。
【図７】上記マルチプロセッサチップにおける主要レジスタの設定例説明図である。
【図８】上記マルチプロセッサチップにおける主要レジスタの設定例説明図である。
【図９】上記マルチプロセッサチップにおける主要レジスタの設定例説明図である。
【図１０】上記マルチプロセッサチップにおける主要レジスタの設定例説明図である。
【図１１】上記マルチプロセッサチップにおける主要レジスタの設定例説明図である。
【図１２】上記マルチプロセッサチップにおける主要レジスタの設定例説明図である。
【図１３】上記マルチプロセッサチップにおける主要レジスタの設定例説明図である。
【符号の説明】
【００２８】
１０  マルチプロセッサチップ
１００  マルチプロセッサ管理ユニット
１２０，１２１  ドメイン
１３０〜１３５  プログラム
１４０〜１４３  汎用プロセッサ
１４４，１４５  ＩＰによるプロセッサ
１４６  ＤＭＡＣ
１４７  ＲＡＭ
２０１  ＲＡＭ
２０３  プロセッサ
２０４  電圧発生器
２０５  発振器
２０６  ＰＬＬ
２０７  ドメインセットレジスタ
２０８  コントロールレジスタ
２０９  電圧レジスタ
２１０  周波数レジスタ
３１０  バス
【発明を実施するための最良の形態】
【００２９】
図３には、本発明に係る半導体集積回路の一例であるマルチプロセッサチップが示される。【００３０】
図３に示されるマルチプロセッサチップ１０は、特に制限されないが、汎用プロセッサ（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１４０〜１４３、ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）によるプロセッサ１４４，１４５、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１４６、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４７、及びマルチプロセッサ管理ユニット（ＣＯＮＴ）１００を含み、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。【００３１】
上記汎用プロセッサ１４０，１４１，１４２，１４３は、それぞれ予め設定されたプログラム若しくは通信回線を介してダウンロードされたプログラムに従って所定の演算処理を行う。【００３２】
上記ＤＭＡＣ１４６は、上記汎用プロセッサ１４０〜１４５を利用しないでデータ転送を行うためのモジュールであり、予め汎用プロセッサ１４０〜１４５によって転送の設定が行われ、起動信号を送ることで自動的にデータ転送が行われる。【００３３】
一般にＩＰはＬＳＩを設計するための共有資産であり、本例において上記ＩＰによるプロセッサ１４４，１４５は、具体的にはＤＳＰや、ある機能専用のハードウェア、リコンフィギュラブルプロセッサなどの高機能プロセッサとされる。【００３４】
尚、便宜上、上記汎用プロセッサ１４０，１４１，１４２，１４３や、上記ＩＰによるプロセッサ１４４，１４５を単に「プロセッサ」とも称する。【００３５】
上記ＲＡＭ１４７は、上記汎用プロセッサ１４０，１４１，１４２，１４３や上記ＩＰによるプロセッサ１４４，１４５によってアクセス可能な共有メモリとされ、演算処理における作業領域などに利用される。【００３６】
上記マルチプロセッサ管理ユニット１００は、上記汎用プロセッサ１４０，１４１，１４２，１４３や上記ＩＰによるプロセッサ１４４，１４５、ＤＭＡＣ１４６に供給されるクロック信号の周波数制御や、上記汎用プロセッサ１４０，１４１，１４２，１４３や上記ＩＰによるプロセッサ１４４，１４５に供給される電源電圧の制御、及びバスを優先的に使用するためのバス使用優先度の変更を行うことができる。【００３７】
また、このマルチプロセッサチップ１０は、図１に示されるように、複数のドメイン１２０，１２１が設定されている。ここでドメインとは、所定の処理を分割して実行するための複数のプロセッサを含むグループを意味する。特に制限されないが、ドメイン１２０には、汎用プロセッサ１４０が含まれ、ドメイン１２１には、汎用プロセッサ１４１〜１４３及びＩＰによるプロセッサ１４４，１４５が含まれる。このプロセッサ１４１〜１４５は、対応するプログラム１３０〜１３５の実行が可能とされる。【００３８】
図２には、上記マルチプロセッサ管理ユニット１００の構成例が示される。【００３９】
上記マルチプロセッサ管理ユニット１００は、図２に示されるように、ＲＡＭ２０１、プロセッサ（ＣＰＵ）２０３、電圧発生器（ＶＧＥＮ）２０４、発振器（ＦＧＥＮ）２０５、ドメインセットレジスタ（Ｄｏｍａｉｎ  ｓｅｔ  ＲＥＧ）、コントロールレジスタ（Ｃｏｎｔｒｏｌ  ＲＥＧ）、電圧レジスタ（Ｖ−ＲＥＧ）２０９、周波数レジスタ（Ｆ−ＲＥＧ）２１０を含んで成る。【００４０】
上記ＣＰＵ２０３は、上記プロセッサ１４０〜１４５によって実行されるプログラム（ＣＰＵ  ｃｏｄｅ，ＩＰ  ｃｏｄｅ）に含まれる制御情報に基づいて、上記プロセッサ１４０〜１４５に供給される電圧の値、及び上記プロセッサ１４０〜１４５に供給されるクロック信号の周波数を変更する第１制御と、上記プロセッサ１４０〜１４５での処理の進捗状況に応じて、当該プロセッサ１４０〜１４５に供給される上記電圧の値及び上記クロック信号の周波数を変更する第２制御とを組み合わせることによって上記プロセッサ１４０〜１４５での処理の進捗を加速させる機能を有する。このような制御処理のために、上記ＲＡＭ２０１、ドメインセットレジスタ２０７、コントロールレジスタ２０８、電圧レジスタ２０９、周波数レジスタ２１０に設定された各種情報が参照される。上記電圧発生器２０４は、上記電圧レジスタ２０９の設定情報に従って、プロセッサ１４０〜１４５に供給される電圧を発生する。この電圧には、プロセッサ１４０〜１４５に個別的に要求される電源電圧が含まれる。また、上記発振器２０５は、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）回路を含み、プロセッサ１４０〜１４５に供給されるクロック信号を発生する。このクロック信号の周波数は、上記周波数レジスタ２１０の設定情報に従って決定される。【００４１】
上記コントロールレジスタ２０８に設定されるデータについて説明する。【００４２】
上記コントロールレジスタ２０８には、特に制限されないが、静的な周波数−電圧制御、動的な周波数−電圧制御情報（図７参照）、及び動的なバス使用優先度制御を行うか否かの識別情報（図１３（Ａ）参照）が設定される。すなわち、静的な周波数−電圧制御を実行する場合には、図７に示されるように、該当する記憶領域に論理値“１”が設定され、動的な周波数−電圧制御を実行する場合には該当する記憶領域に論理値“１”が設定される。論理値“０”が設定された場合には、上記周波数−電圧制御は実行されず、両方とも論理値‘０’が設定された場合は周波数−電圧制御は実行されず、デフォルトの周波数−電圧により処理が実行される。また、両方とも同時に実行される設定となった場合、静的な周波数−電圧制御と動的な周波数−電圧制御の協調制御が実行される。【００４３】
また、コントロールレジスタ２０８には、共有資源であるバス３１０やＲＡＭ１４７が、あるドメインに属するプロセッサによって使用されている場合において、現在共有資源を使用しているドメインよりも優先度の高いドメインに属するプロセッサからのアクセスを受けた場合に、現在の共有資源の使用を強制的に停止させ、優先度の高いドメインに属するプロセッサなどによる共有資源の使用を実行させるか否かを設定するための記憶領域も形成される。例えば、コントロールレジスタ２０８において、図１３（Ｂ）に示されるようにリリース（ｒｅｌｅａｓｅ）の項に論理値“１”が設定された場合は、優先度の高いドメインからのアクセスが絶対的に優勢とされる。【００４４】
上記ＲＡＭ２０１には、プログラム１３０〜１３５の実行によって設定される情報（静的情報）を設定するための静的情報記録領域が形成される。ここで、上記静的情報記録領域に設定される静的情報には、特に制限されないが、図８に示されるように、プロセッサ１４０〜１４５に供給されるクロック周波数の設定情報（Fsta）や、プロセッサに供給される電圧のレベル情報（Vsta）、さらには、図９に示されるように、ドメイン単位で処理を完了しなければならない時間（デッドライン）情報が含まれる。また、上記ＲＡＭ２０１には、プログラムの実行状況によって設定される情報（動的情報）を設定するための動的情報記録領域が形成される。ここで、上記動的情報記録領域に設定される動的情報には、特に制限されないが、図９に示されるように、ドメイン単位で実行されている処理の進捗情報が含まれる。上記デッドライン情報や進捗情報は、ドメイン毎に対応するプロセッサによって設定される。すなわち、ドメイン毎に対応するプロセッサが実行するプログラムによってデッドライン情報と進捗情報が上記静的情報記録領域ならびに動的情報記録領域に格納される。格納された情報は、後述するように、マルチプロセッサ管理ユニット１００による動的な周波数−電圧制御が必要か否かの判定に利用される。このデッドライン情報や進捗情報はドメイン単位で必要な情報であるため、その記憶領域は、上記ドメイン１２０，１２１に対応する。【００４５】
尚、リアルタイム性を確保する必要のない処理の場合には、上記デッドライン設定は重要な意味を持たない。かかる場合には、当該処理がリアルタイム性を確保する必要のない処理であることを識別可能とするために予め定められた値を設定するものとする。【００４６】
図１０（Ａ）には、周波数レジスタ２１０の設定例が示され、図１０（Ｂ）には、電圧レジスタ２０９の設定例が示される。周波数レジスタ２１０、電圧レジスタ２０９は、それぞれプロセッサ１４０〜１４５に対応して設けられる。周波数レジスタ２１０、電圧レジスタ２０９への設定は、プロセッサ２０３によって行われる。図１０（Ａ）に示されるように一つの周波数レジスタ２１０に「１２０」が設定された場合、それに対応するプロセッサには、発振器２０５から１２０ＭＨｚのクロック信号が供給される。また、図１０（Ｂ）に示されるように一つの電圧レジスタ２０９に「１．２」が設定された場合、それに対応するプロセッサには、電圧発生器２０４から１．２Ｖの電源電圧が供給される。【００４７】
図１１，１２には、上記ドメインセットレジスタ２０７の設定例が示される。【００４８】
上記ドメインセットレジスタ２０７には、図１１に示されるように、プロセッサとドメインとの対応関係が示される。本例では、プロセッサ１４０が単体でドメイン１２０であり、プロセッサ１４１〜１４５がドメイン１２１を形成する。また、上記ドメインセットレジスタ２０７には、図１２に示されるように、ドメインの優先度が設定される。つまり、複数のドメインがデッドラインに対して処理の加速が必要となった場合に、周波数−電圧の向上，並びにバス使用の優先度を設定する際のドメイン毎の優先度が設定される。【００４９】
図１２に示される例では、ドメイン１２０の優先度が２であり、ドメイン１２１の優先度が１である。例えば、ドメイン１２１はリアルタイム性を確保しなければならない処理を行っているものとし、ドメイン１２２はリアルタイム性を確保する必要がない処理を行っているものと考える。このとき、ドメイン１２１はリアルタイム性を確保すべき処理であるから、周波数と電圧とが上昇される。またバス使用の優先度も高くする必要がある。ドメインの優先度が異なる場合は、優先度の高いドメインからバス使用の優先度を高く設定し、また同様に、優先度の高いドメインから周波数−電圧設定の上昇を行う。尚、周波数−電圧の設定は、チップが許容する最大電力と最大温度を越えないように設定される。また、ドメイン間の優先度が等しい場合は、より進捗状況が低いドメインから優先的にクロック信号の周波数や電源電圧が上昇されることで加速処理が行われる。【００５０】
本マルチプロセッサチップ１０においては、所定のアプリケーションプログラムを上記汎用プロセッサ１４０，１４１，１４２，１４３や上記ＩＰによるプロセッサ１４４，１４５を用いて実行することができ、それを可能とするように、プロセッサ毎のプログラム１３０〜１３５が作成される。この際、プログラム１３０〜１３５には、あるタスクを実行する際の周波数と電圧を変更するためのコードを含めることができる。【００５１】
また、各プロセッサ向けのプログラム１３０〜１３５には、ドメイン全体で実行するアプリケーションをいつまでに実行し終えなければならないというデッドライン情報と、実行する処理全体の何％が終了したかという進捗情報とを含めることができる。【００５２】
各プロセッサが実行するプログラムコード中に、周波数−電圧制御命令、デッドライン設定の命令、処理の進捗情報出力命令があった場合、各プロセッサ１４０〜１４５は、上記マルチプロセッサ管理ユニット１００に含まれる上記所定レジスタに対してそれぞれの値を記録する。【００５３】
上記マルチプロセッサ管理ユニット１００では、プログラムによって静的に与えられる周波数−電圧制御と、処理の進捗状況に応じてマルチプロセッサ管理ユニット１００が制御する動的な周波数−電圧の制御並びに各プロセッサのバス使用の優先度の変更が行われる。静的な周波数−電圧制御、及び動的な周波数−電圧制御の両方とも無効にした場合、周波数−電圧制御、バス優先度の変更は行われない。また、両方の制御とも有効にした場合、両者の協調制御を行う。【００５４】
マルチプロセッサ管理ユニット１００は、周波数−電圧制御機能が有効にされた場合、例えば定期的に、進捗状況や静的に与えられる周波数−電圧制御の情報が記録されたレジスタ等の記憶領域を確認し、記録された値に応じて各プロセッサの周波数や電圧、及びバス優先度の制御を行う。このとき、動的な制御を行うための進捗情報はドメイン毎にマルチプロセッサ管理ユニット１００に対して与えられる。実際の周波数−電圧制御は、プロセッサ毎に行われる。ドメイン毎に処理の進捗状況を与えるため、動的に処理する周波数−電圧制御を行うための演算量を削減し、動的な周波数−電圧制御やバス優先度変更の煩雑さを解消する。これによって動的な周波数−電圧制御による処理の破綻を防ぐことができる。【００５５】
例えばある時点で、図１におけるドメイン１２１での処理の進捗状況が１０％であったとし、また、図１におけるドメイン１２０において実行されている処理の進捗状況が５０％であったとする。仮に二つのドメインで実行されている処理の優先度とデッドラインが同じであったとすると、マルチプロセッサ管理ユニット１００は、ドメイン１２０全体の周波数と電圧を上昇させることで、処理の加速を図る。【００５６】
また同時に、進捗が遅れているドメインに属するプロセッサが、バス３１０やＲＡＭ１４７といった共有資源を利用する際の優先度を高くする。これにより、処理の遅れているドメインがバス３１０やＤＭＡＣ１４６やＲＡＭ１４７などの共有資源を利用する上で、他のドメインと競合が起こった場合に、優先的に共有資源を使用できることで処理の加速を図る。このとき、優先度の低いドメインが既に共有資源を使用していた場合に、その処理を中断させて共有資源を使用できるようにするのか、若しくは今実行されている処理が終了してから優先的にその資源を利用できるか否かを設定できる。【００５７】
次に、マルチプロセッサ管理ユニット１００による静的な周波数−電圧制御について詳述する。【００５８】
図４には、プログラム１３０〜１３５によって与えられる周波数−電圧制御命令によっる制御の流れが示される。【００５９】
プログラム１３０〜１３５によって与えられる静的な電圧・周波数制御命令によって、マルチプロセッサ管理ユニット１００内のＲＡＭ２０１に、周波数設定値Fsta、及び電圧設定値Vstaが設定される（４００）。そして、上記ＲＡＭ２０１に格納された設定値（FstaやVsta）を定期的に、若しくは与えられる命令によって不定期的に確認し（４０１）、前回確認時のFsta'並びにVsta'と、現在設定されているFsta並びにVstaとが異なるか否かの判別を行う（４０２）。この判別において、前回確認時の値と相違する（ＹＥＳ）と判断された場合、後述する動的な周波数−電圧設定値を加味した上で、各プロセッサに対して新たな周波数と電圧値を設定する（４０３）。そして、周波数と電圧値が安定した後にタスクの実行を再開する（４０４）。その後、上記ステップ４００の設定処理に遷移される。また、上記ステップ４０２の判別において、前回確認時の値と相違しない（ＮＯ）と判断された場合、上記ステップ４００の設定処理に遷移される。【００６０】
次に、マルチプロセッサ管理ユニット１００による動的な周波数−電圧制御について説明する。【００６１】
図５には、各ドメインで実行されている処理の進捗状況によって、動的に周波数と電圧とが制御される場合の流れが示される。【００６２】
ＲＡＭ２０１に対する設定によって定期的に、若しくは与えられる命令に応じて、現在、各ドメインで実行されている処理の進捗状況を確認する（５００）。具体的には、各ドメインでのプログラム実行により、上記ＲＡＭ２０１に対して現在実行中の処理の進捗状況が記録されているので、その値から、その処理を終えなければいけない時間に対して、現在の設定周波数並びに設定電圧でその処理が完了するかを計算する。ここで、処理を終えなければならない時間は、上記ＲＡＭ２０１に対して設定される（図９参照）。【００６３】
そして、予定よりも進捗が遅れているドメインがあるか否かの判別が行われる（５０１）。つまり、上記処理を終えなければならない時間内に、処理が完了するか否かがチェックされる。この判別において、予定よりも進捗が遅れているドメインがある（ＹＥＳ）と判断された場合、そのドメインに含まれるプロセッサ全体の周波数並びに電圧を上昇させ、処理の進捗を加速させる（５０２）。この際に設定される周波数と電圧は、上述した静的な周波数設定値Fstaと静的な電圧設定値Vstaを考慮した上で、対象ドメインに属する演算器の周波数と電圧を設定する（５０２）。この周波数と電圧の変更には、静的な周波数設定値Fstaと静的な電圧設定値Vstaに対して、動的な周波数設定値Fdynと動的な電圧設定値Vdynを足し合わせる方法や、静的な周波数設定値Fstaと静的な電圧設定値Vstaに対して，動的にそれらを逓倍する方法が挙げられる。当然ながら、これらの周波数設定と電圧設定は、対象となるプロセッサのとり得る周波数設定値並びに電圧設定値に依存するものであり、近似といった処理も考慮する。またこのとき、チップ全体として許容される最大電力並びに最大許容温度を超えない範囲で処理の進捗を加速させるものとし、複数のドメイン毎の処理の進捗状況が遅延していると判断された場合は、進捗が遅れているドメインの中で実行優先度の高いドメインから優先的に電圧と周波数を高くする。これにより当該処理が加速される。そして、周波数と電圧値が安定した後にタスクの実行を再開する（５０３）。その後、上記ステップ５００の確認処理に遷移される。また、上記ステップ５０１の判別において、予定よりも進捗が遅れているドメインは無い（ＮＯ）と判断された場合には、進捗加速処理を実行中か否かの判別が行われる（５０４）。この判別において、進捗加速処理を実行中である（ＹＥＳ）と判断された場合には、進捗の加速中のドメインに対する周波数−電圧上昇処理を解除する（５０５）。周波数−電圧向上並びにバス使用の優先度向上によって処理の遅延を取り戻した場合には、進捗の加速は不要となるからである。そして、進捗の加速中のドメインに対する周波数−電圧上昇処理が解除された後に、上記ステップ５００の確認処理に遷移される。また、上記ステップ５０４の判別において、進捗加速処理を実行中ではない（ＮＯ）と判断された場合にも上記ステップ５００の確認処理に遷移される。このようにドメイン毎の処理の進捗状況を見て、必要に応じて動的に、プロセッサの電源電圧や当該プロセッサに供給されるクロック信号の周波数が変更され、進捗の加速が必要なくなれば、上記電源電圧やクロック信号の周波数の上昇処理が解除されるので、消費電力の増大を伴わずに済む。【００６４】
図６には、各ドメインで実行されている処理の進捗状況に応じて、バス３１０の使用の優先度が動的に変更される場合の流れが示される。【００６５】
マルチプロセッサ管理ユニット１００内のコントロールレジスタ２０８に対する設定によって定期的に、若しくは与えられる命令に応じて、現在、各ドメインで実行されている処理の進捗状況が確認される（６００）。具体的には、各ドメインからＲＡＭ２０１に対して現在実行中の処理の進捗状況を記録し、その値から、その処理を終えなければいけない時間に対して、現在の設定周波数並びに設定電圧でその処理が完了するかを計算する。ここで、処理を終えなければならない時間は、上記ＲＡＭ２０１に対して設定するものとする。そして、予定よりも処理の進捗が遅れているドメインがあるか否かの判別が行われる（６０１）。この判別において、予定よりも処理の進捗が遅れているドメインがある（ＹＥＳ）と判断された場合には、より実行優先度の高いドメインから優先的にバスを使用できる優先度を高くする（６０２）。この優先度は、例えばリアルタイム性を確保する必要のある処理ほど高くする。各ドメインの実効優先度は、上記ドメインセットレジスタ２０７に設定することができる。すなわち、各ドメイン毎の処理の進捗状況と、各ドメインの実行優先度を加味した上で、バス使用の優先度の設定が行われる（６０２）。このバス使用の優先度の設定が行われた後に、上記ステップ６００の処理に遷移される。また、上記ステップ６０１の判別において、予定よりも処理の進捗が遅れているドメインが無い（ＮＯ）と判断された場合には、進捗加速処理（ステップ６０２の処理）を実行中か否かの判別が行われる（６０３）。この判別において、進捗加速処理（ステップ６０２の処理）を実行中である（ＹＥＳ）と判断された場合には、上記ステップ６０２での優先度の変更を元の状態に戻してから上記ステップ６００の処理に遷移される（６０４）。さらに、上記ステップ６０３の判別において進捗加速処理（ステップ６０２の処理）を実行中ではない（ＮＯ）と判断された場合にも、上記ステップ６００の処理に遷移される。【００６６】
上記例によれば、以下の作用効果を得ることができる。【００６７】
（１）各プロセッサが実行するプログラムコード中に、周波数−電圧制御命令、デッドライン設定の命令、処理の進捗情報出力命令があった場合、各プロセッサ１４０〜１４５は、上記マルチプロセッサ管理ユニット１００に含まれる上記所定レジスタに対してそれぞれの値を記録する。マルチプロセッサ管理ユニット１００では、プログラムによって与えられる静的な周波数−電圧制御と、処理の進捗状況に応じてマルチプロセッサ管理ユニット１００が制御する動的な周波数−電圧の制御並びに各プロセッサのバス使用の優先度の変更が行われる。マルチプロセッサ管理ユニット１００は、周波数−電圧制御機能が有効にされた場合、例えば定期的に、進捗状況や静的に与えられる周波数−電圧制御の情報が記録されたレジスタ等の記憶領域を確認し、記録された値に応じて各プロセッサの周波数や電圧、及びバス優先度の制御を行う。各プロセッサの周波数や電圧が上昇された期間は消費電力が増えるが、高速処理が可能となる。また、各プロセッサの周波数や電圧が上昇されない期間は高速処理は不可能であるが、消費電力が少なくて済む。従って上記のような制御により、複数のプロセッサを含む半導体集積回路における低消費電力制御の実現と、リアルタイム性が要求される処理性能の保障とを両立させることができる。また、静的に指定された周波数−電圧制御命令と、処理の進捗に応じて動的に周波数と電圧を制御する機構の協調動作により消費電力の低減を図ることができる。【００６８】
（２）動的な制御を行うための進捗情報はドメイン毎にマルチプロセッサ管理ユニット１００に対して与えられる。実際の周波数−電圧制御は、プロセッサ毎に行われる。ドメイン毎に処理の進捗状況を与えるため、動的に処理する周波数−電圧制御を行うための演算量を削減し、動的な周波数−電圧制御やバス優先度変更の煩雑さを解消することができる。これによって動的な周波数−電圧制御による処理の破綻を防ぐことができる。【００６９】
（３）また同時に、進捗が遅れているドメインに属するプロセッサが、バス３１０やＲＡＭ１４７といった共有資源を利用する際の優先度を高くする。これにより、処理の遅れているドメインがバス３１０やＲＡＭ１４７などの共有資源を利用する上で、他のドメインと競合が起こった場合に、優先的に共有資源を使用できることで処理が更に加速される。【００７０】
（４）上記（１）乃至（３）の作用効果は、携帯電話の着信や組込み機器でのユーザ指示による処理の実行といった、イベントに対して行われる処理が実行される場合、また、静的にスケジューリングされたプログラムを、ネットワークを介してダウンロードして実行する場合などにおいて、リアルタイム性を保持しなければいけない処理の実行において特に顕著とされる。【００７１】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。【００７２】
例えば、プロセッサ１４０〜１４５が形成される半導体領域の基板バイアス電圧を制御することによって、トランジスタのしきい値電圧を制御するようにしても良い。例えば電圧発生回路２０４において、プロセッサ１４０〜１４５が形成される半導体領域の基板バイアス電圧を生成する場合、ドメイン毎の処理の進捗状況に応じてプロセッサに供給される電源電圧が上昇される場合に、それに連動して当該プロセッサのｎＭＯＳトランジスタの基板に対して正の電圧を加えること、またｐＭＯＳトランジスタの基板に対して電源電圧よりも低い電圧を加えることで、当該プロセッサを形成するｎＭＯＳトランジスタとｐＭＯＳトランジスタのしきい値電圧の絶対値を下げるようにする。ＣＭＯＳトランジスタのしきい値電圧の絶対値が低下されることで当該デバイスを高速動作させることができる。また、プロセッサを高速に動作させる必要がない場合は、予めｎＭＯＳトランジスタの基板に対して負の電圧を加えること、またｐＭＯＳトランジスタの基板に対して電源電圧よりも高い電圧を加えることで、当該プロセッサを形成するｎＭＯＳトランジスタとｐＭＯＳトランジスタのしきい値電圧の絶対値を上げるようにする。ｎＭＯＳトランジスタとｐＭＯＳトランジスタのしきい値電圧の絶対値が上昇されることで、当該デバイスのリーク電流を低減することができる。このことは、マルチプロセッサチップ１００の消費電力を低減する上で有利となる。
【産業上の利用可能性】
【００７３】
本発明は、複数のプロセッサを含んで成るデータ処理装置に広く適用することができる。
【図１】
2007141849.tif 000003
【図２】
2007141849.tif 000004
【図３】
2007141849.tif 000005
【図４】
2007141849.tif 000006
【図５】
2007141849.tif 000007
【図６】
2007141849.tif 000008
【図７】
2007141849.tif 000009
【図８】
2007141849.tif 000010
【図９】
2007141849.tif 000011
【図１０】
2007141849.tif 000012
【図１１】
2007141849.tif 000013
【図１２】
2007141849.tif 000014
【図１３】
2007141849.tif 000015
【国際調査報告】
2007141849.tif 000016
2007141849.tif 000017
2007141849.tif 000018
2007141849.tif 000019