JP2009146243A - 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム - Google Patents
基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム Download PDFInfo
- Publication number
- JP2009146243A JP2009146243A JP2007324170A JP2007324170A JP2009146243A JP 2009146243 A JP2009146243 A JP 2009146243A JP 2007324170 A JP2007324170 A JP 2007324170A JP 2007324170 A JP2007324170 A JP 2007324170A JP 2009146243 A JP2009146243 A JP 2009146243A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- task
- gate
- execution
- processor units
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000000758 substrate Substances 0.000 title claims description 82
- 238000005457 optimization Methods 0.000 title description 3
- 239000004065 semiconductor Substances 0.000 claims description 52
- 230000015572 biosynthetic process Effects 0.000 claims description 15
- 238000003860 storage Methods 0.000 claims description 9
- 238000002955 isolation Methods 0.000 claims description 7
- 230000002441 reversible effect Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 62
- 238000000034 method Methods 0.000 abstract description 44
- 230000008569 process Effects 0.000 abstract description 27
- 230000002708 enhancing effect Effects 0.000 abstract 1
- 239000010408 film Substances 0.000 description 14
- 230000001419 dependent effect Effects 0.000 description 10
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 7
- 229910052710 silicon Inorganic materials 0.000 description 7
- 239000010703 silicon Substances 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000007704 transition Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000005206 flow analysis Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 235000019580 granularity Nutrition 0.000 description 3
- 239000010409 thin film Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000007728 cost analysis Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000011982 device technology Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000006641 stabilisation Effects 0.000 description 2
- 238000011105 stabilization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009413 insulation Methods 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 229910021332 silicide Inorganic materials 0.000 description 1
- FVBUAEGBCNSCDD-UHFFFAOYSA-N silicide(4-) Chemical compound [Si-4] FVBUAEGBCNSCDD-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】マルチプロセッサシステムにおいて、複数の並列化可能なタスクをプロセッサユニット(PU)に効率的に割り当て、また、性能・電力面でのシステム全体の実行効率を上げるために、全体の実行時間に影響を与えるタスクを高速に実行し、電力効率の観点から、全体の実行時間に影響を与えないタスクは低速に実行する。
【解決手段】入力プログラムを複数のタスク(MT0〜MT3)に分割し、複数のPU(PU0,PU1)に割り当てるコンパイラにおいて、全体実行時間を小さくするようタスク割当を行うプロセスと、全体性能に対し影響を与えるタスクを実行するプロセッサの周波数を一時的に向上させる電力制御プロセスと、全体性能に対し影響を与えないタスクを実行するプロセッサの周波数を一時的に低減させる電力制御プロセスを含む。
【効果】マルチプロセッサシステムの性能を最大限活用しつつ、低電力にて効率よく処理することが可能となる。
【選択図】図10
【解決手段】入力プログラムを複数のタスク(MT0〜MT3)に分割し、複数のPU(PU0,PU1)に割り当てるコンパイラにおいて、全体実行時間を小さくするようタスク割当を行うプロセスと、全体性能に対し影響を与えるタスクを実行するプロセッサの周波数を一時的に向上させる電力制御プロセスと、全体性能に対し影響を与えないタスクを実行するプロセッサの周波数を一時的に低減させる電力制御プロセスを含む。
【効果】マルチプロセッサシステムの性能を最大限活用しつつ、低電力にて効率よく処理することが可能となる。
【選択図】図10
Description
本発明は、コンパイラ及びプロセッサシステムに関するものであり、特に、FD−SOIにより製造されるマルチプロセッサシステムにおける、入力プログラムを当該プロセッサシステム上で実行可能なオブジェクトコードに変換する際に、当該マルチプロセッサシステムが持つ複数プロセッサユニットへタスクをスケジューリングすると同時に、基板バイアス制御を組み合わせたプロセッサ周波数の最適調整による電力制御を適用することにより、電力を抑えつつ全体の実行時間を高速化する、電力性能最適化コンパイラ及び、その電力性能最適化コンパイラにより生成された実行コードを実行するマルチプロセッサシステムに関する。
半導体製造技術の進歩による素子の微細化により、膨大な数のトランジスタを集積することが可能となっている。それと同時にプロセッサの高周波数化も進むが、動作時電力の増加、またリーク電流に起因する待機時電力の増加により、従来のプロセッサが歩んできた動作周波数の向上と論理方式の改善により達成してきた性能向上に限界が見え始めている。一方で、自動車のナビゲーションシステム、携帯電話、デジタルテレビなど、画像、音声、データベース情報など多様なデータを同時に扱うデジタル民生機器が登場し、特性の異なる膨大なデータを短時間にかつ低電力に処理することが強く求められている。そこで現在、性能改善と低電力化を実現する手段として、従来の単一チップで提供されたプロセッサ(CPU)を複数個単一チップ上に集積し、処理を並列で行うことで、動作周波数を向上させなくとも、高い演算性能を得ることが可能な、マルチプロセッサシステムが有望となっている。将来、微細化がさらに進むことで、CPUをオンチップで100個〜1000個積載することも可能となると予測される。
また、特に組み込み機器向けシステムにおいては、無線や画像、音声など定型的なデジタル信号処理を扱うことも多く、性能改善と低電力化を両立する手段として、同一の汎用プロセッサ、つまり同一の命令セットで構成及び演算性能が同一な汎用プロセッサを複数個集積したホモジニアスなマルチプロセッサシステム以外に、複数個のCPUに加えある特定の処理を非常に効率良く(高速にかつ低電力に)処理可能な専用プロセッサ、アクセラレータ、といった命令セットが異種である、様々な種類のPUを複数個単一チップで搭載し、特に一定のアプリケーションを対象とし、高い演算効率を目指したヘテロジニアスマルチプロセッサも現在提案されている。
以上のような複数個の演算ユニット(PU)を搭載するマルチプロセッサシステムでは、その性能を引き出すために複数個のPUを同時に効率よく動作させるよう、プログラムを作成する必要が生じる。通常の入力プログラムは処理が時系列で逐次的に記述されているため、複数のPUを搭載するにも関わらず、当該複数PUに比例して期待される演算性能を得ることができない。この問題点を解決するための一つの方法として、プログラム開発者が自らプログラムの並列性を考慮し、当該プログラムを実行させるマルチプロセッサシステムの構成に基づいて、当該プログラムを複数のPUで実行させるためのプログラム分割を行ったり、並列化ライブラリを利用したAPI(Application Programming Interface)を付加したりする必要がある。しかしながら、本手法はPUが数個のシステムにおいては有効であるが、将来の数十〜数千といった数のPUが積載されたシステムにおいては、また特にPUが異種で構成される場合は、開発時間、実効性能の点で実用的ではない。特許文献1では、これを解決する一手法として、並列化コンパイラによるプログラムのタスク分割とタスク並列解析、コンパイル時におけるPUへの並列タスクケジューリング、並びに並列スケジューリング結果に基づく静的なPUの電力制御手法を開示している。
また、以上のプロセッサを実現するためのデバイス技術として、これまでCMOS(Complementary Metal−Oxide−Semiconductor)技術が主流であり、上記で述べた通り、トランジスタのスケーリングに併せてトランジスタ数の増加と、スイッチング速度の高速化による周波数向上で、プロセッサの性能向上が実現されてきた。しかしながら、上述の理由により、これ以上の微細化は、リーク電流等の様々な問題により、従来手法での性能向上が見出せなくなっている。そこで、リーク電力を抑えつつ高速化を実現するデバイス技術として、絶縁基板上にシリコン結晶を形成し、当該シリコン上にトランジスタを形成する、SOI(Silicon on Insulator)が有望となっている。SOI構造を取ることにより、基板容量を抑えられスイッチング速度が向上でき、また従来のシリコン基板では難しかった基板電位の操作(基板バイアス制御)が容易に実現でき、高速化と低電力化を同時に実現される。SOIには、絶縁膜上のシリコン層の膜厚が薄い完全空乏型トランジスタ(FD−SOI)と、シリコン層の膜厚が厚い部分空乏型トランジスタ(PD−SOI)とに分類される。
特に従来のSOI構造をとらない、バルクCMOSでは、基板容量が大きく基板電圧の印加には駆動能力の大きな電圧生成回路が必要、基板電位の制御時間が大きい、トランジスタ素子が分離されていないためラッチアップ現象による過電流が流れてしまう、基板ノイズ発生の要因となる、といった問題が生じていたため、基板電位を正の方向に印加する、短期間で電位を切り替える、といったことは現実的ではなかった。SOI技術を利用することにより、さまざまな粒度における高速な基板バイアス制御が実現される。
特許文献2では、薄膜埋め込み酸化膜層を持つFD−SOIを使用し、薄膜埋め込み酸化膜層の下層半導体領域をバックゲートとし、論理回路ブロックにおいてブロック中の負荷の軽い論理回路にはバックゲートの電圧をブロック活性化に合わせてブロック外から制御することで、回路の動作特性に応じて使い分け、幅広い温度範囲にて高速かつ低電力なLSIを実現する手法を開示している。
しかしながら、特許文献1では、CMOS技術により形成されたLSIをその対象としており、特許文献2に記載されたようなFD−SOI技術については考慮されていない。即ち、前記マルチプロセッサシステムにおいて複数のタスクを実行する際に、FD−SOIの特徴を利用したバックゲート電圧制御をどのように行うかについては触れられていない。
そこで本発明の目的は、FD−SOIで製造されるマルチプロセッサシステムにおいて、ユーザが作成した入力プログラムを複数のタスクに分割し、前記PUに割り当てるスケジューラを含むコンパイラにおいて、複数個のPUにタスク割当を行い、プログラムの実行時間を小さくするようタスク実行順を決定するプロセスと、スケジューリング時に実行タスク間依存により性能に対し影響を与えるタスクを実行する際に実行するプロセッサの周波数を一時的に向上させる電力制御プロセスと、スケジューリング時に実行タスク間依存により性能に対し影響を与えないタスクを実行する際に実行するプロセッサの周波数を一時的に低減させる電力制御プロセス、を行うコンパイラ及びそのコンパイラを用いて生成された実行コードを実行するプロセッサシステムを提供することである。
上述の課題を解決するために本願において開示される発明のうち代表的なものの概要を簡単に説明すれば以下の通りである。
同種又は異種の複数のプロセッサユニットを具備し、前記複数のプロセッサユニット内に形成されるMOSトランジスタの半導体基板を制御可能なマルチプロセッサシステムにより実行される実行コードを入力プログラムから生成するコンパイラにおいて、前記入力プログラムを分割することにより複数のマクロタスクを生成する第1ステップと、前記複数のマクロタスク毎に前記複数のプロセッサユニットのうちいずれのプロセッサユニットに割り当てるかを決定する第2ステップと、前記複数のプロセッサユニット毎に、前記第2ステップにおいて割り当てられたマクロタスクの実行時間の余裕度を算出する第3ステップと、前記第3ステップにおいて算出された余裕度に基づいて前記複数のプロセッサユニットの夫々の半導体基板に供給する電圧及び前記複数のプロセッサユニットに供給する動作クロック周波数を変更するためのコードを付加する第4ステップとを具備する。
また、プロセッサシステムの観点から見ると、同種又は異種の複数のプロセッサユニットと、不揮発性記憶媒体に記憶されたスケジューラプログラムに従って前記複数のプロセッサユニットの制御を行うコントロールプロセッサとを有するプロセッサシステムにおいて、前記複数のプロセッサユニットの夫々は、半導体基板上に、埋め込み酸化膜を介して形成される第1半導体層と、前記第1半導体層に形成され、前記第1半導体層の厚さを有するソース領域およびドレイン領域と、前記ソース領域およびドレイン領域に挟まれるように形成されたチャネル領域と、該チャネル領域の第1主面側に形成された第1ゲートと、前記埋め込み酸化膜の下面に接して形成された導電層からなる第2ゲートと、前記第1半導体層の周囲を囲むように前記半導体基板に形成された絶縁分離層とを有する完全空乏型SOI・MOSトランジスタが形成される第1及び第2回路形成領域とを有し、前記第1回路形成領域は、前記第1ゲートが前記第2ゲートに電気的に接続された第1のMOSトランジスタで構成された第1回路が配置され、前記第2回路形成領域は、前記第1ゲートおよび前記第2ゲートのそれぞれが独立に制御される第2のMOSトランジスタで構成された第2回路が配置され、前記半導体基板に印加される電圧は、前記第1MOSトランジスタにより供給され、前記複数のプロセッサユニットは、前記不揮発性記憶媒体に記憶された実行コードを実行し、前記実行コードは、複数のマクロタスクに分割され、前記スケジューラプログラムは、前記複数のマクロタスクの夫々が前記複数のプロセッサユニットのうち何れのプロセッサユニットにより実行されるか示す第1情報と、前記複数のマクロタスク毎に前記複数のプロセッサユニットの夫々の前記半導体基板に印加される電圧に関する第2情報が含まれ、前記コントロールプロセッサは、前記第2情報に基づいて前記第1MOSトランジスタが供給する電圧を前記第1回路に指示する。
また、別のプロセッサシステムの構成においては、同種又は異種の複数のプロセッサユニットを有するプロセッサシステムにおいて、前記複数のプロセッサユニットの夫々は、半導体基板上に、埋め込み酸化膜を介して形成される第1半導体層と、前記第1半導体層に形成され、前記第1半導体層の厚さを有するソース領域およびドレイン領域と、前記ソース領域およびドレイン領域に挟まれるように形成されたチャネル領域と、該チャネル領域の第1主面側に形成された第1ゲートと、前記埋め込み酸化膜の下面に接して形成された導電層からなる第2ゲートと、前記第1半導体層の周囲を囲むように前記半導体基板に形成された絶縁分離層とを有する完全空乏型SOI・MOSトランジスタが形成される第1及び第2回路形成領域と、制御レジスタを有し、前記第1回路形成領域は、前記第1ゲートが前記第2ゲートに電気的に接続された第1のMOSトランジスタで構成された第1回路が配置され、前記第2回路形成領域は、前記第1ゲートおよび前記第2ゲートのそれぞれが独立に制御される第2のMOSトランジスタで構成された第2回路が配置され、前記半導体基板に印加される電圧は、前記第1MOSトランジスタにより供給され、前記複数のプロセッサユニットは、前記不揮発性記憶媒体に記憶された実行コードを実行し、前記実行コードは、複数のマクロタスクに分割されると共に夫々のマクロタスクの前後に付加されたタスク間同期プログラム及び電力モードプログラムを含み、前記複数のプロセッサユニットの夫々は、前記複数のマクロタスクのうち割り当てられた一つのマクロタスクを実行し、前記割り当てられた一つのマクロタスクの実行が終了した際に、前記タスク間同期プログラムに従って実行すべき次のマクロタスクを判断すると共に前記半導体基板に供給すべき電圧を前記制御レジスタに登録する。
本発明により、FD−SOIで構成され複数のPUを集積するマルチプロセッサシステムにおいて、当該PUを効率よく動作させるタスク分割されたプログラムの配置による実行効率の向上、タスクの実行状態に合わせたきめ細かな電力制御が実現される。
以下、本発明の実施例を用いて、詳細に説明する。
<実施例の全体構成>
本発明の実施例として、まず本発明で提供するスケジューラを実行するマルチプロセッサシステム(CMP)の構成を説明する。図1に、CMPの実施構成の一例を示す。CMPでは、複数のプロセッサユニット(PU)101、共有メモリ(CSM)104で構成される。各PUは、PU間並びにCSMを相互に接続する、インタコネクション・ネットワーク(BUS)105に接続される。また、BUSにはさらに、タスクスケジューリング、リソース管理制御を行うコントロールプロセッサ(CTLP)103が接続される。なお、各PUは、CSMアクセス時間隠蔽のためのキャッシュメモリやローカルメモリを搭載する。また、各PUには、当該PUのプロセッサコア、メモリ等の各機能部位に対し、基板バイアス電源を供給する、電圧・基板バイアス生成回路(BGCTL)102が接続される。BGCTLは、CTLPにより制御(110)され、予め定められた基板バイアス電圧が機能部位別にPU内のトランジスタ基板に印加される(108,109)。また、各PUに対する基板バイアス電圧の状態に応じた周波数のクロックを共有するクロック生成回路も、各PUは内蔵する。本図では示していないが、周波数に応じ電源電圧を切り替えたり、不使用時に電源遮断を行ったり、といった電源制御を行う電力制御回路を各PUが内蔵する構成もある。なお、本図ではPUはすべて同一、例えば汎用プロセッサを複数個接続したホモジニアスCMP構成となっているが、例えば一部のPUが信号処理プロセッサ(DSP)や動的再構成可能プロセッサ(DRP)といったヘテロジニアスCMP構成となることもできる。つまり、PUの種類と数は、本実施例に示した限りではなく、様々な構成を取り得る。図2は、コントローラプロセッサ(CTLP)を持たず、各PUが持つ制御レジスタ(CR)111でBGCTLを制御する構成である。CRはグローバルなメモリ空間にアドレスマッピングし、タスク割り当てと電源管理を行うスケジューラプログラムを実行するPUが、対象となるPUのCRをアクセスして設定することにより、当該CRの値に従ってBGCTLは対象となるPU内の機能ブロックに対し基板バイアス電圧を印加する。
<実施例の全体構成>
本発明の実施例として、まず本発明で提供するスケジューラを実行するマルチプロセッサシステム(CMP)の構成を説明する。図1に、CMPの実施構成の一例を示す。CMPでは、複数のプロセッサユニット(PU)101、共有メモリ(CSM)104で構成される。各PUは、PU間並びにCSMを相互に接続する、インタコネクション・ネットワーク(BUS)105に接続される。また、BUSにはさらに、タスクスケジューリング、リソース管理制御を行うコントロールプロセッサ(CTLP)103が接続される。なお、各PUは、CSMアクセス時間隠蔽のためのキャッシュメモリやローカルメモリを搭載する。また、各PUには、当該PUのプロセッサコア、メモリ等の各機能部位に対し、基板バイアス電源を供給する、電圧・基板バイアス生成回路(BGCTL)102が接続される。BGCTLは、CTLPにより制御(110)され、予め定められた基板バイアス電圧が機能部位別にPU内のトランジスタ基板に印加される(108,109)。また、各PUに対する基板バイアス電圧の状態に応じた周波数のクロックを共有するクロック生成回路も、各PUは内蔵する。本図では示していないが、周波数に応じ電源電圧を切り替えたり、不使用時に電源遮断を行ったり、といった電源制御を行う電力制御回路を各PUが内蔵する構成もある。なお、本図ではPUはすべて同一、例えば汎用プロセッサを複数個接続したホモジニアスCMP構成となっているが、例えば一部のPUが信号処理プロセッサ(DSP)や動的再構成可能プロセッサ(DRP)といったヘテロジニアスCMP構成となることもできる。つまり、PUの種類と数は、本実施例に示した限りではなく、様々な構成を取り得る。図2は、コントローラプロセッサ(CTLP)を持たず、各PUが持つ制御レジスタ(CR)111でBGCTLを制御する構成である。CRはグローバルなメモリ空間にアドレスマッピングし、タスク割り当てと電源管理を行うスケジューラプログラムを実行するPUが、対象となるPUのCRをアクセスして設定することにより、当該CRの値に従ってBGCTLは対象となるPU内の機能ブロックに対し基板バイアス電圧を印加する。
図3には同図にはプロセッサユニット101の内部回路の一部と共に基板バイアス制御回路102が例示される。DCLは、基板バイアス制御の対象となる回路として例示された論理回路ブロックである。PFCは、負荷の大きな出力端子BOを駆動する回路として例示されたドライバ回路である。DCLとPFCは、図1及び図2中のPUに当たる。図3に示されるMOSトランジスタは、特に制限されないが、全てFD−SOI・MOSトランジスタとされる。DCLは、ここでは例としてインバータ回路2段としており、このブロックへの入力がBIであり、出力がCOである。電源電圧はVCC、接地電圧はVCSである。DCL内のpチャンネル型FD−SOI・MOSトランジスタに対する基板バイアス電圧はBGPであり、同DCL内のnチャンネル型FD−SOI・MOSトランジスタに対する基板バイアス電圧はBGNである。BGCLT102は、入力信号CLに従って電位の基板バイアス電圧BGP,BGNを出力する。BGCLT、PFCを構成するFD−SOI・MOSトランジスタの基板バイアス電圧は、夫々のゲートに接続されている。本例では、BGSTL、DCL及びPFCの電源電圧VCC、接地電圧VCSをすべてで共通としているが、それぞれの回路毎に電圧値が異なるよう独立に電源配線を準備し、接続する構成としてもよい。なおVCSは基板バイアス制御のモードにより負電圧も取りえる。また,BGCTLを用いず、チップ外に電源回路を別途設けて変化させても良い。
本実施例によれば、DCLの中のnMOS及びpMOSのしきい値電圧の状態を変えることができるため、DCLの動作状態に応じて、DCLの中のしきい値電圧を選択することができる。これによって、高速化が必要な時には、しきい値電圧を絶対値で低く設定し、低速で良い場合や待機状態ではしきい値電圧を高く設定しリーク電流を低く抑えることができる。このようにして高速化と低電力化を達成することができる。入力信号CLは、図1のCTLP103から出力される基板バイアス制御信号110の対応する1ビットの信号、あるいは図2のCR111の設定値に従って出力される基板バイアス制御信号110とされる。タスクの処理に応じて信号CLのレベルが制御されることで、基板バイアス電圧を変化させることができる。その結果、制御対象であるDCLのトランジスタのしきい値電圧を、DCLが低速動作若しくは標準速度で動作するとき基板電圧を負の方向に印加することにより高くすることでリーク電流を減少させ、また高速動作するときは基板バイアス電圧を正の方向に印加することにより低くすることで、大きな駆動電流によって高速スイッチング動作が可能になる。尚、ゲート電極が自らの背面ゲート電極に接続する形態はFD−SIO・MOSトランジスタ特有の接続形態であり、オフ状態において閾値電圧を大きくして電流リークを抑制し、オン状態において閾値電圧を小さくスイッチング動作を高速化する、自律的基板バイアス制御形態とされる。これは、FD−SOI・MOSトランジスタが半導体基板へのリークが抑制されたMOSデバイス構造を持っているためである。
<基板バイアス電圧変化の効果>
基板バイアス電圧印加に対する、トランジスタの駆動電流特性を見ることで、その効果を説明する。図4の(A)にはnチャンネル型のFD−SOI・MOSトランジスタの縦断面構造が例示される。このFD−SOI・MOSトランジスタは、端子SBを持つp型基板であるp−sub上に、トレンチアイソレーション(溝堀型絶縁)領域STI、および埋め込み酸化膜UTBにより隣接トランジスタ、基板から電気的に絶縁された領域に形成される。UTBの厚さは例えば10〜20nmである。S、G、Dはソース端子、ゲート端子、ドレイン端子であり、それぞれシリサイドSCを介してn+領域(ソース)、p領域(チャネル形成領域)、n+領域(ドレイン)に接続される。個の厚みは例えば20nm程度である。ゲートのSCとp領域の間には酸化膜OXがあり、いわゆるMOS構造となっている。UTBの下には端子BGと接続されたp領域、および端子TWを持ちp領域と基板とを電気的に分離するためのn領域がある。本構成によれば、BGはUTBを絶縁膜としてp領域を介した形で接続されており、UTBを第2のゲート酸化膜と見立てると、MOS構造の背面に第2のゲートが存在する構造をとることが分かる。
基板バイアス電圧印加に対する、トランジスタの駆動電流特性を見ることで、その効果を説明する。図4の(A)にはnチャンネル型のFD−SOI・MOSトランジスタの縦断面構造が例示される。このFD−SOI・MOSトランジスタは、端子SBを持つp型基板であるp−sub上に、トレンチアイソレーション(溝堀型絶縁)領域STI、および埋め込み酸化膜UTBにより隣接トランジスタ、基板から電気的に絶縁された領域に形成される。UTBの厚さは例えば10〜20nmである。S、G、Dはソース端子、ゲート端子、ドレイン端子であり、それぞれシリサイドSCを介してn+領域(ソース)、p領域(チャネル形成領域)、n+領域(ドレイン)に接続される。個の厚みは例えば20nm程度である。ゲートのSCとp領域の間には酸化膜OXがあり、いわゆるMOS構造となっている。UTBの下には端子BGと接続されたp領域、および端子TWを持ちp領域と基板とを電気的に分離するためのn領域がある。本構成によれば、BGはUTBを絶縁膜としてp領域を介した形で接続されており、UTBを第2のゲート酸化膜と見立てると、MOS構造の背面に第2のゲートが存在する構造をとることが分かる。
上記SOI構造のMOSトランジスタはウェル分離を行なうバルク構造に比べて、トランジスタ個別の閾値電圧制御が容易である。また、SOI・MOSトランジスタはその埋め込み酸化膜上のチャネル形成領域及びソース・ドレインとなるシリコン層n+、Pの膜厚が薄い完全空乏型、又はその膜厚が厚い不完全空乏型として構成することができる。例えば0.2μmプロセスでは前者の当該膜厚は通常50nm程度以下というように極めて薄い。従って、前者は後者に比べてデバイスプロセスが難しくなるが、不完全空乏型のSOI構造に比べて、ゲート電圧によるチャネル領域内反転層電荷への影響が支配的になり、良好な閾値電圧特性を持ち、後述するスタティック・ノイズ・マージンの設定が更に容易になる。尚、0.2μmプロセスにおいて不完全型の膜厚は100〜200nm程度にある。図4の(B)には(A)の構造に対する回路記号が例示される。
図4の(C)にはnチャンネル型のFD−SOI・MOSトランジスタにおける基板バイアス電圧VBGSを1V、0Vとしたときの、ID−VGS特性を示した図である。この図より、VBGS=1Vと正の方向に基板バイアス印加した場合、VGS>0.5Vでのオン状態において、駆動電流の量が増す。また、VBGS=0Vと負の方向に基板バイアス印加した場合、VGS=0Vでのオフ状態において、オフ電流すなわちリーク電流が低減する。
<並列化コンパイラの処理手順>
続いて、当該マルチプロセッサシステム上で実行される実行コードを生成するためのコンパイラ処理手順を説明する。本発明のコンパイラは、ユーザが作成した入力されたプログラムをその構造的な特徴を利用して自動的に複数タスクに分割し、タスク間の並列性解析、並列実行順の決定、電力制御モードの決定と制御コードの付加、実行コードの生成を行う。これらの処理は、当該コンパイラがインストールされたPC等の開発環境下で行われ、本発明のコンパイラがインストールされた開発環境にユーザが作成したプログラムを入力し、本発明のコンパイラを実行することで行われる。即ち、本発明のコンパイラは、プログラムの一種であり、例えばDVDやCD等の記憶媒体やインターネット等を利用した電子的な伝送により取引される。以下、本発明のコンパイラが行う処理について詳述する。
続いて、当該マルチプロセッサシステム上で実行される実行コードを生成するためのコンパイラ処理手順を説明する。本発明のコンパイラは、ユーザが作成した入力されたプログラムをその構造的な特徴を利用して自動的に複数タスクに分割し、タスク間の並列性解析、並列実行順の決定、電力制御モードの決定と制御コードの付加、実行コードの生成を行う。これらの処理は、当該コンパイラがインストールされたPC等の開発環境下で行われ、本発明のコンパイラがインストールされた開発環境にユーザが作成したプログラムを入力し、本発明のコンパイラを実行することで行われる。即ち、本発明のコンパイラは、プログラムの一種であり、例えばDVDやCD等の記憶媒体やインターネット等を利用した電子的な伝送により取引される。以下、本発明のコンパイラが行う処理について詳述する。
(1)マクロタスクの生成
CやFortran等の高級言語で記述された逐次構造の入力プログラム例を図5に示す。コンパイラはまず、当該プログラム構造を解析することで、擬似代入文ブロック(BPA:Block of Pseudo Assignment statements)1.1、繰り返しブロック(RB:Repetition Block)1.2、サブルーチン(SB:Sub Routine)1.3、の3種類の粒度が大きなタスク(以下、マクロタスクMTと呼ぶ)に分割、生成する。RBは、ループブロックで各階層での最も外側のループであり、BPAは、スケジューリングオーバーヘッドあるいは並列性を考慮し、代入文からなる複数の基本ブロックを融合あるいは分割したブロックである。マクロタスクは、ユーザが明示的に分割、定義しても良いし、後述するようなコンパイラが機械的にサブルーチンやループ等のプログラム構造を利用して分割、定義しても良い。なお、ここで言うマクロタスクは、上記のプログラム構造上での分割単位以外でも、ユーザが入力プログラム中にディレクティブで直接タスク単位を指定することで定義しても良い。なお、タスクという用語は、スレッド、プロセスと呼ばれることもある。
CやFortran等の高級言語で記述された逐次構造の入力プログラム例を図5に示す。コンパイラはまず、当該プログラム構造を解析することで、擬似代入文ブロック(BPA:Block of Pseudo Assignment statements)1.1、繰り返しブロック(RB:Repetition Block)1.2、サブルーチン(SB:Sub Routine)1.3、の3種類の粒度が大きなタスク(以下、マクロタスクMTと呼ぶ)に分割、生成する。RBは、ループブロックで各階層での最も外側のループであり、BPAは、スケジューリングオーバーヘッドあるいは並列性を考慮し、代入文からなる複数の基本ブロックを融合あるいは分割したブロックである。マクロタスクは、ユーザが明示的に分割、定義しても良いし、後述するようなコンパイラが機械的にサブルーチンやループ等のプログラム構造を利用して分割、定義しても良い。なお、ここで言うマクロタスクは、上記のプログラム構造上での分割単位以外でも、ユーザが入力プログラム中にディレクティブで直接タスク単位を指定することで定義しても良い。なお、タスクという用語は、スレッド、プロセスと呼ばれることもある。
(2)データ依存・制御フロー解析
続いて、分割生成された当該マクロタスク間の制御フロー及びデータ依存性を解析し、MTの実行順序関係を抽出する。入力プログラムは逐次的に記述されているため、通常のコンパイラによる実行コードは、当該プログラムの構造と同様に逐次的な順序で実行されるが、MT間で見ると必ずしも記述された順序で実行する必要がないことが多い。つまり、MT間において制御またはデータ参照の依存性がない場合、特にマルチプロセッサシステムにおいては、複数のPUに複数のMTを配置して同時にまたは順序を変更して、全体の実行時間が短くなるようスケジューリングすることが重要となる。このようなスケジューリングを行うためには、MT間の並列性を解析する必要がある。そこでこれに向けた準備として、データ依存・制御フロー解析処理により、MT間の実行順序関係を抽出する。
続いて、分割生成された当該マクロタスク間の制御フロー及びデータ依存性を解析し、MTの実行順序関係を抽出する。入力プログラムは逐次的に記述されているため、通常のコンパイラによる実行コードは、当該プログラムの構造と同様に逐次的な順序で実行されるが、MT間で見ると必ずしも記述された順序で実行する必要がないことが多い。つまり、MT間において制御またはデータ参照の依存性がない場合、特にマルチプロセッサシステムにおいては、複数のPUに複数のMTを配置して同時にまたは順序を変更して、全体の実行時間が短くなるようスケジューリングすることが重要となる。このようなスケジューリングを行うためには、MT間の並列性を解析する必要がある。そこでこれに向けた準備として、データ依存・制御フロー解析処理により、MT間の実行順序関係を抽出する。
(3)ループレベル並列性解析
続いてマクロタスク内の中粒度レベルの並列性解析として、ループレベル並列化を行う。例えば、図5に示されるマクロタスク1.2には、中粒度レベルのループ1.2.1、1.2.4が含まれており、マクロタスク1.3には、中粒度のループ1.3.2、1.3.4が含まれている。ループレベル並列化では、ループの繰り返し(イタレーション)単位間のデータ依存性を解析して、各イタレーションが独立に処理できるかを判断し、可能な場合は各イタレーションを複数のPUに割り当てて並列処理を行う。また、単一のループを複数のループに分割し並列性を高めたり、データのコピーや配列変数の拡張によりループ間のデータ依存性を削除することで並列したり、また複数のループを単一のループに融合することでループ制御に必要なオーバーヘッドを軽減したり、といった様々な手法によりループの並列化を実現する。
続いてマクロタスク内の中粒度レベルの並列性解析として、ループレベル並列化を行う。例えば、図5に示されるマクロタスク1.2には、中粒度レベルのループ1.2.1、1.2.4が含まれており、マクロタスク1.3には、中粒度のループ1.3.2、1.3.4が含まれている。ループレベル並列化では、ループの繰り返し(イタレーション)単位間のデータ依存性を解析して、各イタレーションが独立に処理できるかを判断し、可能な場合は各イタレーションを複数のPUに割り当てて並列処理を行う。また、単一のループを複数のループに分割し並列性を高めたり、データのコピーや配列変数の拡張によりループ間のデータ依存性を削除することで並列したり、また複数のループを単一のループに融合することでループ制御に必要なオーバーヘッドを軽減したり、といった様々な手法によりループの並列化を実現する。
(4)処理コスト解析
次に生成されたマクロタスクMTを各PUで実行した際に必要となる処理サイクルを、予め付加された処理コスト情報より求める。このコスト情報は、プログラムを実機上単一のPUで実行した際の各マクロタスクの処理時間、または各種ツール等での見積もり値を用いる。なお、CPUの処理サイクルに関しては、コンパイラ内に持たせたCPU命令コストテーブルを参照することによって求めることも可能である。つまり、例えばCPUなどに関しては乗算や加算など命令レベルで必要とするサイクル数をテーブルに保持しておき、当該テーブルを参照することでMTを当該PUで実行する際の逐次処理サイクル数を見積もることができる。なお、ここでの処理時間は、電力制御を適用しない、つまり通常の電源電圧が供給され、通常の動作周波数で動作するPU上の処理時間とする。
次に生成されたマクロタスクMTを各PUで実行した際に必要となる処理サイクルを、予め付加された処理コスト情報より求める。このコスト情報は、プログラムを実機上単一のPUで実行した際の各マクロタスクの処理時間、または各種ツール等での見積もり値を用いる。なお、CPUの処理サイクルに関しては、コンパイラ内に持たせたCPU命令コストテーブルを参照することによって求めることも可能である。つまり、例えばCPUなどに関しては乗算や加算など命令レベルで必要とするサイクル数をテーブルに保持しておき、当該テーブルを参照することでMTを当該PUで実行する際の逐次処理サイクル数を見積もることができる。なお、ここでの処理時間は、電力制御を適用しない、つまり通常の電源電圧が供給され、通常の動作周波数で動作するPU上の処理時間とする。
なお、コンパイル時にコストを決定できない要素が存在する場合、例えばMTが分岐を含む場合は、分岐確率を50%としてコスト算出を行う。分岐確率を50%としたのは、分岐はする/しないの2者択一であり、その確率が50%の時が最もコスト算出が難しいワーストケースだからである。従って、明らかのその確率が偏っていることがわかるのであれば50%とする必要はない。また、例えばループや配列のサイズが定まらない場合は、ループを固定回数とする、配列宣言時の最大サイズとする、等の方法を適用する。
(5)マクロタスク間並列性解析=最早実行条件解析
コンパイラはマクロタスクMTの処理コストが決定した後、データ依存・制御フロー解析処理で抽出したMT間の制御フローとデータ依存性を同時に解析結果から、MT間の並列性、つまり各MTの実行を最も早く実行してよい条件(最早実行条件)を決定する。この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ(MTG)である。図5の入力プログラムを解析し生成されたMTGを、図6に示す。本グラフ中の各ノードはマクロタスクMTを示し、ノード間の実線はマクロタスク間のデータ依存関係を表す。例えば、MT1.1からMT1.2及びMT1.3に対して実線が伸びているが、これはMT1.2及びMT1.3がMT1.1を実行した結果生じたデータを入力データとして用い処理を実行しているという依存関係があることを示している。そのため、実行順序として、MT1.2及びMT1.3はMT1.1タスク終了後、実行できることを示す。
コンパイラはマクロタスクMTの処理コストが決定した後、データ依存・制御フロー解析処理で抽出したMT間の制御フローとデータ依存性を同時に解析結果から、MT間の並列性、つまり各MTの実行を最も早く実行してよい条件(最早実行条件)を決定する。この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ(MTG)である。図5の入力プログラムを解析し生成されたMTGを、図6に示す。本グラフ中の各ノードはマクロタスクMTを示し、ノード間の実線はマクロタスク間のデータ依存関係を表す。例えば、MT1.1からMT1.2及びMT1.3に対して実線が伸びているが、これはMT1.2及びMT1.3がMT1.1を実行した結果生じたデータを入力データとして用い処理を実行しているという依存関係があることを示している。そのため、実行順序として、MT1.2及びMT1.3はMT1.1タスク終了後、実行できることを示す。
また、入力プログラムよりMT1.2は複数のループやサブルーチンで構成されたブロックなので、コンパイラは当該MTをさらに複数のMTに階層的に分割する。よって、当該MTGではMT1.2中に、別階層でMTGを構成する。MTG1.3も同様である。なお、本グラフには表現されていないが、各MTG内のマクロタスクの末端には終了タスク(EMT)が付加され、MTG内のタスク終了を判定するために用いられる。
(6)クリティカルパスタスクの抽出
次に、このグラフよりマクロタスク全体、つまり当該プログラムの実行時間に影響するマクロタスクの集合郡であるクリティカルパスを抽出する。言い換えれば、各MTにおいて、MTGの終了タスクEMTからの最長パス上にあるマクロタスクコストの総和を求め、スタートからEMTまでの最長パスを決定する。この各マクロタスクから見たコスト総和は、マクロタスクをPUに割り当てるスケジューリング時に、また電力制御時の制御手法の選択時に使用される。つまり、マクロタスク間の依存関係から当該マクロタスクからの残存マクロタスクのうち、実行時間が最長のパス(クリティカルパス)を求め、クリティカルパス上のマクロタスクに高い優先度を与え、非クリティカルパス上のマクロタスクに低い優先度を与える。これにより、後続タスクの処理量が多いマクロタスクから優先的にPUへ割当を行うことで、全体の処理時間に影響あるマクロタスクを優先的に処理でき、全体の実行時間をなるべく最小化することを狙う。
次に、このグラフよりマクロタスク全体、つまり当該プログラムの実行時間に影響するマクロタスクの集合郡であるクリティカルパスを抽出する。言い換えれば、各MTにおいて、MTGの終了タスクEMTからの最長パス上にあるマクロタスクコストの総和を求め、スタートからEMTまでの最長パスを決定する。この各マクロタスクから見たコスト総和は、マクロタスクをPUに割り当てるスケジューリング時に、また電力制御時の制御手法の選択時に使用される。つまり、マクロタスク間の依存関係から当該マクロタスクからの残存マクロタスクのうち、実行時間が最長のパス(クリティカルパス)を求め、クリティカルパス上のマクロタスクに高い優先度を与え、非クリティカルパス上のマクロタスクに低い優先度を与える。これにより、後続タスクの処理量が多いマクロタスクから優先的にPUへ割当を行うことで、全体の処理時間に影響あるマクロタスクを優先的に処理でき、全体の実行時間をなるべく最小化することを狙う。
以上のように得たMTG情報は、テーブルにて管理される。本テーブルを説明するために、図7(a)に簡単なマクロタスクグラフ(MTG)を、(b)にマクロタスク間の依存関係、つまりMTGを表現するスケジューリングテーブルを例示する。本テーブル例では、マクロタスク毎に、タスクID(701)、依存タスク番号(702)、処理時間(703)、優先度(704)、ターゲットPU(705)、マクロタスク間データ共有量(706)、の項目(フィールド)を持たせている。各項目を説明すると、タスク番号(701)は、あるプログラムを実行する際の各マクロタスクの固有番号であり、マクロタスクを一意に指定できるような番号付けがMTG生成時にコンパイラによって行われる。
次に依存タスク番号(702)は、当該マクロタスクを実行するに際して、当該マクロタスクが実行可能となるために、当該マクロタスクより前に処理すべきタスク番号を表す。つまり、依存タスク番号で指定されたマクロタスクの実行により生成される出力データを、当該マクロタスクが入力データとして使用する(データ依存)、または依存マクロタスク内に分岐処理が含まれており、当該分岐処理の実行結果で次に起動すべきマクロタスクが当該マクロタスクとなる(制御依存)ことを意味する。本例では、マクロタスクMT1実行時に生成されるデータをMT2及びMT3が用い、さらにMT2、MT3実行時に生成されるデータをMT4が用いるという、データ依存関係があることになる。つまり、MT1実行終了後MT2及びMT3が実行可能状態となり、MT2及びMT3実行終了後MT4が実行可能となる。また、MT2とMT3は並列で実行可能なことも本テーブルから判断できる。
次に、処理時間(703)は、前述した処理コスト解析で求められたマクロタスク単体の実行時間を示す。本例では、時間単位としてキロサイクルで表示した。続いて優先度(704)は、マクロタスクを実行するに際して複数のマクロタスクが割り当て対象となった場合、時間的に優先して割り付けるべきマクロタスクを選出する際に用いる指標値である。前述した、クリティカルパスタスクの抽出で、当該マクロタスクからEMTまでの残りマクロタスクのコスト総和が大きな順に優先度を高く設定する。また優先度はユーザにより指定される場合もありうる。これは、プログラム内のディレクティブ指定により、あるサブルーチンやプログラム部分をユーザが明示することで、指定される。例えば、アプリケーション設計時に、マクロタスクの実行を優先的に行うことでプログラム全体の実行時間が短縮できることがわかる場合は、当該マクロタスクに高い優先度を与えることになる。また、周期タスク等で、時間制約に対し余裕が少ないマクロタスクに高い優先度を与える、割り込み処理を行うタスクで、通常の処理タスクに対し影響を最低限にするよう当該割り込み処理タスクに高い優先度を与える、等がある。また、優先度を基板バイアス制御(正方向)による高速化対象タスクとして、直接指定するためのフラグとして扱う方法もある。本例では、優先度を5段階とし、コンパイラにより残存タスクの最長パス長に基づいて値が設定している。
次に、ターゲットPU(705)は、CMPが搭載するPUの一部が信号処理プロセッサDSPなど、特定の処理を高速に実行可能な専用処理PUを持つヘテロジニアス構成において、当該マクロタスクの処理に適しているPUを示している。今回の例では、ターゲットをホモジニアスCMP構成としているため、汎用プロセッサ(CPU)がターゲットプロセッサとなる。ターゲットプロセッサは、入力プログラム中でユーザがディレクティブにより直接指定される。または、ヘテロジニアス構成の場合、当該プロセッサが持つ専用プロセッサ向けツール等との連携で対象マクロタスクの当該プロセッサ上での実行コストを見積もっておき、CPUで処理した場合と比較することで、当該専用プロセッサで処理した場合処理時間が短いと判定される場合は、ターゲットプロセッサの指定を当該専用プロセッサとコンパイラが判断する。
次に、マクロタスク間データ共有量(706)は、データ依存が存在する依存マクロタスクと当該マクロタスクでのデータ授受の量を表す。前述の通り、コンパイラはMTG生成時にマクロタスク間のデータ依存性を解析する。その際に、依存データの共有量を計算しておく。つまり、依存マクロタスクが生成したデータで当該マクロタスクが使用するデータの量、または依存マクロタスクが使用するデータで当該マクロタスクも使用するデータ量を示す。これは、当該マクロタスクを割り当てる際、共有データ量が多いマクロタスクを実行したPUと同一のPUに割り当てることで、依存マクロタスク処理時にキャッシュに読み込まれたデータ、またはローカルメモリに予め転送されたデータを、当該マクロタスクが最大限活用する。その結果、当該マクロタスクを実行するに際し必要なCSM等の外部メモリとの転送量をなるべく少なくし、転送に関わる処理時間を低減できる。なお、ローカルメモリにデータを配置する場合には、予め当該データの配置アドレスを固定的に定めておく必要がある。これは、プログラム内で明示的にメモリ配置位置を指定しておくか、コンパイラにデータ配置機能を拡張することにより、実現される。
(7)タスクスケジューリング
以上で得られた情報を用いて、コンパイラは各マクロタスクを実際にPUに割り当てるタスクスケジューリングを次に行う。スケジューリング部の処理フローを図8に示す。以下では、このフローの各処理について説明する。まず、MTG及びスケジューリングテーブルの生成終了後、開始マクロタスクより実行可能MTの検出を行う(801)。本処理では、スケジューリングテーブルより、既にスケジューリング済みのタスクをPUに割り当て後、データ依存や制御依存が解決され、次に実行可能となるマクロタスクを抽出する。例えば、図7のスケジューリングテーブル(810)よりMT0を割り当て後、実行可能となるマクロタスクはMT1とMT2であり、これらのマクロタスクが本処理にて抽出される。続いて、タスクの優先度を検出し、どのタスクから優先的にPUへ割当を行うかを決定する(802)。
以上で得られた情報を用いて、コンパイラは各マクロタスクを実際にPUに割り当てるタスクスケジューリングを次に行う。スケジューリング部の処理フローを図8に示す。以下では、このフローの各処理について説明する。まず、MTG及びスケジューリングテーブルの生成終了後、開始マクロタスクより実行可能MTの検出を行う(801)。本処理では、スケジューリングテーブルより、既にスケジューリング済みのタスクをPUに割り当て後、データ依存や制御依存が解決され、次に実行可能となるマクロタスクを抽出する。例えば、図7のスケジューリングテーブル(810)よりMT0を割り当て後、実行可能となるマクロタスクはMT1とMT2であり、これらのマクロタスクが本処理にて抽出される。続いて、タスクの優先度を検出し、どのタスクから優先的にPUへ割当を行うかを決定する(802)。
次に、タスクのPUへの割当を実施する(803)。本処理では、優先度が高い順にマクロタスクを、アイドル状態になっているPU、またはすでにタスクが割り当て済みのPUではアイドル状態に一番早くなるPUに割り当てる。このとき、優先度が高いマクロタスクほど、当該マクロタスクを、アイドル状態がより早く訪れる、つまり割り当て済みタスクの実行を一番早く終えるPUに割り当てていく。また、もし複数のPUに対し当該タスクが割り当て可能な場合は、各PU上で既に割り当て済みのタスクと当該マクロタスクの共有データ量を図7のテーブルより検索し、なるべく共有データ量が大きくなるタスクがスケジューリング済みのPUに当該マクロタスクを割り当てる。なお、割り当て時に、各タスクの開始時間と終了時間を記録しておく。検出されたマクロタスク郡で未割り当てマクロタスクがなくなる(805)まで、本処理を繰り返す(813)。検出マクロタスクのPUへの割り付けが終了した場合、もしプログラムの終了タスクEMTに未達の場合は再度割り当て済みとなったタスクにより依存解決することで検出される実行可能MTの検出を再度実行する(812)。
本スケジューリングの実行例として、図7のテーブル情報で示した4個のマクロタスクを、2個のPUに割り当てる際のスケジューリング例を図10(a)に示す。開始マクロタスクであるMT0はまず、PU0に割り当てられ、PU0の処理時間情報からPU0上で次にタスク処理が開始可能となる時間(MT0の処理終了時間)が決定される。次にPU0割り当て後、MT1とMT2が実行可能状態となり、これらのマクロタスクは並列で実行できることになる。優先度が高いMT1から割り当て対象となり、MT1はMT0と共有データが存在するためPU0に、MT2は割り当て時にアイドル状態であるPU1に割り当てられる。本例では、MT1の処理時間がT2のそれよりも大きい。次に、MT1とMT2の実行が終了した時点で、MT3が実行可能状態となる。このタイミングでは、PU0、PU1双方ともアイドル状態でタスク割り当てが可能であるが、割り当て対象となるMT3はMT2とのデータ共有量が大きいため、MT2を実行したPU1にMT3を割り当てる。この結果、図10(a)に示したスケジューリング結果となる。
このようにPUへのマクロタスク割り当て終了後、マクロタスクのPUへの割り当て処理終了後、電力制御を適用するために割り当て済みマクロタスクに対し、プログラム全体の実行時間に影響するクリティカルマクロタスク群の抽出と、各マクロタスクの実行開始時間と終了時間よりタスク間依存で生じるタスクの処理余裕度の見積もりを行う(806)。具体的には、まずプログラム全体の実行時間に影響するタスクの抽出例として、プログラム全体の処理時間を決定(影響)するクリティカルマクロタスクは、MT0、MT1、MT3と決定される。また、余裕度の見積もりにおいては、例えばPU1上でのMT2は、次に実行されるMT3がMT1に対しデータ依存を持つため、PU1はMT2処理終了後、MT1処理終了までアイドル状態となる。このアイドル時間を、MT2に対する時間余裕度として計算する。
以上の結果を用いて、次に電力モードを決定する(807)。電力制御の詳細と具体例は後述するが、概念を説明すると、プログラム全体の処理時間に強く影響すると判断されたマクロタスクをPUが実行する際は、実行前に当該PUに対し動作速度を一時的に高速化する電力制御モードを適用する。また、余裕時間があるタスクをPUが実行する際は、実行前に当該PUに対し動作速度を一時的に下げ電力を削減する電力制御モードを適用する。またタスクが実行されないPUに対しては、クロックや電源電圧をオフとする電力制御モードを適用する。これにより、消費電力を抑えるまたは低減すると同時に、プログラム全体の動作速度を最大化する。電力制御モードは、ターゲットとなるアーキテクチャによって用意されるモードが決まるが、制御モードの例を図9に電力制御テーブル(811)として示す。テーブルは、モード名(900)、電源電圧VDS(901)、基板バイアス電圧VBG(902)、クロック周波数CLK(903)、各モードへの遷移時に必要な安定化時間(904)、各モードにおける通常モードNORMに対する速度比(905)、電力比(906)で構成される。算出される余裕度に対し設定モードの速度比で電力制御適用後の実行時間が余裕時間内に納まるか、また電力効果を示す電力比を使って電力が低減するかを算出し、モードを決定することとなる。また、モード切替遷移時間は、クロック、電源の安定時間、また電源をオフとする場合はメモリ、レジスタ等のデータ退避時間等を考慮して決められる。説明の簡略化のため本表中ではモード毎に定義しているが、通常はターゲットアーキテクチャによって、遷移パターン、つまり遷移前・遷移後のモード対応で時間が定義される。以上の電力モード決定後、タスクの実行時間が変わるため、再度各MTの開始・終了時間といった時間情報を更新する(808)。
電力制御モード決定後は、実行コードの生成を行う(809)。具体的には、スケジューリング結果よりPU毎に実行されるマクロタスクが決定されている。したがって、PU毎にマクロタスク内のプログラムコードを、各PU間でのデータ通信、同期通信用のコード及び電力制御コードを付加した上で、ターゲットアーキテクチャが解釈するオブジェクトコードに変換して、実行コードを生成する。ここで、図1に示されるコントロールプロセッサ(CTLP)が存在するプロセッサシステムに対しては、各PUにおいて実行すべきタスク番号と実行順序、電力モード、その他タスク実行に必要な実行情報、例えばキャッシュのプリフェッチやデータ転送指定が定義されるスケジュールプログラムが生成される。このスケジュールプログラムは、図1におけるコントロールプロセッサ(CTLP)に用いられる。また、図2のように各PUに制御レジスタを(CR)を有するプロセッサシステムにおいては、各マクロタスクの前後に他のタスクとの同期を取るためのタスク間同期プログラム、電力モードやデータ転送を実施する電力モードプログラム、データ転送プログラムを付加する。
また、ターゲットアーキテクチャ向けのコード生成コンパイラを利用する方法もある。これは、入力プログラムに、プログラム分割と対象PU、及びデータ転送、同期通信、電力制御を明示したAPIを挿入し、このAPIを解釈する機能を付加したコード生成コンパイラで、各PUの実行コードを生成し、処理を終了する。
(8)電力制御の詳細
続いてFD−SOIの特徴を活用する基板バイアス制御を利用したタスクスケジューリングにおける電力制御手法を、具体例を示し説明する。前述したフローのとおり、マクロタスクをまず電力制御適用なし状態である通常のスケジューリングでPUに割り当てる。この際、タスク間依存関係から生じるプロセッサ処理量の不均衡を利用して、並列実行時にプロセッサ処理量の不均衡が低減されるよう、各PUの基板バイアス制御、つまり電力制御を行うことになる。以下の例では、ターゲットアーキテクチャが持つ電力制御モードは図9に示した6種類であるとする。電力制御の効果を再度説明すると、HIGHモードではPUの基板バイアス制御(順方向バイアス印加)を行うことでしきい値を下げ(場合によっては電源電圧も上昇させ)、PUの速度を高めて処理することで全体の処理時間を短縮できる。また、低速なMID、LOW、OFFモードでは、PUの基板バイアス制御(逆方向バイアス印加)を行うことでしきい値を上げ、PUの速度を低減し処理を行うことで、電力を削減できる。
続いてFD−SOIの特徴を活用する基板バイアス制御を利用したタスクスケジューリングにおける電力制御手法を、具体例を示し説明する。前述したフローのとおり、マクロタスクをまず電力制御適用なし状態である通常のスケジューリングでPUに割り当てる。この際、タスク間依存関係から生じるプロセッサ処理量の不均衡を利用して、並列実行時にプロセッサ処理量の不均衡が低減されるよう、各PUの基板バイアス制御、つまり電力制御を行うことになる。以下の例では、ターゲットアーキテクチャが持つ電力制御モードは図9に示した6種類であるとする。電力制御の効果を再度説明すると、HIGHモードではPUの基板バイアス制御(順方向バイアス印加)を行うことでしきい値を下げ(場合によっては電源電圧も上昇させ)、PUの速度を高めて処理することで全体の処理時間を短縮できる。また、低速なMID、LOW、OFFモードでは、PUの基板バイアス制御(逆方向バイアス印加)を行うことでしきい値を上げ、PUの速度を低減し処理を行うことで、電力を削減できる。
以下実施例として、PUへのマクロタスク割り当て結果より、図10(a)のスケジューリング結果を得たとする。この際、プログラム全体の実行時間に影響を与えるクリティカルマクロタスクはMT0、MT1、MT3であるため、まずこれら3個のマクロタスク実行時の各PUの電力モードをHIGHに設定する。PUの動作速度が変化するため、各マクロタスクの実行開始・終了時間を更新する。次に余裕度を算出する。MT2は、MT3が持つMT1及びMT2へのデータ依存により、MT1の処理が終了するまで時間余裕がある。具体的には、MT1の処理時間は電力制御適用無しで30KCycであるが、HIGHモードを適用したため、25Kサイクルとなる。またMT2の処理時間は電力制御適用なしで10Kサイクルであり、余裕度は15Kサイクルと計算される。したがって、電力制御モードで動作周波数を1/2とするMIDを適用した場合、MT2は20Kサイクルとなり、モード切替遷移時間を考慮しても余裕時間に収まるため、MIDモードが選択される。また、さらにMT2実行前のPU1とMT1実行後のPU0、MT3実行後のPU1はタスクを実行しないアイドル状態であるため、クロック及び共有電圧をOFFモードとすることで電力が低減できるが、MT2実行前のPU2では余裕時間が10KCycであるので、モード切替遷移時間が小さなOFFモードが適用される。MT2実行前のPU1とMT1実行後のPU0、MT3実行後のPU1は、マクロタスク処理が終了しているため、より電力削減効果が大きなDEP−OFFモードが適用される。その結果、最終的に図10(b)のようなスケジューリング結果となる。
なお、ユーザによるディレクティブ指定により、意図的に高速に行うべきタスクの指定、周期タスク等で時間余裕があるときに低速に行うべきタスクの指定を行うことも可能である。
以上の本発明のコンパイラにより、FD−SOIで構成されたマルチプロセッサシステムにおいて、当該PUを効率よく動作させるためのタスク配置および電力制御を行うコンパイラを提供することにより、当該プロセッサシステムの性能を最大限活用しつつ、低電力にて効率よく処理することが可能となる。その結果、高い演算性能を持ちかつ低電力に処理することが強く望まれる、カーナビや携帯電話、情報家電向けのLSIに本発明を適用することができ、高品質の動画像や音声処理、また画像認識や音声認識といった機能を実現することが可能となる。また、自動車における情報系、制御系システム向けLSIに対しても適用することができ、自動運転や安全運転システム等を実現することが可能となる。
次に、上述のコンパイラにより生成された実行コードにより動作するマルチプロセッサシステムについて図1及び図2のマルチプロセッサシステムを用いて説明する。なお、上述の実行コードは、ハードディスクやフラッシュメモリなどのマルチプロセッサシステムの外部に設けられる不揮発性記憶媒体に記憶され、必要に応じてマルチプロセッサシステムに読み出される。
まず、図1のマルチプロセッサシステム上での動作を説明する。上述のコンパイラがCTLP上で動作するスケジューラプログラムを生成する。スケジューラプログラムは、各PUにおいて実行すべきタスク番号と実行順序、電力モード、その他タスク実行に必要な実行情報、例えばキャッシュのプリフェッチやデータ転送指定、が定義されている。ここでは、図10(b)で示したスケジューリング結果が既に上述のコンパイラにより得られているとする。まず、CTLPは本スケジューラプログラムを不揮発記憶媒体等から読み出し実行する。その結果、本例ではまず、CTLPはPU0に対しMT0の実行開始を指示する。その際、MT0がPU0で電力モードHIGHにて実行されるものと判断し、PU0に実行を指示すると共に、PU0のBGCTLにBGP,BGNを順方向バイアスが印加されるように電圧を制御ように指示する。具体的には、設定する電力モードを電力制御部に指示し、さらに実行すべきタスク番号をPU0上のローカルメモリに対し書き込む。各PUはメモリ上のタスク番号をポーリングし、タスク番号が指定された時点で当該タスクの実行を開始する。同様にプログラム実行開始時は、PU1は実行すべきタスクがなく電力モードがOFFとされているため、CTLPがPU1のBGCTLにBGP,BGNを逆バイアスが印加されるように電圧を制御する。同様に本プログラム実行にまったく使用されないPU2、PU3に対しては電力モードDEEP−OFFとし、CTLPはPU2、PU3の電源電圧をカットするよう制御する。これにより、MT0は、PU0により高速に処理されると共にPU1、PU2、PU3のリーク電流が低減される。
次に、MT0が終了した時点で、PU0は、CTLPに処理の終了を伝達する。このとき、既に上述のコンパイラにより次にMT1とMT2が並列実行可能であることが解析されており、また実行すべきPU番号も決定されている。従って、CTLPはPU0に対する電力モードをHIGHに設定しMT1の実行をPU0に指示する。続いてCTLPはPU1に対し電力モードをMIDに設定し、MT2の実行をPU1に指示する。PU0はMT1処理終了後、コンパイラが付加したコードを実行することによりMT1の終了をCTLPに通知する。通知はメモリ上のフラグを書き込む方法でも良いし、プロセッサ間割り込みにより通知する方法でも良い。同様にPU1はMT2処理終了後、CTLPに通知する。CTLPはMT1とMT2の終了通知を受信後、PU1の電力モードをHIGHに設定しMT3の実行を指示する。また同時にPU0は実行タスクが無いため、電力モードがDEEP−OFFとされており、CTLPがPU0の電源をOFFとするよう制御する。そして、PU1はMT2の処理が終了後、同様に当該MT2の終了をCTLPに通知する。CTLPはMT2の終了通知を受けてPU1の電力モードをDEEP−OFFとするよう制御し、全体実行が完了する。この結果、本提案手法を用いない場合と比較し、実行時間が短縮されると同時に、電力を削減することが可能となる。
次に、図2のマルチプロセッサシステム上での動作を説明する。上述のコンパイラは、各PUで実行すべきタスクを持ったプログラムを生成すると同時に、タスク実行コードの前後に他のタスクとの同期を取るためのタスク間同期プログラム、電力モードやデータ転送を実施する電力モードプログラム、データ転送プログラムを埋め込む。そしてPU毎の実行コードを最終的に生成する。以下、図10(b)で示したスケジューリング結果が既に上述のコンパイラにより得られているとする。まず、各PUは不揮発媒体から初期状態を定義するプログラムを実行する。ここで、初期状態とはPUの電力モードと次に実行すべきタスクが定義される状態である。つまり、PU0はまずMT0を実行することがコンパイル段階で決定されているため、PU0は自己の電力モードをHIGHに設定し、MT0の実行を始める。またプログラム実行開始時に実行すべきタスクが無いPU1は、自己の電力モードをOFFに設定する。またさらに本プログラム実行で全く使用しないPU2、PU3は同じく自己の電力モードをOFFに設定する。PU0はMT1の処理を終了後、コンパイラが付加したコードによりまずPU1の電力モードをMIDに設定する。続いて、PU1に対しMT2の実行を指示する。PU1はPU0により電力モードがMIDに設定されたため、次に実行すべきMT2の実行待ち状態となり、PU0からの通知を受けてMT2の実行を開始する。また、PU0は続いてMT1の実行を開始する。
PU1はMT2の実行終了後、実行終了の通知をPU0に行う。なお、通知の方法は例えばPU0のローカルメモリに実行の終了を示すフラグを書き込むことにより実現される。またさらにPU1は次に実行されるMT3の実行通知待ち状態となる。PU0はMT1処理終了後MT2の完了をチェックし、MT2の完了を確認次第、次にMT3を実行するPU1の電力モードをHIGHに設定する。そしてPU0はPU1に対しMT3の実行開始を指示し、自己の電力モードをDEEP−OFFに設定する。PU1はMT3実行後、自己の電力モードをDEEP−OFFとし、プログラム全体の実行を終了する。この結果、本提案手法を用いない場合と比較し、実行時間が短縮されると同時に、電力を削減することが可能となる。
101・・・プロセッサユニット、102・・・基板電圧制御回路、103・・・制御プロセッサ、104・・・共有メモリ、105・・・インタコネクション・ネットワーク、106・・・接地電源、107・・・電源、108・・・nMOS基板電源、109・・・pMOS基板電源、110・・・基板電圧制御線、111・・・制御レジスタ、120〜123、125〜128・・・タスク、701・・・タスクID、702・・・依存タスクID、703・・・処理時間、704・・・優先度、705・・・ターゲットPU、706・・・タスク間共有データ量、801、802、803、806、807、808、809・・・処理、804、805・・・分岐を含む処理、810・・・スケジューリングテーブル、811・・・電力制御情報テーブル、812、813・・・フロー、900・・・電力モード、901・・・供給電源電圧、902・・・基板バイアス電圧、903・・・クロック周波数、904・・・モード切替安定化時間、905・・・速度比、906・・・電力比。
Claims (10)
- 同種又は異種の複数のプロセッサユニットを具備し、前記複数のプロセッサユニット内に形成されるMOSトランジスタの半導体基板の電圧及び前記複数のプロセッサ供給する動作周波数を夫々独立して制御可能なマルチプロセッサシステムにより実行される実行コードを入力プログラムから生成するコンパイラにおいて、
前記入力プログラムを分割することにより複数のマクロタスクを生成する第1ステップと、
前記複数のマクロタスク毎に前記複数のプロセッサユニットのうちいずれのプロセッサユニットに割り当てるかを決定する第2ステップと、
前記複数のプロセッサユニット毎に、前記第2ステップにおいて割り当てられたマクロタスクの実行時間の余裕度を算出する第3ステップと、
前記第3ステップにおいて算出された余裕度に基づいて前記複数のプロセッサユニットの夫々の半導体基板に供給する電圧及び前記複数のプロセッサユニットの夫々に供給する動作クロック周波数を変更するためのコードを付加する第4ステップとを具備することを特徴とするコンパイラ。 - 請求項1において、
前記複数のマクロタスク間のデータ依存性を検出する第5ステップを更に具備し、
前記第4ステップは、前記第5ステップにより検出されたデータ依存性を考慮したとしても、前記複数のマクロタスクを前記複数のプロセッサユニットへの割り当てた際に算出される前記入力プログラム全体の実行時間より、前記半導体基板に順バイアスとなる電圧を印加し、動作クロック周波数を向上させた場合の前記入力プログラム全体の実行時間が短くなる場合に、前記複数のプロセッサユニットのうちマクロタスクを実行するプロセッサユニットに対し、前記半導体基板に順バイアスを印加し、動作クロック周波数を向上させるコードを付加するステップを有することを特徴とするコンパイラ。 - 請求項2において、
前記第4ステップは、前記第5ステップにより検出されたデータ依存性を考慮すると、前記複数のマクロタスクを前記複数のプロセッサユニットへの割り当てた際に算出される前記入力プログラム全体の実行時間と、前記半導体基板に逆バイアスとなる電圧を印加し、動作クロック周波数を低下させたとしても前記入力プログラム全体の実行時間が変わらない場合に、前記複数のプロセッサユニットのうちマクロタスクを実行するプロセッサユニットに対し、前記半導体基板に逆バイアスを印加し、動作クロック周波数を低下させるコードを付加するステップを有することを特徴とするコンパイラ。 - 請求項1において、
前記複数のプロセッサユニットの夫々は、半導体基板上に、埋め込み酸化膜を介して形成される第1半導体層と、前記第1半導体層に形成され、前記第1半導体層の厚さを有するソース領域およびドレイン領域と、前記ソース領域およびドレイン領域に挟まれるように形成されたチャネル領域と、該チャネル領域の第1主面側に形成された第1ゲートと、前記埋め込み酸化膜の下面に接して形成された導電層からなる第2ゲートと、前記第1半導体層の周囲を囲むように前記半導体基板に形成された絶縁分離層とを有する完全空乏型SOI・MOSトランジスタが形成される第1及び第2回路形成領域とを有し、
前記第1回路形成領域は、前記第1ゲートが前記第2ゲートに電気的に接続された第1のMOSトランジスタで構成された第1の回路が配置され、
前記第2回路形成領域は、前記第1ゲートおよび前記第2ゲートのそれぞれが独立に制御される第2のMOSトランジスタで構成された第2の回路が配置され、
前記半導体基板に印加される電圧は、前記第1のMOSトランジスタにより供給されることを特徴とするコンパイラ。 - 同種又は異種の複数のプロセッサユニットと、不揮発性記憶媒体に記憶されたスケジューラプログラムに従って前記複数のプロセッサユニットの制御を行うコントロールプロセッサとを有するプロセッサシステムにおいて、
前記複数のプロセッサユニットの夫々は、半導体基板上に、埋め込み酸化膜を介して形成される第1半導体層と、前記第1半導体層に形成され、前記第1半導体層の厚さを有するソース領域およびドレイン領域と、前記ソース領域およびドレイン領域に挟まれるように形成されたチャネル領域と、該チャネル領域の第1主面側に形成された第1ゲートと、前記埋め込み酸化膜の下面に接して形成された導電層からなる第2ゲートと、前記第1半導体層の周囲を囲むように前記半導体基板に形成された絶縁分離層とを有する完全空乏型SOI・MOSトランジスタが形成される第1及び第2回路形成領域とを有し、
前記第1回路形成領域は、前記第1ゲートが前記第2ゲートに電気的に接続された第1のMOSトランジスタで構成された第1回路が配置され、
前記第2回路形成領域は、前記第1ゲートおよび前記第2ゲートのそれぞれが独立に制御される第2のMOSトランジスタで構成された第2回路が配置され、
前記半導体基板に印加される電圧は、前記第1MOSトランジスタにより供給され、
前記複数のプロセッサユニットは、前記不揮発性記憶媒体に記憶された実行コードを実行し、
前記実行コードは、複数のマクロタスクに分割され、
前記スケジューラプログラムは、前記複数のマクロタスクの夫々が前記複数のプロセッサユニットのうち何れのプロセッサユニットにより実行されるか示す第1情報と、前記複数のマクロタスク毎に前記複数のプロセッサユニットの夫々の前記半導体基板に印加される電圧に関する第2情報が含まれ、
前記コントロールプロセッサは、前記第2情報に基づいて前記第1MOSトランジスタが供給する電圧を前記第1回路に指示することを特徴とするプロセッサシステム。 - 請求項5において、
前記スケジュールプログラムは、前記実行コードが入力プログラムに従って生成される際に、付加されることを特徴とするプロセッサシステム。 - 請求項5において、
前記コントロールプロセッサは、前記複数のプロセッサユニットが前記複数のマクロタスクのうち割り当てられたマクロタスクの実行が終了した際に、前記コントロールプロセッサに前記割り当てられたマクロタスクの実行が終了したことを示す終了情報を通知することを特徴とするプロセッサシステム。 - 請求項7において、
前記コントロールプロセッサは、前記終了情報を受けた場合に、前記スケジュールプログラムに従って、前記終了情報を通知したプロセッサユニットが次に実行すべきマクロタスクの情報と、前記半導体基板に印加すべき電圧の情報を指示することを特徴とするプロセッサシステム。 - 同種又は異種の複数のプロセッサユニットを有するプロセッサシステムにおいて、
前記複数のプロセッサユニットの夫々は、半導体基板上に、埋め込み酸化膜を介して形成される第1半導体層と、前記第1半導体層に形成され、前記第1半導体層の厚さを有するソース領域およびドレイン領域と、前記ソース領域およびドレイン領域に挟まれるように形成されたチャネル領域と、該チャネル領域の第1主面側に形成された第1ゲートと、前記埋め込み酸化膜の下面に接して形成された導電層からなる第2ゲートと、前記第1半導体層の周囲を囲むように前記半導体基板に形成された絶縁分離層とを有する完全空乏型SOI・MOSトランジスタが形成される第1及び第2回路形成領域と、制御レジスタを有し、
前記第1回路形成領域は、前記第1ゲートが前記第2ゲートに電気的に接続された第1のMOSトランジスタで構成された第1回路が配置され、
前記第2回路形成領域は、前記第1ゲートおよび前記第2ゲートのそれぞれが独立に制御される第2のMOSトランジスタで構成された第2回路が配置され、
前記半導体基板に印加される電圧は、前記第1MOSトランジスタにより供給され、
前記複数のプロセッサユニットは、前記不揮発性記憶媒体に記憶された実行コードを実行し、
前記実行コードは、複数のマクロタスクに分割されると共に夫々のマクロタスクの前後に付加されたタスク間同期プログラム及び電力モードプログラムを含み、
前記複数のプロセッサユニットの夫々は、前記複数のマクロタスクのうち割り当てられた一つのマクロタスクを実行し、前記割り当てられた一つのマクロタスクの実行が終了した際に、前記タスク間同期プログラムに従って実行すべき次のマクロタスクを判断すると共に前記半導体基板に供給すべき電圧を前記制御レジスタに登録することを特徴とするプロセッサシステム。 - 請求項9において、
前記複数のマクロタスクは、第1マクロタスク及び前記第1マクロタスクの実行結果を用いる第2マクロタスクを含み、
前記第1マクロタスクが前記複数のプロセッサユニットのうち第1プロセッサユニットに割り当れられ、前記第2マクロタスクは前記複数のプロセッサユニットのうち第2プロセッサユニットに割り当てられている場合に、前記第1プロセッサユニットは、前記第1マクロタスクの実行が終了した場合に前記第2プロセッサユニットに通知し、前記第2プロセッサユニットは、前記通知を受けたあとに前記第2マクロタスクを実行することを特徴とするプロセッサシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007324170A JP2009146243A (ja) | 2007-12-17 | 2007-12-17 | 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007324170A JP2009146243A (ja) | 2007-12-17 | 2007-12-17 | 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009146243A true JP2009146243A (ja) | 2009-07-02 |
Family
ID=40916763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007324170A Pending JP2009146243A (ja) | 2007-12-17 | 2007-12-17 | 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009146243A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011077852A (ja) * | 2009-09-30 | 2011-04-14 | Brother Industries Ltd | 画像処理装置およびプログラム |
WO2011161884A1 (ja) * | 2010-06-25 | 2011-12-29 | パナソニック株式会社 | 集積回路、コンピュータシステム、制御方法 |
US9081576B2 (en) | 2011-08-19 | 2015-07-14 | Samsung Electronics Co., Ltd. | Task scheduling method of a semiconductor device based on power levels of in-queue tasks |
JP2016192154A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、及び車載装置 |
JP2017091098A (ja) * | 2015-11-06 | 2017-05-25 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
US10042645B2 (en) | 2015-05-12 | 2018-08-07 | Fujitsu Limited | Method and apparatus for compiling a program for execution by a plurality of processing units |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05108194A (ja) * | 1991-10-17 | 1993-04-30 | Hitachi Ltd | 低消費電力型半導体集積回路 |
JPH10143380A (ja) * | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
JP2001345693A (ja) * | 2000-05-30 | 2001-12-14 | Hitachi Ltd | 半導体集積回路装置 |
JP2002041160A (ja) * | 2000-07-24 | 2002-02-08 | Univ Tokyo | 電力制御装置及び方法並びに電力制御プログラムを記録した記録媒体 |
US20040128631A1 (en) * | 2002-12-31 | 2004-07-01 | Ditzel David R. | Software controlled body bias |
JP2004319999A (ja) * | 2003-04-04 | 2004-11-11 | Semiconductor Energy Lab Co Ltd | 半導体装置、cpu、画像処理回路及び電子機器、並びに半導体装置の駆動方法 |
JP2006293768A (ja) * | 2005-04-12 | 2006-10-26 | Univ Waseda | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
JP2007042730A (ja) * | 2005-08-01 | 2007-02-15 | Renesas Technology Corp | 半導体装置およびそれを用いた半導体集積回路 |
JP2007133723A (ja) * | 2005-11-11 | 2007-05-31 | Hitachi Ltd | マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ |
US20070283337A1 (en) * | 2006-06-06 | 2007-12-06 | Waseda University | Global compiler for controlling heterogeneous multiprocessor |
US20070283358A1 (en) * | 2006-06-06 | 2007-12-06 | Hironori Kasahara | Method for controlling heterogeneous multiprocessor and multigrain parallelizing compiler |
-
2007
- 2007-12-17 JP JP2007324170A patent/JP2009146243A/ja active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05108194A (ja) * | 1991-10-17 | 1993-04-30 | Hitachi Ltd | 低消費電力型半導体集積回路 |
JPH10143380A (ja) * | 1996-11-07 | 1998-05-29 | Hitachi Ltd | マルチプロセッサシステム |
JP2001345693A (ja) * | 2000-05-30 | 2001-12-14 | Hitachi Ltd | 半導体集積回路装置 |
JP2002041160A (ja) * | 2000-07-24 | 2002-02-08 | Univ Tokyo | 電力制御装置及び方法並びに電力制御プログラムを記録した記録媒体 |
US20040128631A1 (en) * | 2002-12-31 | 2004-07-01 | Ditzel David R. | Software controlled body bias |
JP2004319999A (ja) * | 2003-04-04 | 2004-11-11 | Semiconductor Energy Lab Co Ltd | 半導体装置、cpu、画像処理回路及び電子機器、並びに半導体装置の駆動方法 |
JP2006293768A (ja) * | 2005-04-12 | 2006-10-26 | Univ Waseda | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
JP2007042730A (ja) * | 2005-08-01 | 2007-02-15 | Renesas Technology Corp | 半導体装置およびそれを用いた半導体集積回路 |
JP2007133723A (ja) * | 2005-11-11 | 2007-05-31 | Hitachi Ltd | マルチプロセッサ、タスクスケジューリング方法、及びコンパイラ |
US20070283337A1 (en) * | 2006-06-06 | 2007-12-06 | Waseda University | Global compiler for controlling heterogeneous multiprocessor |
US20070283358A1 (en) * | 2006-06-06 | 2007-12-06 | Hironori Kasahara | Method for controlling heterogeneous multiprocessor and multigrain parallelizing compiler |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011077852A (ja) * | 2009-09-30 | 2011-04-14 | Brother Industries Ltd | 画像処理装置およびプログラム |
CN102035967A (zh) * | 2009-09-30 | 2011-04-27 | 兄弟工业株式会社 | 具有多个控制单元的图像处理装置 |
US8924696B2 (en) | 2009-09-30 | 2014-12-30 | Brother Kogyo Kabushiki Kaisha | Image processing device having a plurality of control units |
WO2011161884A1 (ja) * | 2010-06-25 | 2011-12-29 | パナソニック株式会社 | 集積回路、コンピュータシステム、制御方法 |
US8918664B2 (en) | 2010-06-25 | 2014-12-23 | Panasonic Corporation | Integrated circuit, computer system, and control method, including power saving control to reduce power consumed by execution of a loop |
JP5853216B2 (ja) * | 2010-06-25 | 2016-02-09 | パナソニックIpマネジメント株式会社 | 集積回路、コンピュータシステム、制御方法 |
US9081576B2 (en) | 2011-08-19 | 2015-07-14 | Samsung Electronics Co., Ltd. | Task scheduling method of a semiconductor device based on power levels of in-queue tasks |
JP2016192154A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、及び車載装置 |
US10042645B2 (en) | 2015-05-12 | 2018-08-07 | Fujitsu Limited | Method and apparatus for compiling a program for execution by a plurality of processing units |
JP2017091098A (ja) * | 2015-11-06 | 2017-05-25 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8112754B2 (en) | Controlling body-bias voltage and clock frequency in a multiprocessor system for processing tasks | |
JP4082706B2 (ja) | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ | |
Qiu et al. | Loop parallelism maximization for multimedia data processing in mobile vehicular clouds | |
JP4936517B2 (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
US8051412B2 (en) | Global compiler for controlling heterogeneous multiprocessor | |
KR101655137B1 (ko) | 칩 멀티프로세서에서 코어-수준 동적 전압과 주파수 스케일링 | |
US9760355B2 (en) | Parallelizing compile method, parallelizing compiler, parallelizing compile apparatus, and onboard apparatus | |
CN100561486C (zh) | 速度或电力关键电路中用多临界电压基本设计单元的方法 | |
JP2009146243A (ja) | 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム | |
US20150363230A1 (en) | Parallelism extraction method and method for making program | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
EP2697717A1 (en) | System and method for execution on multiple threads | |
JP2004199139A (ja) | プロセッサシステム、命令列最適化装置、および命令列最適化プログラム | |
JP4396987B2 (ja) | 動作合成装置および動作合成方法、ディジタル回路の製造方法、動作合成制御プログラム、可読記録媒体 | |
JP2007305148A (ja) | マルチプロセッサシステム | |
CN102339345B (zh) | 用于低功率半导体芯片布局方法以及低功率半导体芯片 | |
Kühn et al. | Leveraging FDSOI through body bias domain partitioning and bias search | |
US6505340B2 (en) | Circuit synthesis method | |
Rahimi et al. | From Variability Tolerance to Approximate Computing in Parallel Integrated Architectures and Accelerators | |
JP2011129147A (ja) | プロセッサシステム、命令列最適化装置、および命令列最適化プログラム | |
Kühn et al. | MuCCRA4-BB: A fine-grained body biasing capable DRP | |
Campi | Power-Shaping Configurable Microprocessors for IoT Devices | |
Lin | Workload Dependent Mitigation Approaches for Performance Variability: Ensuring Timing Guarantees of Integrated Circuits | |
Uchiyama | Power-efficient heteregoneous parallelism for digital convergence | |
Wang et al. | Leakage power aware scheduling in high-level synthesis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101119 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110810 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110927 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120207 |