(57)【要約】【課題】マルチタスク処理においてタスクの処理時間短縮と消費電力の低減とを両立することができるマルチプロセッサシステムを提供する。【解決手段】ＳＯＩ・ＭＯＳトランジスタを用いるマルチプロセッサシステムにおいて、複数のタスクに分割された実行プログラムを複数のプロセッサユニット（１０１）に割り当てるスケジューリング処理において、複数個のプロセッサユニットにタスク割当を行なう。このとき、プログラムの実行時間を小さくするようタスク実行順を決定するプロセスと、スケジューリング時に、実行タスク間に依存性があるとき一のタスクの処理性能に影響を与える他のタスクを実行する際に実行するプロセッサユニットの動作速度を一時的に向上させるようにプロセッサユニットのクロック信号周波数と基板バイアスを制御する電力制御と、を採用する。【選択図】図１
2009069921.tif 000002
【特許請求の範囲】
【請求項１】
並列動作可能な複数のプロセッサユニットと、基板バイアス制御回路と、コントロールプロセッサとを有し、
前記プロセッサユニットは、他のＭＯＳトランジスタから電気的に分離された背面ゲート電極を備えたシリコン・オン・インシュレータ構造のＳＯＩ・ＭＯＳトランジスタから成る内部回路を備え、クロック信号に同期動作され、
前記基板バイアス回路は前記内部回路のＳＯＩ・ＭＯＳトランジスタの背面電極に基板バイアス電圧を出力し、
前記コントロールプロセッサユニットは、タスク間の依存性を考慮して前記複数のプロセッサユニットに複数のタスクを並列的に処理させるタスクスケジューリングを行なうと共に、前記基板バイアス電圧と前記クロック信号の周波数を前記プロセッサユニット毎に制御するための制御データを生成し、前記タスクスケジューリングに際して、一のタスクの処理開始に影響を与える他のタスクの処理時間を短縮するように前記制御データを決定する、マルチプロセッサシステム。
【請求項２】
タスク間の依存関係を規定する依存関係テーブルを格納するメモリを有し、
前記コントロールプロセッサユニットは、前記依存関係テーブルを参照して、タスク間の依存性を把握する、請求項1記載のマルチプロセッサシステム。
【請求項３】
前記コントロールプロセッサユニットは、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、且つクロック信号の周波数を高くするように、前記制御データを決定する、請求項１記載のマルチプロセッサシステム。
【請求項４】
前記他のタスクの処理の完了を待って、前記一のタスクが処理されるとき、前記コントロールプロセッサユニットは、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、且つクロック信号の周波数を高くするように、前記制御データを決定する、請求項１記載のマルチプロセッサシステム。
【請求項５】
前記他のタスクの処理に並行して前記一のタスクの処理開始に影響を与える別のタスクが処理されるとき、前記コントロールプロセッサユニットは、前記別のタスクの処理終了タイミングが前記他のタスクの処理終了タイミングよりも遅くならない範囲で、前記別のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を大きくし、且つクロック信号の周波数を低くするように、前記制御データを決定する、請求項４記載のマルチプロセッサシステム。
【請求項６】
並列動作可能な複数のプロセッサユニットと、基板バイアス制御回路とを有し、
前記プロセッサユニットは、他のＭＯＳトランジスタから電気的に分離された背面ゲート電極を備えたシリコン・オン・インシュレータ構造のＳＯＩ・ＭＯＳトランジスタから成る内部回路を備え、クロック信号に同期動作され、
前記基板バイアス回路は前記内部回路のＳＯＩ・ＭＯＳトランジスタの背面電極に基板バイアス電圧を出力し、
一のプロセッサユニットはタスク間の依存性を考慮して前記複数のプロセッサユニットに複数のタスクを並列的に処理させるタスクスケジューリングを行ない、
夫々の前記プロセッサユニットは前記タスクスケジューリングの結果を参照して自らが実行すべきタスクの処理を制御するタスク実行管理を行ない、
前記一のプロセッサユニットは前記タスクスケジューリングに際して、前記基板バイアス電圧と前記クロック信号の周波数をタスク単位で制御可能な制御データを生成し、一のタスクの処理開始に影響を与える他のタスクの処理時間を短縮するように前記制御データを決定する、マルチプロセッサシステム。
【請求項７】
前記一のプロセッサユニットは前記タスクスケジューリングにおいて、スケジューリングされたタスクとこれに対応する制御データとをプロセッサユニット毎のキューイングテーブルに登録し、
前記プロセッサユニットはタスク実行管理において対応するキューイングテーブルを参照して自ら処理すべきタスクと制御情報を取得する、請求項６記載のマルチプロセッサシステム。
【請求項８】
前記一のプロセッサユニットは前記タスクスケジューリングにおいて、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、クロック信号の周波数を高くするように、前記制御データを決定する、請求項７記載のマルチプロセッサシステム。
【請求項９】
前記他のタスクの処理の完了を待って、前記一のタスクが処理されるとき、前記一のプロセッサユニットは前記タスクスケジューリングにおいて、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、且つクロック信号の周波数を高くするように、前記制御データを決定する、請求項７記載のマルチプロセッサシステム。
【請求項１０】
前記他のタスクの処理に並行して、前記一のタスクの処理開始に影響を与える別のタスクが処理されるとき、前記一のプロセッサユニットは前記タスクスケジューリングにおいて、前記別のタスクの処理終了タイミングが前記他のタスクの処理終了タイミングよりも遅くならない範囲で、前記別のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を大きくし、且つクロック信号の周波数を低くするように、前記制御データを決定する、請求項９記載のマルチプロセッサシステム。
【請求項１１】
前記シリコン・オン・インシュレータ構造は完全空乏型である、請求項１記載のデータ処理システム。
【請求項１２】
前記ＳＯＩ・ＭＯＳトランジスタは、半導体基板上に、埋め込み酸化膜を介して形成される第１半導体層と、前記第１半導体層に形成され、前記第１半導体層の厚さを有するソース領域及びドレイン領域と、前記ソース領域及びドレイン領域に挟まれるように形成されたチャネル領域と、該チャネル領域の第１主面側に形成された第１ゲートと、前記埋め込み酸化膜の下面に接して形成された導電層からなる第２ゲートとを有し、前記第２ゲートが前記背面ゲート電極である、請求項１１記載のマルチプロセッサシステム。
【請求項１３】
１個の半導体基板の上に形成された、請求項１２記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステムにおける基板バイアス制御と周波数制御に関し、例えばシステム・オン・チップ（ＳｏＣ）の半導体装置に適用して有効な技術に関する。
【背景技術】
【０００２】
半導体製造技術の進歩による回路素子の微細化により、膨大な数のトランジスタを集積することが可能となっている。それと同時にプロセッサの同期クロック信号の高周波数化も進むが、動作時の消費電力の増加、更には待機時のリーク電流に起因する待機時電力の増加により、従来のプロセッサが歩んできた動作周波数の向上と論理方式の改善により達成してきた性能向上に限界が見え始めている。一方で、自動車のナビゲーションシステム、携帯電話、デジタルテレビなど、画像、音声、データベース情報など多様なデータを同時に扱うデジタル民生機器が登場し、特性の異なる膨大なデータを短時間にかつ低電力に処理することが強く求められている。そこで現在、性能改善と低電力化を実現する手段として、従来の単一チップで提供されたプロセッサユニットを複数個単一チップ上に集積し、処理を並列で行うことで、動作周波数を向上させなくとも、高い演算性能を得ることが可能な、マルチプロセッサシステムが有望となっている。将来、微細化がさらに進むことで、１００個〜１０００個のプロセッサユニット（演算ユニット）をオンチップで搭載することも可能となると予測される。
【０００３】
また、特に組み込み機器向けシステムにおいては、無線や画像、音声など定型的なデジタル信号処理を扱うことも多く、性能改善と低電力化を両立する手段として、同一の汎用プロセッシング、つまり同一の命令セットで構成及び演算性能が同一な汎用プロセッシングを複数個集積したホモジニアスなマルチプロセッサシステム以外に、複数個のプロセッシングに加え、ある特定の処理を非常に効率良く（高速にかつ低電力に）処理可能な専用プロセッサ、アクセラレータ、といった命令セットが異種である、様々な種類のプロセッシングを複数個単一チップで搭載し、特に一定のアプリケーションを対象とし、高い演算効率を目指したヘテロジニアスマルチプロセッサシステムも現在提案されている。
【０００４】
以上のような複数個のプロセッサユニット（ＰＵ）を搭載するマルチプロセッサシステムでは、その性能を引き出すために複数個のＰＵを同時に効率よく動作させるよう、プログラムを作成する必要が生じる。通常の入力プログラムは処理が時系列で逐次的に記述されているため、複数のＰＵを搭載するにも関わらず、当該複数ＰＵに比例して期待される演算性能を得ることができない。この問題点を解決するための一つの方法として、プログラム開発者が自らプログラムの並列性を考慮し、当該プログラムを実行させるマルチプロセッサシステムの構成に基づいて、当該プログラムを複数のＰＵで実行させるための並列化コードを付加する必要がある。しかしながら、本手法はＰＵが数個のシステムにおいては有効であるが、将来の数十〜数千といった数のＰＵが積載されたシステムにおいては、また特にＰＵが異種で構成される場合は、開発時間、実効性能の点で実用的ではない。特許文献１では、これを解決する一手法として、並列化コンパイラによるプログラムのタスク分割とタスク並列解析、コンパイル時におけるＰＵへの並列タスクケジューリング、並びに並列スケジューリング結果に基づく静的なＰＵの電力制御手法を開示している。
【０００５】
また、以上のプロセッサを実現するためのデバイス技術として、これまでＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ−Ｏｘｉｄｅ−Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）技術が主流であり、上記で述べた通り、トランジスタのスケーリングに併せてトランジスタ数の増加と、スイッチング速度の高速化による周波数向上で、プロセッサの性能向上が実現されていた。しかしながら、上述の理由により、これ以上の微細化は、リーク電流等の様々な問題により、従来手法での性能向上が見出せなくなっている。そこで、リーク電力を抑えつつ高速化を実現するデバイス技術として、絶縁基板上にシリコン結晶を形成し、当該シリコン上にトランジスタを形成する、ＳＯＩ（Ｓｉｌｉｃｏｎ  ｏｎ  Ｉｎｓｕｌａｔｏｒ）が有望となっている。ＳＯＩ構造を取ることにより、基板容量を抑えられスイッチング速度が向上でき、また従来のシリコン基板では難しかった基板電位の操作（基板バイアス制御）が容易に実現でき、高速化と低電力化を同時に実現される。ＳＯＩには、絶縁膜上のシリコン層の膜厚が薄い完全空乏型ＭＯＳトランジスタ（ＦＤ−ＳＯＩ・ＭＯＳトランジスタ）と、シリコン層の膜厚が厚い部分空乏型トランジスタ（ＰＤ−ＳＯＩ・ＭＯＳトランジスタ）とに分類される。完全空乏型のＭＯＳトランジスタは動作状態においてチャネル領域（ボディー部）全体が空乏化し、チャネル（反転層）を形成する電荷は基板の影響を受けずに移動ずることができ、ゲート電圧による反転層電荷への影響がより支配的となり、部分空乏型の構造等に比べて非状に良好なサブスレッショルド特性を持つ。
【０００６】
特に従来のＳＯＩ構造をとらない、バルクＣＭＯＳでは、基板容量が大きく基板電圧の印加には駆動能力の大きな電圧生成回路が必要、基板電位の制御時間が大きい、トランジスタ素子が分離されていないためラッチアップ現象による過電流が流れてしまう、基板ノイズ発生の要因となる、といった問題が生じていた。このため、基板電位を正の方向（閾値電圧を極めて小さくする方向）に印加する、短期間で電位を切り替える、といったことは現実的ではなかった。ＳＯＩ技術を利用することにより、さまざまな粒度における高速な基板バイアス制御が実現される。
【０００７】
特許文献２では、薄膜埋め込み酸化膜層を持つＦＤ−ＳＯＩを使用し、薄膜埋め込み酸化膜層の下層半導体領域をバックゲートとし、論理回路ブロックにおいてブロック中の負荷の軽い論理回路にはバックゲートの電圧をブロック活性化に合わせてブロック外から制御することで、回路の動作特性に応じて使い分け、幅広い温度範囲にて高速かつ低電力な半導体装置を実現する手法を開示している。
【０００８】
また、従来からある半導体回路の電力制御の手法として、特許文献３で開示されている周波数・電圧制御手法がある。本手法は処理時間に余裕のあるタスクを実行するときはクロック周波数と共に電源電圧を低下させることで、消費電力の削減を実現する。しかしながら、電圧変更に対する制御時間が非常に大きい、また電源を駆動するためには駆動力が大きな電源回路を付加する必要があり面積的なオーバーヘッドが大きい、といった問題点がある。また、デバイスの微細化が進む中で、電源電圧もスケーリングされ、６５ｎｍ世代のＣＭＯＳでは電源電圧が１．０Ｖと非常に低い値となっている。そのため、電源電圧を安定的に低下させることが可能なレベルは０．８〜０．９Ｖと、その下げ幅は非常に小さいものとなっている。これは、プロセスの微細化がさらに進んだ、４５ｎｍ以降では電圧の下げ幅がほとんどゼロとなり、電圧降下手法を取ることが難しくなると予想される。また、微細化に伴い、これまでスイッチング電流である充放電電流が支配的であった消費電力は、スイッチを定常的に流れる各種リーク電流が問題となり、電源電圧を下げるのみでなく、基板バイアス制御など複数の手法を組み合わせる必要がある。
【０００９】
【特許文献１】特開２００６−２９３７６８号公報
【特許文献２】特開２００７−４２７３０号公報
【特許文献３】特開２００２−３０４２３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
現在、自動車のナビゲーションシステム、携帯電話、デジタルテレビなどといった、画像、音声、データベース情報など多様なデータを同時に扱う新アプリケーションが生まれる中で、プロセッサ性能への要求が大きく高まっている。そこで、複数のプロセッサユニット（ＰＵ）を搭載し、プログラムを並列動作させることで、動作周波数を上げずとも性能を向上する、マルチプロセッサシステムが主流となっている。本発明者は以下の検討を行った。複数のＰＵを活用するためには、複数の並列化可能なタスクを同時に多くのＰＵに効率的に割り当てる必要がある。また、マルチプロセッサシステムでは、タスクを実行する際に、タスク間のデータや制御依存性のため、必ずしも同時に実行されないケース、ＰＵが他のタスクの実行終了を待つケース、により、ＰＵがアイドル状態になることもある。性能・電力面でのシステム全体の実行効率を上げるためには、全体の実行時間に影響を与えるタスクを高速に実行し、また電力効率の観点から、全体の実行時間に影響を与えないタスクは低速に実行する必要がある。また、特に消費電力の観点からも、各ＰＵがアイドル状態では無駄な電力が消費されていることから、アイドル状態を削減する、またはアイドル状態において電源遮断を行う、基板バイアスを印加する、等の電力制御を行う必要がある。
【００１１】
本発明の目的は、マルチタスク処理においてタスクの処理時間短縮と消費電力の低減とを両立することができるマルチプロセッサシステムを提供することにある。
【００１２】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１４】
すなわち、ＳＯＩ・ＭＯＳトランジスタを用いるマルチプロセッサシステムにおいて、複数のタスクに分割された実行プログラムを複数のプロセッサユニットに割り当てるスケジューリング処理において、複数個のプロセッサユニットにタスク割当を行なう。このとき、プログラムの実行時間を小さくするようタスク実行順を決定するプロセスと、スケジューリング時に、実行タスク間に依存性があるとき一のタスクの処理性能に影響を与える他のタスクを実行する際に実行するプロセッサユニットの動作速度を一時的に向上させるようにプロセッサユニットのクロック信号周波数と基板バイアスを制御する電力制御と、スケジューリング時に実行タスク間に依存性があるとき一のタスクの処理性能に影響を与えない他のタスクを実行する際には実行するプロセッサユニットの動作速度を一時的に低下させるようにプロセッサユニットのクロック信号周波数と基板バイアスを制御する電力制御と、を採用する。
【発明の効果】
【００１５】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１６】
すなわち、ＳＯＩ・ＭＯＳトランジスタを用いたマルチプロセッサシステムによるマルチタスク処理においてタスクの処理時間短縮と消費電力の低減とを両立することができる。
【発明を実施するための最良の形態】
【００１７】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕マルチプロセッサシステムは、並列動作可能な複数のプロセッサユニット（１０１）と、基板バイアス制御回路（１０２）と、コントロールプロセッサユニット（１０３）とを有する。前記プロセッサユニットは、他のＭＯＳトランジスタから電気的に分離された背面ゲート電極を備えたシリコン・オン・インシュレータ構造のＳＯＩ・ＭＯＳトランジスタから成る内部回路を備え、クロック信号に同期動作される。前記基板バイアス回路は前記内部回路のＳＯＩ・ＭＯＳトランジスタの背面電極に基板バイアス電圧を出力する。前記コントロールプロセッサユニットは、タスク間の依存性を考慮して前記複数のプロセッサユニットに複数のタスクを並列的に処理させるタスクスケジューリングを行なうと共に、前記基板バイアス電圧と前記クロック信号の周波数を前記プロセッサユニット毎に制御するための制御データを生成し、前記タスクスケジューリングに際して、一のタスクの処理開始に影響を与える他のタスクの処理時間を短縮するように前記制御データを決定する。
【００１９】
タスクの依存関係、特にタスクの処理開始に影響を与えるタスクの処理を基板バイアス制御と周波数制御によって高速化することができる。ＳＯＩ・ＭＯＳトランジスタのデバイス構造より動作時の基板電流リークの抑制と非動作時のサブスレッショルド電流リークの抑制が実現される。これにより、マルチプロセッサシステムにおけるマルチタスク処理においてタスクの処理時間短縮と消費電力の低減とを両立することが可能になる。
【００２０】
〔２〕項１のマルチプロセッサシステムにおいて、タスク間の依存関係を規定する依存関係テーブル（タスクスケジューリングテーブル）を格納するメモリを有する。前記コントロールプロセッサユニットは、前記依存関係テーブルを参照して、タスク間の依存性を把握する。ソースプログラムをコンパイルする段階でタスク間の依存性を考慮する場合に比べて、ソフトウェア開発時間の短縮に寄与することができる。その効果は、マルチプロセッサシステムに搭載されるプロセッサユニットの数が多数であるほど顕著である。
【００２１】
〔３〕項１のマルチプロセッサシステムにおいて、前記コントロールプロセッサユニットは、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、且つクロック信号の周波数を高くするように、前記制御データを決定する。基板バイアス制御によりＳＯＩ・ＭＯＳトランジスタの閾値電圧が小さくされることにより、回路の状態遷移時間が短くなり、高い周波数による動作の高速化が実現される。ＳＯＩ・ＭＯＳトランジスタは、その構造ゆえに、動作状態において閾値電圧を小さくしても基板への電流リークを生ぜず、非動作状態におけるオサブスレッショルドリーク電流も低減され、これらの点で低消費電力が実現される。
【００２２】
〔４〕項１のマルチプロセッサシステムにおいて、前記他のタスクの処理の完了を待って、前記一のタスクが処理されるとき、前記コントロールプロセッサユニットは、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、且つクロック信号の周波数を高くするように、前記制御データを決定する。他のタスクの処理
〔５〕項４のマルチプロセッサシステムにおいて、前記他のタスクの処理に並行して、前記一のタスクの処理開始に影響を与える別のタスクが処理されるとき、前記コントロールプロセッサユニットは、前記別のタスクの処理終了タイミングが前記他のタスクの処理終了タイミングよりも遅くならない範囲で、前記別のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を大きくし、且つクロック信号の周波数を低くするように、前記制御データを決定する。前記別のタスクの処理は前記他のタスクの処理よりも遅延せずに終了すれば、当該他のタスクの処理を高速化した意味は失われない。したがって、前記別のタスクの処理を他のタスクの処理終了に間に合う範囲で低速にすることによってシステムの低消費電力に寄与する。
【００２３】
〔６〕マルチプロセッサシステムは、並列動作可能な複数のプロセッサユニットと、基板バイアス制御回路とを有する。前記プロセッサユニットは、他のＭＯＳトランジスタから電気的に分離された背面ゲート電極を備えたシリコン・オン・インシュレータ構造のＳＯＩ・ＭＯＳトランジスタから成る内部回路を備え、クロック信号に同期動作される。前記基板バイアス回路は前記内部回路のＳＯＩ・ＭＯＳトランジスタの背面電極に基板バイアス電圧を出力する。一のプロセッサユニットはスケジューラ（３００）を実行してタスク間の依存性を考慮して前記複数のプロセッサユニットに複数のタスクを並列的に処理させるタスクスケジューリングを行なう。夫々の前記プロセッサユニットはタスクマネージャ（３０１）を実行して前記タスクスケジューリングの結果を参照して自らが実行すべきタスクの処理を制御するタスク実行管理を行なう。前記一のプロセッサユニットは前記タスクスケジューリングに際して、前記基板バイアス電圧と前記クロック信号の周波数をタスク単位で制御可能な制御データを生成し、一のタスクの処理開始に影響を与える他のタスクの処理時間を短縮するように前記制御データを決定する。項１のコントロールプロセッサユニットの機能を一つのプロセッサユニットが担っている。上記同様に、マルチプロセッサシステムにおけるマルチタスク処理においてタスクの処理時間短縮と消費電力の低減とを両立することが可能になる。
【００２４】
〔７〕項６のマルチプロセッサシステムにおいて、前記一のプロセッサユニットは前記タスクスケジューリングにおいて、スケジューリングされたタスクとこれに対応する制御データとをプロセッサユニット毎のキューイングテーブルに登録する。前記プロセッサユニットはタスク実行管理において対応するキューイングテーブルを参照して自ら処理すべきタスクと制御情報を取得する。
【００２５】
〔８〕項７のマルチプロセッサシステムにおいて、前記一のプロセッサユニットは前記タスクスケジューリングにおいて、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、クロック信号の周波数を高くするように、前記制御データを決定する。
【００２６】
〔９〕項７のマルチプロセッサシステムにおいて、前記他のタスクの処理の完了を待って、前記一のタスクが処理されるとき、前記一のプロセッサユニットは前記タスクスケジューリングにおいて、前記他のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を小さくし、且つクロック信号の周波数を高くするように、前記制御データを決定する。
【００２７】
〔１０〕項９のマルチプロセッサシステムにおいて、前記他のタスクの処理に並行して、前記一のタスクの処理開始に影響を与える別のタスクが処理されるとき、前記一のプロセッサユニットは前記タスクスケジューリングにおいて、前記別のタスクの処理終了タイミングが前記他のタスクの処理終了タイミングよりも遅くならない範囲で、前記別のタスクを処理するプロセッサユニットの前記内部回路に対して、ＳＯＩ・ＭＯＳトランジスタの閾値電圧を大きくし、且つクロック信号の周波数を低くするように、前記制御データを決定する。
【００２８】
〔１１〕項１のマルチプロセッサシステムにおいて、前記シリコン・オン・インシュレータ構造は完全空乏型である。不完全空乏型よりも閾値電圧制御と電流リークの抑制を高精度に行うことができる。
【００２９】
〔１２〕項１１のマルチプロセッサシステムにおいて、前記ＳＯＩ・ＭＯＳトランジスタは、半導体基板上に、埋め込み酸化膜を介して形成される第１半導体層と、前記第１半導体層に形成され、前記第１半導体層の厚さを有するソース領域及びドレイン領域と、前記ソース領域及びドレイン領域に挟まれるように形成されたチャネル領域と、該チャネル領域の第１主面側に形成された第１ゲートと、前記埋め込み酸化膜の下面に接して形成された導電層からなる第２ゲートとを有し、前記第２ゲートが前記背面ゲート電極である。
【００３０】
〔１３〕項１２のマルチプロセッサシステムは１個の半導体基板の上に形成された、ＳｏＣ形態とされる。
【００３１】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３２】
＜マルチプロセッサシステム＞
図１には本発明に係るマルチプロセッサシステム（ＣＭＰ）が例示される。同図に示されるＣＭＰ１００は、特に制限されないが、公知の相補型ＳＯＩ・ＭＯＳ集積回路製造技術によって単結晶シリコンのような１個の半導体基板に形成され、所謂ＳｏＣとして構成される。
【００３３】
ＣＭＰ１００は、複数のプロセッサユニット（ＰＵ）１０１、複数の基板バイアス制御回路（ＢＧＣＴＬ）１０２、コントロールプロセッサ（ＣＴＬＰ）１０３及び共有メモリ（ＣＳＭ）１０４を有する。前記夫々のＰＵ１０１はインターコネクションネットワーク（ＢＵＳ）１０５を介してＣＳＭ１０４及びＣＴＬＰ１０３に共通接続される。
【００３４】
ＰＵ１０１は、特に図示はしないが、命令をフェッチして実行するＣＰＵ（中央処理）、ＣＰＵの同期動作クロック信号の周波数制御等を行うクロック生成回路等を備える。ＰＵ１０１を構成するＭＯＳトランジスタは例えばＦＤ−ＳＯＩ・ＭＯＳトランジスタによって構成される。基板バイアス生成回路（ＢＧＣＴＬ）１０２はＰＵ１０１を構成するＦＤ−ＳＯＩ・ＭＯＳトランジスタの背面電極に印加する基板バイアス電圧を生成する。コントロールプロセッサ（ＣＴＬＰ）１０３はタスクスケジューラプログラム（スケジューラ）を実行して個々のＰＵ１０１が処理するタスクのタスクスケジューリングを行うと共に、リソース管理制御を行う。ここでリソース管理制御とは、タスクスケジューリングに際してＰＵ毎に基板バイアス電圧と前記クロック信号の周波数を制御するための制御データを生成する制御を意味する。詳細は後述するが、その制御データは、一のタスクの処理開始に影響を与える他のタスクの処理時間を短縮するように決定される。
【００３５】
特に制限されないが、各ＰＵ１０１は、ＣＰＵの他にＣＳＭ１０４に対するアクセス時間を隠蔽のためのキャッシュメモリやローカルメモリを搭載する。基板バイアス制御回路１０２は、ＣＴＬＰ１０３から出力される基板バイアス制御信号１１０に従って、基板バイアス電圧ＢＧＰ，ＢＧＮを対応するＰＵ１０１内のＦＤ−ＳＯＩ・ＭＯＳトランジスタの背面電極に印加する。詳細は後述するが前記タスクスケジューリングに際して生成された前記制御データは、タスクＩＤと共にタスクキューイングテーブルに登録され、登録されたタスクを実行するＰＵがその制御データをＣＴＬＰ１０３に与えることによって対応する基板バイアス生成回路１０２が基板バイアス制御信号１１０に従って基板バイアス電圧を生成する。
【００３６】
各ＰＵが有する前記クロック生成回路は、基板バイアス電圧の状態に応じたてクロック信号の周波数を決定する。基板バイアス電圧がＮＯＳトランジスタの閾値電圧を小さくするときはクロック信号の周波数を高くし、逆の場合は低くする。クロック信号周波数の制御は、前記タスクキューイングテーブルに登録されたタスクを実行するＰＵがそのタスクに対応する制御データを用いて行えばよい。特に制限されないが、夫々のＰＵは、周波数に応じて電源電圧を切り替えたり、不使用時に電源遮断を行ったり、といった電源制御を行う電力制御回路を備えてもよい。
【００３７】
図１の例ではＰＵ１０１は全て同一、例えば汎用プロセッサを複数個接続したホモジニアスなマルチプロセッサ構成とされているが、例えば一部のＰＵが信号処理プロセッサ（ＤＳＰ）や動的再構成可能プロセッサ（ＤＲＰ）といったホモジニアスなマルチプロセッサ構成とすることも可能である。要するに、ＰＵの種類と数は、図１に限定されず、適宜変更可能である。
【００３８】
図２にはマルチプロセッサシステムの別に例が示される。同図に示されるＣＭＰ１００＿Ａは、コントローラプロセッサ（ＣＴＬＰ）１０３を持たない。コントローラプロセッサ（ＣＴＬＰ）１０３が担っていたタスクスケジューリング機能は一つのプロセッサユニットＰＵが負担する。コントローラプロセッサ（ＣＴＬＰ）１０３が担っていた基板バイアス制御機能は各ＰＵが持つ制御レジスタ（ＣＲ）１１１でＢＧＣＴＬ１０２を制御する構成とされる。ＣＲはグローバルなメモリ空間にアドレスマッピングされる。タスク割り当て（タスクスケジューリング）と電源管理を行うスケジューラプログラムを実行する一つのＰＵが、タスクスケジューリングに際して前記制御データを生成する。登録されたタスクを実行するＰＵがその制御データを対応するＣＲ１１１に与えることによって対応する基板バイアス生成回路１０２が基板バイアス制御信号１１０に従って基板バイアス電圧を生成する。その他の構成は図１と同様であるからその詳細な説明を省略する。
【００３９】
図３には同図にはプロセッサユニット１０１の内部回路の一部と共に基板バイアス制御回路１０２が例示される。ＤＣＬは、基板バイアス制御の対象となる回路と例示された論理回路ブロックである。ＰＦＣは負荷の大きな出力端子ＢＯ１を駆動する回路として例時されたドライバ回路である。同図に示されるＭＯＳトランジスタは、特に制限されないが、全てＦＤ−ＳＯＩ・ＭＯＳトランジスタとされる。ＤＣＬは、ここでは例としてインバータ回路２段としており、このブロックへの入力がＢＩであり、出力がＣＯである。電源電圧はＶＣＣ、接地電圧はＶＳＣである。ＤＣＬ内のｐチャンネル型ＦＤ−ＳＯＩ・ＭＯＳトランジスタに対する基板バイアス電圧はＢＧＰであり、同ＤＣＬ内のｎチャンネル型ＦＤ−ＳＯＩ・ＭＯＳトランジスタに対する基板バイアス電圧はＢＧＮである。ＢＧＣＬＴ１０２は入力信号ＢＡに従って電位の基板バイアス電圧ＢＧＰ，ＢＧＮを出力する。ＶＣＡ，ＶＳＡは基板バイアス制御回路１０２の動作電源であり、これらの電源電圧はそれぞれ，基板バイアス制御の対象となる回路の電源電圧ＶＣＣ、ＶＳＣと同じでも良いし異なっても良い。たとえば、LSIチップのレイアウトでは、外部電源と接続されたパッドから、ＶＣＡ、ＶＣＣ、について独立に電源配線を準備する場合もある。また、ＶＳＣとＶＳＡは接地電圧としたが、同様に各々これとは異なる電圧でも良い。基板バイアス制御のモードにより負電圧も取りえる。また，当該電圧値が当該モードにより連続的に変化させるよう、制御回路１０２を構成してもよいし、チップ外に電源回路を別途設けて変化させても良い。本実施例によれば、ＤＣＬの中のｎＭＯＳ及びｐＭＯＳのしきい値電圧の状態を変えることができるため、ＤＣＬの動作状態に応じて、ＤＣＬの中のしきい値電圧を選択することができる。これによって、高速化が必要な時には、しきい値電圧を絶対値で低く設定し、低速で良い場合や待機状態ではしきい値電圧を高く設定しリーク電流を低く抑えることができる。このようにして高速化と低電力化を達成することができる。入力信号ＢＡは、図１のＣＴＬＰ１０３から出力される基板バイアス制御信号１１０の対応する１ビットの信号、あるいは図２のＣＲ１１１の設定値に従って出力される基板バイアス制御信号１１０とされる。タスクの処理に応じて信号ＢＡのレベルが制御されることで、基板バイアス電圧を変化させることができる。その結果、制御対象であるＤＣＬのトランジスタのしきい値電圧を、ＤＣＬが低速動作若しくは標準速度で動作するとき基板電圧を負の方向に印加し高くすることでリーク電流を減少させ、また高速動作するときは基板場椅子電圧を正の方向に印加し低くすることで、大きな駆動電流によって高速スイッチング動作が可能になる。尚、ゲート電極が自らの背面ゲート電極に接続する形態はＦＤ−ＳＩＯ・ＭＯＳトランジスタ特有の接続形態であり、オフ状態において閾値電圧を大きくして電流リークを抑制し、オン状態において閾値電圧を小さくスイッチング動作を高速化する、自律的基板バイアス制御形態とされる。半導体基板へのリークが抑制されたＭＯＳデバイス構造を持っているからである。
【００４０】
＜基板バイアス電圧変化の効果＞
基板バイアス電圧印加に対する、トランジスタの駆動電流特性を見ることで、その効果を説明する。
【００４１】
図４の（Ａ）にはｎチャンネル型のＳＯＩ・ＭＯＳトランジスタの縦断面構造が例示される。このＳＯＩ・ＭＯＳトランジスタは、端子ＳＢを持つｐ型基板であるｐ−ｓｕｂ上に、トレンチアイソレーション（溝堀型絶縁）領域ＳＴＩ、および埋め込み酸化膜ＵＴＢにより隣接トランジスタ、基板から電気的に絶縁された領域に形成される。ＵＴＢの厚さは例えば１０〜２０ｎｍである。Ｓ、Ｇ、Ｄはソース端子、ゲート端子、ドレイン端子であり、それぞれシリサイドＳＣを介してｎ＋領域（ソース）、ｐ領域（チャネル形成領域）、ｎ＋領域（ドレイン）に接続される。個の厚みは例えば２０ｎｍ程度である。ゲートのＳＣとｐ領域の間には酸化膜ＯＸがあり、いわゆるＭＯＳ構造となっている。ＵＴＢの下には端子ＢＧと接続されたｐ領域、および端子ＴＷを持ちｐ領域と基板とを電気的に分離するためのｎ領域がある。本構成によれば、ＢＧはＵＴＢを絶縁膜としてｐ領域を介した形で接続されており、ＵＴＢを第２のゲート酸化膜と見立てると、ＭＯＳ構造の背面に第２のゲートが存在する構造をとることが分かる。
【００４２】
上記シリコン・オン・インシュレート構造のＭＯＳトランジスタはウェル分離を行なうバルク構造に比べて、トランジスタ個別の閾値電圧制御が容易である。また、ＳＯＩ・ＭＯＳトランジスタはその埋め込み酸化膜上のチャネル形成領域及びソール・ドレインとされるシリコン層ｎ＋、Ｐの膜厚が薄い完全空乏型、又はその膜厚が厚い不完全空乏型として構成することができる。例えば０．２μｍプロセスでは前者の当該膜厚は通常５０ｎｍ程度以下というように極めて薄い。従って、前者は後者に比べてデバイスプロセスが難しくなるが、不完全空乏型のシリコン・オン・インシュレート構造に比べて、ゲート電圧によるチャネル領域内反転層電荷への影響が支配的になり、良好な閾値電圧特性を持ち、後述するスタティック・ノイズ・マージンの設定が更に容易になる。尚、０．２μｍプロセスにおいて不完全型の膜厚は１００〜２００ｎｍ程度にある。図４の（Ｂ）には（Ａ）の構造に対する回路記号が例示される。
【００４３】
図４の（Ｃ）にはｎチャンネル型のＦＤ−ＳＯＩ・ＭＯＳトランジスタにおける基板バイアス電圧ＶＢＧＳを１Ｖ、０Ｖとしたときの、ＩＤ−ＶＧＳ特性を示した図である。この図より、ＶＢＧＳ＝１Ｖと正の方向に基板バイアス印加した場合、ＶＧＳ＞０．５Ｖでのオン状態において、駆動電流の量が増す。また、ＶＢＧＳ＝０Ｖと負の方向に基板バイアス印加した場合、ＶＧＳ＝０Ｖでのオフ状態において、オフ電流すなわちリーク電流が低減する。
【００４４】
＜スケジューラ＞
スケジューラの動作フローを説明する。スケジューラは分割された複数のタスク群をＰＵ１０１の処理状況により、全体のタスク実行時間がなるべく小さくなるよう、タスクをＰＵ１０１に割り当てる。入力タスクは、ユーザが明示的に分割、定義しても良いし、後述するようなコンパイラが機械的にサブルーチンやループ等のプログラム構造を利用して分割、定義しても良い。なお、ここで言うタスクの単位粒度は、ある機能を実現するプログラム内の分割された部分プログラム単位でも良いし、また複数の機能を実現するための複数のプログラム群のうちの一プログラムとしても良い。なお、タスクという用語は、スレッド、プロセスと呼ばれることもある。
【００４５】
＜タスクテーブル＞
スケジューラが入力するタスク群の関係は、予めユーザまたはツール等によって定義をしておく。図５にタスク間の依存関係を示したタスク依存テーブル（スケジューリングテーブル）を示す。スケジューリングテーブルは、タスク毎に、タスク番号、依存タスク番号、処理時間、ターゲットＰＵ、タスク間データ共有量、の項目（フィールド）を持つ。各項目を説明すると、タスク番号は、あるプログラムを実行する際の各タスクの固有番号（ＩＤ）であり、タスクを一意に指定できるような番号付けをする。なお、スケジューラ内部で扱うタスク番号はスケジューラ内部で自動生成するため、必ずしもスケジューリングテーブル内で扱うタスク番号と一致するとは限らない。
【００４６】
依存タスク番号は、当該タスクを実行するに際して、当該タスクが実行可能となるために、当該タスクより前に処理すべきタスク番号を表す。つまり、依存タスク番号で指定されたタスクの実行により生成される出力データを、当該タスクが入力データとして使用する（データ依存）、または依存タスク内に分岐処理が含まれており、当該分岐処理の実行結果で次に起動すべきタスクが当該タスクとなる（制御依存）ことを意味する。次に、処理時間は、ターゲットとなるＣＭＰ１００が持つＰＵ１０１上で当該タスクを実行した際の処理時間を示す。処理時間の単位は、サイクル数、または予め定めた単位時間で設定される。処理時間は、実際に当該タスクを単一のＰＵ１０１で逐次実行した際に得る実実行時間を設定しても良い。また、コンパイラ等のツールにより、生成された命令コードより概算の実行時間を見積もり、処理時間として設定しても良い。本実施例では、後述するコンパイラで見積もった処理時間を、キロサイクル単位で表示した。
【００４７】
優先度は、タスクを実行するに際して複数のタスクが割り当て対象となった場合、時間的に優先して割り付けるべきタスクを選出する際に用いる指標値である。優先度は、さまざまな指標を用いて設定をする。たとえば、ユーザが優先度を指定するケースがある。アプリケーション設計時に、タスクの実行を優先的に行うことでプログラム全体の実行時間が短縮できることがわかる場合は、当該タスクに高い優先度を与える。また、周期タスク等で、時間制約に対し余裕が少ないタスクに高い優先度を与える、割り込み処理を行うタスクで、通常の処理タスクに対し影響を最低限にするよう当該割り込み処理タスクに高い優先度を与える、等がある。また、コンパイラ等のツールによって優先度を設定することもできる。たとえば、コンパイラにより生成されたタスクで、タスクの依存関係を表すタスクグラフを作る過程で各タスクの実行時間を見積もり、タスク間の依存関係から当該タスクからの残存タスクのうち、実行時間が最長のパス（クリティカルパス）を求め、クリティカルパス上のタスクに高い優先度を与え、非クリティカルパス上のタスクに低い優先度を与える。これは、後続タスクの処理量が多いタスクから優先的にＰＵへ割当を行うことで、全体の処理時間に影響あるタスクを優先的に処理でき、全体の実行時間を最適化できる。従って、優先度は、残存タスク処理時間としても良い。また、優先度を基板バイアス制御による高速化対象タスクとして、直接指定するためのフラグとして扱う方法もある。
【００４８】
ターゲットプロセッサの項目は、ＣＭＰ１００が搭載するＰＵ１０１の一部が信号処理プロセッサＤＳＰなど、特定の処理を高速に実行可能な専用処理ＰＵを持つヘテロジニアス構成において、当該タスクの処理に適しているＰＵ１０１を示している。今回の例では、ターゲットをホモジニアスＣＭＰ構成としているため、汎用プロセッサユニットがターゲットプロセッサとなる。図ではこの汎用プロセッサユニットをＣＰＵとして示している。
【００４９】
タスク間データ共有量は、データ依存が存在する依存タスクと当該タスクで、データ授受の量を表す。つまり、依存タスクが生成したデータで当該タスクが使用するデータの量、または依存タスクが使用するデータで当該タスクも使用するデータ量を示す。これは、当該タスクを割り当てる際、共有データ量が多いタスクを実行したＰＵ１０１と同一のＰＵ１０１に割り当てることで、依存タスク処理時にキャッシュに読み込まれたデータ、またはローカルメモリに予め転送されたデータを、当該タスクが最大限活用する。その結果、当該タスクを実行するに際し必要なＣＳＭ１０４等の外部メモリとの転送量をなるべく少なくし、転送に関わる処理時間を低減できる。なお、ローカルメモリにデータを配置する場合には、予め当該データの配置アドレスを固定的に定めておく必要がある。プログラム内で明示的にメモリ配置位置を指定しておくか、コンパイラ等のツールにより、これが実現される。
【００５０】
＜電力制御の概念＞
基板バイアス制御を利用したタスクスケジューリングにおける電力制御手法を説明する。第１の制御手法として、スケジューリングテーブルで定義された優先度を利用する方法がある。ユーザまたはコンパイラ等のツールにより設定された優先度で、予め定められた一定以上の優先度のタスクを処理する際に、当該タスクを実行するＰＵ１０１の基板バイアス制御（順方向バイアス印加）を行うことで閾値電圧を下げ（閾値電圧であるゲート・ソース間電圧を小さくする）、ＰＵ１０１の速度を高めて処理することで全体の処理時間を短縮する。また、優先度が一定以下の低いタスクに対しては、当該タスクを実行するＰＵ１０１に対して逆方向の基板バイアス制御を行うことで閾値電圧を上げ（閾値電圧であるゲート・ソース間電圧を大きくする）、ＰＵ１０１の速度を低減して処理を行うことで、全体の処理時間に対する処理時間の影響を抑えつつ電力消費を削減できる。例えば、図５のスケジューリングテーブルで定義されたようなタスク群を実行する際に、優先度が５以上のタスクを実行するＰＵ１０１には順方向基板バイアス制御を適用する。
【００５１】
第２の制御手法は、スケジューリングを複数のＰＵ１０１に割り当てる際に、タスク間依存関係から生じるプロセッサ処理量の不均衡を利用して、並列実行時にプロセッサ処理量の不均衡が低減されるよう（処理速度若しくは処理性能のアンバランスを小さくするように）、各ＰＵ１０１の基板バイアス制御を行う手法である。
【００５２】
図６にはその第２の手法による制御の概念が例示される。図５のスケジューリングテーブルで示したタスクを、２個のＰＵ＿０、ＰＵ＿１に割り当てることを想定する。図６の（Ａ）は基板バイアス制御を行う前の状態、（Ｂ）は基板バイアス制御を行った後の状態を示す。破線は、スケジューラが動作するスケジューリング実行ポイントを示す。当該テーブル情報により、初期タスクＴ０がまず割り当て対象となり、この時点ではＰＵ＿０、ＰＵ＿１共にアイドル状態であるためＰＵ＿０に割り当てられる。このとき、Ｔ０を依存タスクとするタスクはＴ１とＴ２であり、当該依存が解決しないと、つまりＴ０の終了を待たないと次のタスクが実行できない。そこでスケジューラはＴ０を割り当てるに際して、Ｔ０を実行するプロセッサＰＵ＿０の基板バイアス制御（順方向バイアス印加）を行うことでしきい値を下げ、Ｔ０の実行を高速化することでＴ１及びＴ２の処理開始を早める。またＴ０を実行中アイドル状態となるＰＵ＿１の電源電圧を遮断、または基板バイアス制御（逆方向バイアス印加）を行い、しきい値を上げることで、消費電力を抑えつつ制御非適用時と比較して全体の処理時間を短縮することができる。図においてVBG＝forwardは順方向バイアス印加を意味し、VBG＝backwardは逆方向バイアス印加を意味する。VD=OFFは動作電源遮断、VD=ONは動作電源投入を意味する。１２０〜１２８は対応するタスクの処理を意味する。
【００５３】
次に、スケジューラをＴ０実行終了の通知を受け、Ｔ１とＴ２を実行可能タスク（レディタスク）として選択する。当該テーブル情報により、Ｔ１及びＴ２双方を依存タスクとするタスクはＴ３であり、Ｔ１とＴ２双方の実行が終了しなければＴ３は実行できない。Ｔ１とＴ２の処理時間はそれぞれ３０Ｋサイクル、１５Ｋサイクルと異なり、スケジューラは当該スケジューリングテーブルを参照し、Ｔ１とＴ２が処理時間の異なる２個のＰＵ＿０、ＰＵ＿１上での並列実行であることを検出する。そして、コスト（実行間が長いほど、優先度が高いほど、タスクのこととは高い）の大きなＴ１を実行するＰＵ＿０の基板バイアス制御（順方向バイアス印加）を行うことでＰＵ＿０の速度を向上させ、Ｔ３の実行開始時刻を早めることでプログラム全体の実行時間を高速化する。またコストの小さなＴ２を実行するＰＵ＿１においては、Ｔ３の開始時間に影響を与えない範囲で、可能であれば基板バイアス制御（逆方向バイアス印加）を行い、ＰＵ＿１の速度を低減して処理することで、全体の処理時間への影響を抑えつつ電力を削減する。Ｔ２及びＴ３双方の処理が終了後、スケジューラは依存が解決するタスクＴ３を選出する。スケジューラは、Ｔ３を依存タスクとするタスク及び同時に実行される並列タスクは存在せず、Ｔ３の依存タスクでデータ共有量がより大きなタスクであるＴ２を実行したＰＵ＿１にＴ３を割り当て、さらに基板バイアス制御（順方向バイアス印加）によりＴ３の実行を高速化する。
【００５４】
＜スケジューラの動作フロー＞
図７にスケジューラの動作フローを示す。初めにスケジューラは、図５で説明したようなスケジューリングテーブル（ＳＣＴＢＬ）２３４を参照し、その時点で実行可能となっているタスク（レディタスク）を検出する（２２０）。レディタスクとは、あるタスクの実行が終了した結果、またはスケジューラが起動した状態で、データ依存や制御依存が解消され実行可能状態となっているタスクをさす。なお、プログラム開始時は初期状態で実行可能であるタスクが選択される。当該タスクのデータを後続の複数のタスクが利用するといったケースなど、複数のタスクがレディタスクとなりうる。検出の結果、レディタスクが存在しない場合は、タスクスケジューリングステップは踏まずに、その時点でアイドル状態となっているプロセッサをチェックする（２３２）。アイドル状態か、否かは、各ＰＵ１０１別に用意されるタスクキュー（タスクキューイングテーブル）にタスクが登録されているかをチェックすることで実現される。もし、タスクキュー内のすべてのタスク実行が当該ＰＵで終了し、プロセッサがアイドル状態であれば、当該ＰＵの電源を遮断する、基板バイアス制御（逆方向バイアス）を適用する、等の電力制御を実施し（２３３）、アイドルＰＵの電力を削減する。その後、終了タスクの検知を繰り返す。
【００５５】
レディタスクが検出された場合、次にスケジューリングテーブル２３４を参照し、優先度が一番高いタスクをＰＵへ割り当てるべき対象タスクとして選出する（２２２）。優先度指標は、スケジューリングテーブルの構成で説明した通りである。これは例えば、優先度を当該タスクから見た残存タスク量とし、残存タスク量が大きいほど優先度を高く設定した場合、レディ状態となったタスクのうち、優先度が高い（残存タスクが大きな）タスクを早くにＰＵに割り当て処理することにより、プログラム全体の実行時間を最適化（短縮）できる。
【００５６】
続いて、当該タスクを処理するＰＵを決定する（２２３）。もし、既に割当済みのタスクが存在する場合は、もっとも早い時間に割当済みタスクの処理が完了するＰＵ１０１に前記割当済みタスクに後続する形で、当該タスクを当該ＰＵ１０１に割り当てる。なお、ＰＵ１０１への割当は、対象となるＰＵ１０１上でのタスク実行を管理するタスクキュー（タスクキューイングテーブル）に、エントリを追加することで実現される。図９にタスクキュー内容を示す。タスクキューに登録するエントリ項目は、タスクＩＤ、電力モード、処理終了予想時刻、ステータスである。電力モードは後続の処理で決定される。また処理終了予想時刻は、スケジューリングテーブルで定義した当該タスクの処理時間情報を用いる。もし、割当済みタスクがあればその終了時刻に加算して求める。ステータスは、本処理においてキューに登録する段階では電力モードが未決定のため、 “Ａｓｓｉｇｎｉｎｇ”とされる。
【００５７】
次に、レディタスクが複数個検出された場合、割当が未だ完了されていないレディタスクが存在するかを検出する（２２４）。すでにレディ状態のタスクが存在しない場合は、後続の電力制御処理へ移行する。もし、レディ状態のタスクがまだ存在する場合は、残存レディタスクをＰＵに割り当ててしまう（以下では、先行タスク割当と呼ぶ）。これは、レディ状態となったタスクはその時点ではすでに実行可能状態であるため、レディタスク群を一度にＰＵへスケジューリングできる。その結果、スケジューリングのオーバーヘッドが低減される。なお、先行割り当ての数を多くしてしまうと、スケジューリング時のプロセッサ資源の不足により、優先度の高いタスク実行が妨げられてしまう問題も生じるため、先行タスク割当可能なタスク数が制約される場合は、予め指定した先行タスク割当数の制限内であるかを検出し（２２５）、制限内であれば再びタスク割り当ての手順を繰り返す（２３６）。もし制限に達した場合は、その時点で電力制御処理に移行する。
【００５８】
タスクのＰＵへの割当が完了した時点で、割り当てたタスク（群）を実行した結果実行可能となる非依存タスクを検索し、処理時間情報を利用して開始時間を計算する（２２６）。複数の被依存タスク、つまり当該タスク（群）終了後に同時に実行できるタスクが複数ある場合は、それぞれのタスクで開始時間を計算する。本処理は、後続の電力制御処理にて利用されることになる。なお、電力制御手法が上述した２通りの手法のうち、優先度情報によって電力モードが一意に決まる手法を用いる場合は、被依存タスク開始時間情報を使わないため、本処理２２６は行わない。
【００５９】
次に、電力制御（基板バイアス制御）適用とタスクキューへの電力モード登録処理を実行する（２２７）。電力制御適用手順は、上述した２手法の制御手法それぞれで異なる。まず、第１の優先度情報によって電力モードが一意に決まる手法を適用する場合は、優先度と適用する電力制御モードを対応させた電力制御情報２３５を予め定義しておき、優先度情報より電力モードを決定する。そして、決定された電力モードを、タスクキューテーブルの対応するタスクＩＤを持つエントリに書き込む。次に第２の、並列スケジューリングの結果、ＰＵ処理量の不均衡を低減する手法を適用する場合の手順を示す。まず、処理２２６の結果求められた非依存タスクの開始時間情報を使い、電力制御適用により当該タスクの実行時間を変化させた場合に、被依存タスクの開始時間（電力制御適用基準）が変化するかを計算する。このとき、基板バイアスを順方向に印加しＰＵを高速化した際に、被依存タスクの何れかで開始時間が高速化される場合は、当該タスクを電力制御適用（順方向バイアス印加）対象として、タスクテーブルに当該タスクに対応する電力モードを“Ｌｏｗ−Ｖｔ”にセットする。また、逆に逆方向バイアス印加を行い当該タスクの実行時間を延ばした場合、被依存タスクの実行開始時間が変化しないは、当該タスクを電力制御適用（逆方向バイアス印加）対象として、タスクテーブルに当該タスクに対応する電力モードを“Ｈｉｇｈ−Ｖｔ”にセットする。なお、もし被依存タスクが存在しない場合は、割り当て済みのタスクのうち、処理終了時刻が一番遅いタスクの処理終了時刻を、電力制御適用基準として用いる。
【００６０】
電力制御処理２２７が終了後、未割り当て状態のＰＵがあるかをチェックする（２２８）。これは、ＰＵ別に設けたタスクキューにエントリがあるかをチェックすることで、判断する。もし未割り当てＰＵが存在する場合は、処理タスクが存在しないため、電力低減を目的とした電力制御を実施する（２３１）。その後、タスクキューのステータスを実行可能状態“Ａｓｓｉｇｎｅｄ”にセットし（２２９）、各ＰＵ１０１はタスクキューから実行タスクを取り出し、実行を開始する。そして、スケジューラはＰＵ１０１のタスク処理終了通知を待ち（２３０）、タスク終了を検出した場合、処理２２０からを繰り返す。
【００６１】
＜タスクマネージャの動作フロー＞
図８にはタスクマネージャの動作フローが例示される。各ＰＵではタスクキューのエントリに従ってタスク処理を行うためのタスクマネージャが実行される。タスクマネージャは、以下の手順で動作する。まず、図９に示すようなタスクキューからエントリをチェックし、タスクキューに割り当て済みタスク、つまりステータスが“Ａｓｓｉｇｎｅｄ”なタスクがあるかをチェックする（２４０）。タスクキューはＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）であり、割り当てられた順でタスクが取り出され（２４１）、エントリ内の電力制御モードを読み、制御レジスタＣＲに値をセット、またはコントロールプロセッサＣＴＬＰに電力制御モードの通知を行う（２４２）。次に、タスク実行を開始し、エントリのステータスを実行中であることを示す“Ｒｕｎｎｉｎｇ”に変更する（２４３）。当該タスクの終了を待ち（２４４）、終了が検出された場合、当該タスクのキューエントリを削除する（２４５）。そして、再度割り当て済みタスクの検出を実行する（２４０）。なお、各タスクの末尾にはスケジューラへ処理を移行する、終了処理コードがコンパイル時に埋め込まれている。
【００６２】
なお、タスク実行中でのタスク切り替えは想定せず、タスクマネージャはノンプリエンティブなタスクスケジューリングを行う。なお、ＯＳ側でプリエンティブなタスク切り替えを行った際は、本タスクマネージャで実行されるタスクが一時中断し、ＯＳ側からの指示で再開することとなる。
【００６３】
タスクを実行すべきＰＵ毎のタスクキューは実行すべきタスクＩＤとそのタスクを実行するときの電力及び周波数を制御のための制御データを保有するから、ＰＵは自分のタスクキューに設定されているタスクをその制御データを用いて実行すれば、既にスケジューラによってスケジューリングされた通りの依存関係を満足して複数のタスクが並列的に処理される。
【００６４】
＜スケジューラの構成＞
スケジューラの構成を説明する。スケジューラの実行形態は様々な構成をとり得る。図１０〜図１３に実行形態の一例を示す。図１０では、スケジューラ３００は一つのＰＵ（ＰＵ＿０）１０１のＯＳ上で動作し、またタスク実行を行うタスクマネージャ３０１は、各ＰＵのＯＳ上で動作する。ＰＵ（ＰＵ＿０〜ＰＵ＿３）１０１毎のタスクキューＴＱ＿０〜ＴＱ＿３とスケジューリングテーブルＳＣＴＢＬはＣＳＭ１０４に配置される。
【００６５】
また、図１１に示す構成では、スケジューラ３００をコントロールプロセッサ１０３で実行し、タスクマネージャ３０１を各ＰＵ（ＰＵ＿０〜ＰＵ＿３）１０１上で走るＯＳ上で実行する。図１２に示す構成では、ＰＵ＿０においてそのＯＳ上でスケジューラ３００、タスクマネージャ３０１が実行されるが、他のＰＵ＿１〜ＰＵ＿３はＯＳ無しでタスクマネージャ３００の管理の下で、タスクが実行される構成である。またタスクキューの置き方も、様々な位置が考えられる。図１３に示す構成では、タスクキューＴＱ＿０〜ＴＱ＿３を各ＰＵ１０１のローカルメモリに配置する。またスケジューリングに利用するスケジューリングテーブルＳＣＴＢＬをＰＵ＿０のローカルメモリに配置する。この結果、高速なローカルメモリ上のスケジューラ３００からのスケジューリングテーブルＳＣＴＢＬ、タスクマネージャ３０１からのタスクキューＴＱへのアクセスが可能となり、またＢＵＳ１０５経由の通信負荷を減少させることができる。なお、他にもスケジューリングテーブルＳＣＴＢＬと各ＰＵのタスクキューＴＱをスケジューラ３００を実行するＰＵ０のローカルメモリ上にすべて配置してしまう、オンチップの共有メモリが存在する場合は、当該共有メモリに配置してしまう、といった構成も考えられる。
【００６６】
＜マクロタスクの生成＞
続いて、コンパイラによるプログラムの自動タスク分割と並列性解析、並びにタスクテーブル生成の手順を説明する。Ｃやフォートラン（Ｆｏｒｔｒａｎ）等の高級言語で記述された逐次構造の入力プログラム例を図１４に示す。プログラムはまず、当該プログラム構造を解析することで、繰り返しブロック（ＲＢ：Ｒｅｐｅｔｉｔｉｏｎ  Ｂｌｏｃｋ）、サブルーチン（ＳＢ：Ｓｕｂ  Ｒｏｕｔｉｎｅ）、擬似代入文ブロック（ＢＰＡ：Ｂｌｏｃｋ  ｏｆ  Ｐｓｅｕｄｏ  Ａｓｓｉｇｎｍｅｎｔ  ｓｔａｔｅｍｅｎｔｓ）の３種類の粒度が大きなタスク（以下、マクロタスクＭＴと呼ぶ）に分割、生成する。ＲＢはループブロックで各階層での最も外側のループであり、ＢＰＡはスケジューリングオーバーヘッドあるいは並列性を考慮し、代入文からなる複数の基本ブロックを融合あるいは分割したブロックである。
【００６７】
＜データ依存・制御フロー解析＞
続いて、分割生成された当該マクロタスク間の制御フロー及びデータ依存性を解析し、マクロタスクＭＴの実行順序関係を抽出する。入力プログラムは逐次的に記述されているため、通常のコンパイラによる実行コードは、当該プログラムの構造と同様に逐次的な順序で実行されるが、マクロタスクＭＴ間で見ると必ずしも記述された順序で実行する必要がないことが多い。つまり、マクロタスクＭＴ間において制御またはデータ参照の依存性がない場合、特にマルチプロセッサシステムにおいては、複数のＰＵ１０１に複数のマクロタスクＭＴを配置して同時にまたは順序を変更して、全体の実行時間が短くなるようスケジューリングすることが重要となる。このようなスケジューリングを行うためには、マクロタスクＭＴ間の並列性を解析する必要がある。そこでこれに向けた準備として、データ依存・制御フロー解析処理により、マクロタスクＭＴ間の実行順序関係を抽出する。
【００６８】
＜ループレベル並列性解析＞
続いてマクロタスクＭＴ内の中粒度レベルの並列性解析として、ループレベル並列化を行う。ループレベル並列化では、ループの繰り返し（イタレーション）単位間のデータ依存性を解析して、各イタレーションが独立に処理できるかを判断し、可能な場合は各イタレーションを複数のＰＵ１０１に割り当てて並列処理を行う。また、単一のループを複数のループに分割し並列性を高めたり、データのコピーや配列変数の拡張によりループ間のデータ依存性を削除することで並列したり、また複数のループを単一のループに融合することでループ制御に必要なオーバーヘッドを軽減したり、といった様々な手法によりループの並列化を実現する。
【００６９】
＜処理コスト解析＞
次に生成されたマクロタスクＭＴを各ＰＵ１０１で実行した際に必要となる処理サイクルを、予め付加されたディレクティブ情報より求める。なお、ＣＰＵの処理サイクルに関しては、通常並列化コンパイラ内のＣＰＵ命令コストテーブルを参照することによってもとめる。ＣＰＵ処理コストの見積もり方法としては、例えばＣＰＵなどに関しては乗算や加算など命令レベルで必要とするサイクル数をテーブルに保持しておき、当該テーブルを参照することでマクロタスクＭＴを当該ＰＵ１０１で実行する際の逐次処理サイクル数を見積もることができる。
【００７０】
なお、コンパイル時にコストを決定できない要素が存在する場合、例えばマクロタスクＭＴが分岐を含む場合は、分岐確率を５０％としてコスト算出を行う。また例えばループや配列のサイズが定まらない場合は、ループを固定回数とする、配列宣言時の最大サイズとする、等の方法を適用する。
【００７１】
＜マクロタスク間並列性解析＝最早実行条件解析＞
コンパイラはマクロタスクＭＴの処理コストが決定した後、データ依存・制御フロー解析処理で抽出したマクロタスクＭＴ間の制御フローとデータ依存性を同時に解析結果から、マクロタスクＭＴ間の並列性、つまり各マクロタスクＭＴの実行を最も早く実行してよい条件（最早実行条件）を決定する。この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ（ＭＴＧ）である。図３の入力プログラムを解析し生成されたＭＴＧを、図１５に示す。本グラフ中の各ノードはマクロタスクＭＴを示し、ノード間の実線はマクロタスク間のデータ依存関係を表す。例えば、マクロタスクＭＴ１．１からマクロタスクＭＴ１．２（５０２）及びマクロタスクＭＴ１．３（５０３）に対して実線が伸びているが、これはマクロタスクＭＴ１．２及びマクロタスクＭＴ１。３がマクロタスクＭＴ１．１を実行した結果生じたデータを入力データとして用い処理を実行しているという依存関係があることを示している。そのため、実行順序として、マクロタスクＭＴ１．２及びマクロタスクＭＴ１．３はマクロタスクＭＴ１．１タスク終了後、実行できることを示す。
【００７２】
また、入力プログラムよりマクロタスクＭＴ１．２（５０２）は複数のループやサブルーチンで構成されたブロックなので、コンパイラは当該マクロタスクＭＴをさらに複数のマクロタスクＭＴに階層的に分割する。よって、当該ＭＴＧではマクロタスクＭＴ１．２中に、別階層でＭＴＧを構成する。ＭＴＧ１．３（５０３）も同様である。
【００７３】
なお、マクロタスク間並列性解析結果は、スケジューリングテーブルとして外部記憶装置に保持され、スケジューラが使用する。
【００７４】
以上説明したＦＤ−ＳＯＩ・ＭＯＳトランジスタから構成され複数のプロセッサユニットを集積するマルチプロセッサシステムにおいて、プロセッサユニットを動作させるタスクの実行効率の向上、タスクの実行状態に合わせたきめ細かな電力制御が実現される。すなわち、マルチプロセッサシステムの性能を最大限活用しつつ、低電力にて効率よくタスクを処理することが可能になる。その結果、高い演算性能を持ちかつ低電力に処理することが強く望まれる、カーナビゲーションや携帯電話、情報家電向けの半導体集積回路若しくは半導体装置に本発明を適用することができ、高品質の動画像や音声処理、また画像認識や音声認識といった機能を実現することが可能となる。また、自動車における情報系、制御系システム向けの半導体集積回路若しくは半導体装置に対しても適用することができ、自動運転や安全運転システム等を実現することが可能となる。さらには、将来非常に高い演算性能を有しつつ低電力化が必須となる、スーパーコンピュータへ本発明を適用することも可能である。
【００７５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７６】
例えば、本発明に係るマルチプロセッサシステムは１チップに限定されず、マルチチップで構成されてもよい。また、マルチプロセッサシステムはＰＤ−ＳＯＩ・ＭＯＳトランジスタやバルク構成のＭＯＳトランジスタを含んでいてもよい。また基板バイアス制御の対象は個々のプロセッサユニット内の少なくとも演算処理速度に関係する回路部分であればよい。キューイングテーブル、タスクスケジューリングテーブルを格納するメモリは複数のプロセッサユニットの共有メモリであっても、また、夫々のプロセッサユニットのローカルメモリであってもよい。
【図面の簡単な説明】
【００７７】
【図１】本発明に係るマルチプロセッサシステムの一例を示すブロック図である。
【図２】本発明に係るマルチプロセッサシステムの別の例を示すブロック図である。
【図３】プロセッサユニットの内部回路の一部と共に基板バイアス制御回路を例示する回路図である。
【図４】ＳＯＩ・ＭＯＳトランジスタの縦断面構造と基板バイアス特性を示す説明図である。
【図５】タスク依存テーブル（スケジューリングテーブル）を例示する説明図である。
【図６】電力制御手法を示す説明図である。
【図７】スケジューラの動作フローチャートである。
【図８】タスクマネージャの動作フローチャートである。
【図９】タスクマネージャが用いるタスクキューの構成を示す説明図である。
【図１０】スケジューラの実行の形態の一例を示す説明図である。
【図１１】スケジューラの実行の形態の別の例を示す説明図である。
【図１２】スケジューラの実行の形態の更に別の例を示す説明図である。
【図１３】スケジューラの実行の形態のその他の例を示す説明図である。
【図１４】コンパイラに入力するプログラム例を示す説明図である。
【図１５】コンパイラが生成したタスク間依存関係を示す説明図である。
【符号の説明】
【００７８】
１００，１００＿Ａ：マルチプロセッサシステム
１０１：プロセッサユニット
１０２：基板電圧制御回路
１０３：制御プロセッサ
１０４：共有メモリ
１０５：インターコネクションネットワーク
１０６：接地電源
１０７：電源
１０８：ｎＭＯＳ基板電源
１０９：ｐＭＯＳ基板電源
１１０：基板電圧制御線
１１１：制御レジスタ
１２０〜１２３、１２５〜１２８：タスク
２３４：スケジューリングテーブル
２３５：電力制御情報
２３６：手順
３０：スケジューラ
３０１：タスクマネージャ
【図１】
2009069921.tif 000003
【図２】
2009069921.tif 000004
【図３】
2009069921.tif 000005
【図４】
2009069921.tif 000006
【図５】
2009069921.tif 000007
【図６】
2009069921.tif 000008
【図７】
2009069921.tif 000009
【図８】
2009069921.tif 000010
【図９】
2009069921.tif 000011
【図１０】
2009069921.tif 000012
【図１１】
2009069921.tif 000013
【図１２】
2009069921.tif 000014
【図１３】
2009069921.tif 000015
【図１４】
2009069921.tif 000016
【図１５】
2009069921.tif 000017