明細書
マルチプロセッサシステム及びマノ グレイン並列ィ匕コンパイラ 技術分野
本発明は、 複数のプロセッサユニットで構成されるマルチプロセッサシステムにおいて、 当^ m数プロセッサュニットを効率よく動作させることを可能とするマノ^ "プロセッサシス テムのハードウエア構 β¾¾ぴプログラムを生成するコンパイラに関する。 技贿景
半導讓造技術の進歩による素子の鶴田ィ匕により、 駄な数のトランジスタを^ るこ とが可能となっている。 それと同時にプロセッサの高周波数化も進むが、 動作 Β#«Λの増加 、 またリ一ク¾¾に起因する待機 の増加〖こより、 従来のプロセッサが歩んできた動作 周波数の向上と論理^:の改善により達成してきた性能向上に限界が見え始めている。
そこで難、 性能改善と低 ®Λ化を親する手段として、 従来の C PU、 D S Pといった プロセッサュニット (以下、 P Uとする) を複数個オンチップで搭載し、 処理を並列で行う ことで、 動作周波数を向上させなくとも、 高レヽ演算性能を得ることが可能な、 マルチプロセ ッサシステム (シングルチップ'マルチプロセッサシステム) が有望となっている。 将来、 鶴田化がさらに進むことで、 PUをオンチップで 1 0 0個〜 1 0 0 0個^ Tることも可能 となると予彻 Jされる。
このようなマルチプロセッサシステムにおいて、 P Uの数に比例した演算性能を得るため には、 搭載された P Uを同時に,させプログラムを処理する必要がある。 しかしながら、 通常の入力プログラムは処理が時系列で逐次的に ΙΕίされてレヽるため、 複数の P Uを搭 it" るにも拘わらず、 当!^数 P Uに比例して期待される演算性能を得ることができなレ、。
この問題点を解決するための一つの方法として、 プログラム開発者が自らプログラムの並 列性を考慮し、 当該プログラムを^ ϊさせるマノ^プロセッサシステムの構成に基づいて、 当該プログラムを複数の PUで 亍させるための並列化コードを付加する必要がある。 しか
しながら、 本手法は PUが数個のシステムにおいては^ ¾である力 s、 の数十〜数千とい つた数の P Uが積載されたシステムにおレヽては、 また特に P uが で構成される は、 開発時間、 実効 14能の点で実用的ではない。
そこで、 構^ ¾ぴ演算性能が同種の複数 PUで構成されたマルチプロセッサシステムにお レヽて、 入力プログラムを讀し、 当該プログラム中から並列に動作可能な部分を抽出し、 当 ¾分を複数の P Uに割り当て同時に することを可能とする、 自動並列化コンパイラの 研究がすでに行われている。 例えば、 入力ソースプログラムを籠し、 当該プログラムをサ プノ "チンゃノ! ^プなどさまざまな ¾gのブロック (タスク) に分割し、 当!^数タスク間 の並列性を すると共に、 タスクとそれらがアクセスするデータをキャッシュあるいは口 一カルメモリに適合するサイズに分割し、 それらを各 PUに対して当該タスクを ¾g割り当 てすることによって、 マノ^プロセッサシステムを効率よく動力す目的プログラムを^^す るコンパイル;^;が、 特開 2004— 252728号に開示されている。 またマノ! ^グレイ ン並列処理の機能をサポートするチップマノ^プロセッサのアーキテクチャとしては、 特開 2001— 175619号に開示されている。
また、 電力消費の低 ¾υ¾ ¾の低減のため、 マルチプロセッサシステムにおいて各 PU の低 化カ泌須となるが、 個別のプロセッサに関して低 化する手法に関し、 様々な提 案が行われている。 例えば、 リアルタイム処理制約内でプロセッサの動作クロックを赚さ せ、 そのクロック周波数に応じた プロセッサに供^ Τる、 という周波数 ·¾£を動的に 制御すことにより低 ¾Λ化を する手法が、 特許第 3138737号、 特開 2004— 2 34126号で開示されている。
また、 画像処理など予め処理の手順力 S判明しているァプリケーションにおレヽて、 の 特性に合わせて C P Uや D S Ρなどの■の異なる複数のプロセッサを組み合わせ、 当該プ 口セッサ上での処理時間や消費電力情報を予め測定し与えておくことで、 当該情報により動 的に一連の処理を当該各プロセッサに割り当てる手法力 特開 2004— 252900号に 開示されている。
発明の開示
¾¾、 自動車のナビゲーシヨンシステム、 携帯電話、 デジタノレテレビなどといった、 画像 、 音声、 データベース情報など多様なデータを同時に扱う新アプリケーションが生まれる中 で、 様々な種類の入力データを、 当該データ夫々に最適な方法で同時に処理をするために、 プロセッサは複 の p uを搭 ^ることになると考えられる。 従来のマルチプロセッサ システムでは、 上記特開 2 0 0 4— 2 5 2 7 2 8号で開示されているように同じ構成の PU を複数搭載したホモジニァスなプロセッサシステムであった。
しかしながらこのように、 多様なアプリケーションが同時に多種の P U上で処理される将 来のヘテロジニアスマルチプロセッサシステムにおいて、 搭載する PUの と数に比例し て処理性能を得るためには、 P uの を考慮したプロダラムの並列ィ匕と配置力 s必須となる という問題がある。
また従来、 複数の P U上でプログラムを効率よく実 するためには、 小規模なプロダラム や処理シーケンスが常に固定的に実行できる 、 スケジユーリングを行うための実行時間 などのスケジュール清報を得るために、 一度プログラムを当該システム上で紫亍して処理時 間などを測定することが必要となり、 当該測定値を元に開発者が予め当該スケジユーノレ清報 を手動で^^する必要があり、 多大な労力と時間が必要となる。
この 、 事前に 理の内容やシーケンスが不明な一般のプログラムの場合、 特に規模が 大きなプログラムの # ^は、 当該情報を事前に手動で^^することが困難となる。 また PU の種類や数が増加した も同じく、 当該情報を手動で することが困難となる。
また、 の PUが搭載されるシステムでは、 プロセッサ全体の消費 ¾Λ増大力^^され るため、 特に携帯 などのモバイル^^、 雜で麵されるデジタノ レビなどに適用 することを考慮すると、 従来の O Sによる FV (動作周波数と, 制御のみならず、 各アプリケーションプロダラム内でのソフトウェアによる各 P Uの処理状況によりきめ細か レ、 ®¾g管理や動作周波数制御力 s必要となる。
特に、 処理性能を落とさずに消費 ®Λを嫌する必要がある。 また、 実時間処理を要^
るプログラムを ¾ίϊ·するに際しても、 時間制約を遵守しつつ、 電力を «する必要がある。 そこで本発明は、 多様な種頃の PUを搭載するマルチプロセッサシステムにおいて、 処理 ¾ ^となる入力プログラムから自動的に並列性を持つタスクを抽出し、 各 P Uの特性に合わ せて当該タスクを配置することで当該 P Uを効率よく動かし、 さらに当該 P Uの処理量を見 積もることで動作周波数 を; Μ化するコードを^^し、 目的プログラムに付加す るコンパィラ及ぴその: 化を可能とするマノ ^プロセッサシステムを «することを目的 とする。
したがって、 本発明により、 多種のプロセッサユニットを集度するマルチプロセッサシス テムにおいて、 当該プロセッサュニットを効率よく動作させるプログラムの分割配置および 制御コード (実行コード) を生成するコンパイラにより、 当該プロセッサシステムの性能を 最大限活用しつつ、 時間が最小となり、 かつ、 低 にて効率よく処理することが可能 となる。 また、 さらにはソフトウェア開発者がプロセッサユニットの構成を意識することな く、 短時間で効率良いプログラム作成が可能となる。
また、 入力プログラムをコンパイノける際に、 プロセッサユニットの構成に基づきコンパ ィラが予め事前の鍵時間を赚もり、 コンパイル時に処理 I醉を静的に決定できる部分に 関しては事前に処理手順を決定しておき、 また^ 時にならないと処理 I,が決定できなレヽ 部分に関しては、 コンパイラが実行時間を含んだ処理情報に基づレヽたスケジユーリングを動 的に行うプログラムを生成することで、 一般のプログラムを多種のプロセッサュニットで構 成されるマルチプロセッサシステム上で効率よく !¾0連できる。
また、 入力プログラムをコンパイラカ讀し、 事前に讀手順を決定した後に処理時間を 赚もり、 時間制約に财る当該処理時間の余裕度を見てプロセッサュニット毎に飄管理 や周波纖 I胸をきめ細かく行うことで、 電力を大きく赚できる。
また、 難のプロセッサユニットで構成されるマルチプロセッサにおいて、 節時間最小 となるよう入力プログラムを並列ィ匕しスケジューリングした後、 各プロセッサュニット間で 処理時間が最小となるよう、 プロセッサュニット毎にきめ細かく動作周波数制御及び 管 理を行うことで、 性能を損なわずに ¾Λを ¾¾ィ匕できる。
図面の簡単な説明
図 1は、 本発明の—実施形態を示す電源 ·周波数^^型のマルチプロセッサシステムのブロ ック図である。
図 2は、 電源電圧生成回路のブロック図である。
図 3は、 降圧回路のブロック図である。
図 4は、 供給 flffi選択回路のプロック図である。
図 5は、 クロック^回路のブロック図である。
図 6は、 クロックノ、。ルス選択器のブロック図である。
図 7は、 マノ! ^プロセッサシステムの他の例を示し、 fl^flffi ^^回路とクロック^^回路 を集約した電源 ·周波獎 51択型のマルチプロセッサシステムのプロック図である。
図 8は、 マルチプロセッサシステムの他の例を示し、 各プロセッサユニットの FV制御レジ スタを^した F V制御テーブルを有するマノ^プロセッサシステムのプロック図である。 図 9は、 F V制御によるプロセッサュニットの動作モードを示す説明図である。
図 1 0 aは、 ローカルメモリの F V制御を示し、 ローカルメモリ LMを複数バンクで構成し てバンク毎に F V制御を行う例を示 t¾明図である。
図 1 0 bは、 ローカルメモリの F V制御を示し、 ローカルメモリ LMを複数のァドレス空間 毎に F V制御を行う例を示す説明図である。
図 1 0 cは、 ローカルメモリの FV制御を示し、 複数バンクに設定したァドレス空間毎に F V制御を行う例を示す説明図である。
図 1 1は、 ローカルバス L B U Sをクロスバで構成した場合の電源制御の説明図である。 図 1 2は、 図 1 1に示したローカルバス L BU Sの構成図である。
図 1 3は、 F V制御による口一カルメモリ LMの動作モードを示す説明図である。
図 1 4 aは、 FV制御レジスタフォーマットを示し、 ローカルメモリ LMを 4バンクで構成 した場合のレジスタフォーマットを示す説明図である。
図 1 4 bは、 F V制御レジスタフォーマットを示し、 図 1 4 aと同じくレジスタの設定例を
示す説明図である。
図 14 cは、 F V制御レジスタフォーマットを示し、 他のレジスタフォーマットを示" η¾明 図で、 LMを 4バンク構成とし、制御 ¾ ^毎にアドレスを割り振った FV制御レジスタフォー マツトの例ある。
図 15は、 図 8に示した FV設定テーブルのフォーマツ卜の例を示す説明図である。
図 16は、 FV制御レジスタの ッビングを示すマルチプロセッサシステム全体のメモリマ ップを示す説明図である。
図 17aは、 FV制御レジスタアクセスの例を示し、 CPU0が DSPOの FV制御レジス タにアクセスする例を示す説明図である。
図 17bは、 FV制御レジスタアクセスの例を示し、 CPU0が DSP0の FV制御レジス タにアクセスする場合のオブジェクトコ一ドを示す説明図である。
図 17 cは、 FV制御レジスタアクセスの例を示し、 OSの A P Iを用いて FV制御レジス タを操作する場合のオブジェクトコードを示す説明図である。
図 18 aは、 タスクを並列処理する の F V制御の |¾¾を示し、 マクロタスクの並列菊 f 依存性を示すマクロタスクグラフである。
図 18 bは、 タスクを並列処理する # ^の F V制御の ¾ ^を示し、 F V制御を行わなレヽ (FULLモード) のガントチャートを示す。
図 18 cは、 タスクを並列処理する場合の F V制御の概念を示し、 C P Uを «して動作さ せる ^の FV制御の例を示すガントチヤートである。
図 18 dは、 タスクを並列処理する の F V制御の を示し、 C P Uを一時的に停止さ せる の FV制御の例を示すガントチヤートである。
図 19 aは、 リアルタィム制約時の F V制御を示し、 通常処理によるリアルタィム処理のガ ントチャートである。
図 19bは、 リアルタイム制約時の FV制御を示し、 CPUを^^して動作させる^の F V制御の例を示すガントチャートである。
図 19 cは、 リアルタイム制約時の FV制御を示し、 CPUを一時的に停止させる ¾ ^の F
V制御の例を示すガントチヤートである。
図 20は、 コンパイラの処理を示すフローチャートである。
図 21は、 入力プログラムの一例を示すソースコードである。
図 22は、 コンパイラが生成したタスク間の依存関係図である。
図 23は、 タスク · FV制御スケジユーリング結果を示す時系列的なチヤ一トである。 図 24は、 コンパイラが生成するコードの例を示し、 CPU0、 DSP0、 DRP0、 BRP1向けの コードを示す説明図である。
図 25は、 同じくコンパイラが するコードの例を示し、 CPU1、 DSP1、 BMP0、 BMP1 向けのコードを示す説明図である。
発明を実施するための最良の形態
以下、 本発明の一雄形態を、謝図面に基づレ、て説明する。
< 形態の全體成 >
図 1は、 本発明の一実施形態であるマルチプロセッサシステムの構成を示す。 図 1におい て、 マルチプロセッサシステムは、 複数の のプロセッサユニット (以下、 PUとする) 10〜17と、 これら^ [メモリ (以下、 SMとする) 18を主体にして構成される。 当該 各 PU10〜17は、 それぞれのバスインタフェース (B I F) 27を介し、 ローカルバス (L BUSとする) 19に接続される。 また、 SM18は LBUS 19に接続され、 各 PU 10〜17からアクセスすることができる。 当該各 PU10〜17は、 当該 PUに対し m¾g 及ひ ¾作クロックを供^" Tる ¾^¾ΒΕ 回路 (DCGEN) 20、 及ぴクロック^^ 回路 (CLKGEN) 21が されている。 なお、 本マノ!^プロセッサシステムは、 のプロセッサユニットで構成されたへテロジニァスマノレチプロセッサシステムの例を示す。 本雄形態では PUの觀と個数を、 2個の汎用処理プロセッサ (以下、 CPU) 10、 11と、 2個の信号処理プロセッサ (以下、 DSP) 14、 15と、 2個の動的 成可能 プロセッサ (以下、 DRP) 16、 17と、 及び 2個のビット演算処理プロセッサ (以下、 BMP) 12、 13で構成した例を示す。 なお、 上記 PUの觀ゃ数〖鉢魏形態で示した
限りではなく、 さまざまな構成を取り得る。 また、 従来の同種の PUのみによる構成 (例え ば CPUのみ 4個で構成) としても良い。 また、 本実施形態では、 DSP (0、 1) 14、 15と、 DRP (0、 1) 16、 17と、 BMP (0、 1) 12、 13を特定用途プロセッ サユニットとし、 CPU (0、 1) 10、 11を汎用プロセッサユニットとする。
また、 動的 成可能プロセッサ 16、 17は、 処理回路を動的に S«成することが可能 なプロセッサを指し、 限られたコア内で仮想的に回路を変更することができる。
上記各 PU10〜17は、 各 PUで処理されるプログラムやデータを一時的に保存する口 一カルメモリ (またはキャッシュ) (LM) 24及ぴ、 当該 PUに る觸Sffi (VL)や 動作周波数 (FL) を決定する周波数 (FV) 制御、 及び PU間の同期制御を行 うためのシステム制御レジスタ (R) 25を具 1"る。 なお、 ローカルメモリ (LM) 24 は、 他の PU及ぴ当該 LMを持つ自 PUからアクセス可能なグローバノレアドレスがマツピン グされている領域と、 当該自 PUのみアクセス可能なプライべ一トァドレスがマッピングさ れている領域に分割される。 なお、 L BUS 19に接続された メモリ (SM) 18はグ ローノ ルアドレスがマッピングされており、 複数の PUからアクセス可能である。 なお、 以 上は本発明における適用構成の一例に過ぎず、 H½の形態としてはこの限りでなレヽ。 例えば 図 1では表現されていないが、 LBUS 19には入出力処理、 割り込み^ I、 タイマ、 デバ ッグ回路、 等の周辺回路を必要に応じて接続することとなる。 また、 バスブリッジを介して 、 同觀または ¾^のバスを階層的に接続してもよい。
また、 各 PU10〜17で * ^される SM18には、 SM18に供^する供^ ¾圧 (VL ) や動作周波数 (FL) を設定して、 周波数 ·¾¾¾«Ε (FV) 制御を行うためのシステム 制御レジスタ (R) 181を具備する。 また、 前記 PU及び前記 SMを相互に赚するロー カルバス L BUS 19には、 LBUS 19に供糸^ Tる VLや F Lを設定して、 FV制御を行 うためのシステム制御レジスタ R191を具備する。 なお、 このシステム制御レジスタ (R ) 181に代わって、 各 PU10〜17のシステム制御レジスタ (R) 25のそれぞれに、 SM18及び LBUS 19の FV制御用のレジスタを設けても良レ、。 また、 システム制御レ ジスタ (R) 181は、 PU10〜17のいずれ力一つによって設定される。
なお、 上記 PU10〜17は、 一つのチップ (LS I) 上に構成された^を示すが、 P U 10〜 17を構成する複数の L S Iを結合し、 一つのチップまたはモジュールとしたもの であっても良い。
また、 SM18は、 プロセッサの觀毎 (CPU, DSP、 DRP、 BMP毎) に^"す るようにしても良く、 例えば、 後述する図 10 a〜図 10 cのように、 SM18の領域をバ ンクに分割し、各バンクをプロセッサの種類毎に^"することもできる。 あるいは、 SM1 8の一部を複数の P Uで共有するようにしても良レ、。
<«1Ξ· Ι波数可変回路 >
次に、 各 PUに纖された飄 «|¾ ^回路 (DCGEN) 20及びクロック 回路 ( CLKGEN) 21の構成について説明する。
図 2は、 DCGEN20の構成を示す。 DCGEN 20は外部より供給された通常の A 電圧 (VD) 22を予め指定した複数の供給電圧 (VL) 205に降圧 (または昇圧) する 回路 (DCCNV) 206、 した複数の当該 より PUへ供糸^ Tる «Εを選択す る供^ 回路 (VDSEL) 203、 及び顧 ®Eを遮 H"る回路 (後述) で構成す る。
なお降圧 ほたは昇圧) 回路 (DCCNV) 206は、 複数の 降下部を含み、 例えば 、 図 2のように、 fl¾«SVDをそのまま供糸^ Tる回路 22' と、 ¾¾!®£VDを 3Z4に 低下する降圧回路 (LVCNV) 201と、 mSimffiVDを 1/2に低下する降圧回路 (L VCNV) 202と力ら構成される。
各 PU10〜17は、 当該 PUが持つシステム制御レジスタ (R) 25内の FV制御レジ スタに設定された FV (義周波徹ぴ義 モードにより制御線 (DCCL) 204 を介して供^ 選択回路 (VD S E L) 203を制御することで、 降圧回路 (DCCNV ) 206で^^された複数の «ΕΕのうちいずれかひとつを選択し、 当該職された供^ V Lが対応する P U 10〜 17に供給される。 なお、 F V制御レジスタはシステム制御レジ スタ 25内の所定の領域に設定されるものである。
¾¾¾電圧を降圧する回路 (LVCNV) の構成の一例を図 3に示す。 上記図 2の降圧回路
LVCNV201, 202は、 供^ «E (3/4VO) を決定する参照 回路 (VR EF) 207、 及び参照 ®1Ϊで指定した ¾11まで降圧し PUに対し fl¾を供^ Τ5«¾¾^¾ 回路 (VG Ε Ν) 208で構成され、 M± 208の出力が図 2の供 ^sra^回路
203に入力される。
降圧回路 LVCNVの出力電圧 (VCNV) は、 参照電圧を決定する参照電圧生成回路 ( VREF) 207内の nMOSFETの段数により決まり、 F、V制御レジスタで指定する電 圧を供^ Tるよう、 L V CNVの構成は決定される。 以上の回路で降圧した複数の «ΕΕから 、 PUからの制御線 204により指定された を選択し、 各 PU10〜17へ出力 (20 5) する。
図 4は、 供給 SEES択回路 (VDSEL) 203の構成の一例を示す。 供給 SE1択回路 (VDSEL) 203は制御信号デコード部 2031と 選択スィツチ 2032で構成す る。 また、 PUのソース ^合部にしきレ 直の高い nMOSFET 209を挿入すること で、 当該?11の¾«断時に ¾ίτるリーク を,することができる。 なお、 図 3、 図 4 の構成ば、 降圧回路 LVCNVの機能を実現するための一つの構成に過ぎず、 他の様々な電 源 ¾¾¾¾回路^;を適用しても良い。
続いて図 5に、 クロック生成回路 (CLKGEN) 21の構成の一例について説明する。 CLKGEN21は、 内部クロック FC (23) を当該内部クロックの 1 2、 1Z4など 内部クロック F Cを 分の 1に«する分周回路 212、 213、 及び分周^^した複数 のクロックから、 当該 PUへ供^ Tるクロック (FL) 216を選択する、 クロックノヽレス 選択器 (CLKSEL) 214で構成する。 なお、 内部クロック FC (23) は、 PLL ( Pha s e Lo cke d L o o p) 回路 211にて、 外部から入力されたシステムクロ ックを、 指定した遁倍率で通倍することで «される。
ク口ッタノ ノレス選択器 (CLKSEL) 214の構成の一例を図 6に示す。 CLKSEL 214は入力制御信号 CKCLのデコード部 2171と、 クロック信^!択部 2172で構 成する。 各 PUは、 当該 PUカ持つ FV制御レジスタのモードにより制御線 (CKCL) 2 15を介して DCSEL214を制御することで、 された複数のクロックより指定され
た FL力 S職され、 当該クロック FL 216の供給を受ける。
なお、 上記図 1に示した構成の他にも図 7に示すように、 fl¾T、®£、 クロックパノレスを変 換する回路 (DCCNV206、 CLKCNV217) を複数 PU (または PU全体) に対 し各 1個付加し、 各 P U側に^^した複 ^の ¾¾g®BE及びク口ックパルスを選択する回 路 (VDSEL203、 CLKSEL214) を付加する構成としても良い。 図 7の例では 、 2組の ¾¾|®Ξ4 ^回路 206とクロック 回路 217が、 それぞれ 4つの PUに とクロックを供^" Τる を示す。
このように、 fl^flffi及びクロックノ ルスを^^、 る回路は様々な構成を取り得る ことができ、 その構成は以上に示した限りではない。 例えば、 を変換する回路 DC CNV206を複数PU (または PU全体) に対し 1個付加し、 クロックパルスを する 回路 CLKCNV217は PU側に PU毎に付加する構成とすることもできる。 また、 例え ば、 クロックパノレスを^^する回路 CLKCNV217を複数 PU (または PU全体) に対 し 1個付カロし、 電源電圧を変換する回路 DCCNV206は PU側に PU毎に付加する構成 とすることもできる。 また、 例えばチップ内に DCCNV206を搭載 "l^f、 チップ外部に て生成した複難類の «EEを入力し、 03£乙にて所望の供^«£ し205を選択 供給するキ冓成としてもよレ、。
また、 FV制御モードを設定する手段として、 図 1や図 7に示した各 PUが当該 PUの F V制御を行う FV制御レジスタ (システム制御レジスタ (R) 25) を持つ構成とする他に 、 図 8に示すように各各 P U 10〜 17の F V制御モードを一括して! ^する F V制御テー ブノレ (FVTBL) 26を LBUS 19に接続する構成としてもよレヽ。 図 8においては、 図 1においてシステム制御レジスタ 25に含まれていた FV制御レジスタを、 ローカルバス L BUS 19に接続された FV制御テーブル 26とし、 勸したものである。
FV制御テーブル (FVTBL) 26は各 PU10〜: 17からアクセス可能であって、 共 有メモリ SMの一部に設定されてもよいし、 メモリ SMから独立したメモリ (またはレ ジスタ) で構成されても良レ、。
ぐバス I F>
以上のように、 各 PU10〜17は を個別に設定することが可能なため、 当該 P Uと,された LBUS 19間においては、 信号の ¾Eレベルが異なることになる。 そこで 、 PU10〜17と LBUS 19間に纖されたバスインタフェース (B I F) 27は信号 レベル変換回路 (図 略) を具備し、 ノくス LBUS 19と PU10〜: L 7間の信号レベル 変換を行う。
< PUに対する電圧 ·周波数モードの与え方 >
次に、 回路 (DCGEN) 20及ぴクロック ^^回路 (CLKGEN) 21 で賊する爾 «!£ (VL) 205及ひ 作クロック (F L) 216を決定するノ、一ドゥエ ァ機構について説明する。
飄 ®E 回路 DCGEN 20及びクロック 回路 CLKGEN 21の動作モード ( る VL、 FL値) は設計時に予め決定されており、 各 PUは flfilS回路に対し当該 PU が具 {§·する FV制御レジスタの値によって制御線 DCCL、 CKCLを介して指定する。 V L、 FLの設定方法の詳細に関しては後述する力 コンパイラが FV制御レジスタをセット する制御コードを生成し、 当該コードを実行する汎用プロセッサ C PU0または CPU 1が 、 メモリマップされた FV制御レジスタにアクセスして値を書き換える。
本実施形態における PU10〜17の FVモードは、 VL、 FLの組み合わせを 4段階 ( F V制御レジスタ内の 2ビット) として設定する。 図 9に PU10〜17の動作モード一覧 を示す。 つまり、 F V制御レジスタの 2ビットの値が "00" におレ、ては VL = 0、 FL = 0の SEE ·周波 断となる OFFモードに設定され、 上記レジスタ値が "1 1" において は、 VL = VDでシステムの と^ ffi、 FL = FCでシステムの動 ί乍周波数と^ ffiと する F U L Lモードが設定される。
またレジスタ値が "01" では VL= (1/2) VD、 FL= (1/4) FCとなる LO Wモードに設定され、 レジスタ値が "10" では VL= (3/4) VD、 FL= (1/2) Fとなる MI DDL Eに設定される。 なお、 VL · F Lモードの数、 また VLi直 · FL値は 、構築するシステムの形態やアプリケーション、 するプロセス技術、 等により、 決定さ れる。
く P U内の部分的な F V制御 >
以上では F V制御を とする範囲を P U全体とし、 一括で F V制御モードを設定すると して説明したが、 PU10〜17に搭¾^るローカルメモリ (LM) や FV制御レジスタ、 また他のプロセッサ周辺回路に対し、 夫々異なる FV制御モード設定を行っても良レ、。 これ は、 F V制御レジスタのビットフィールドを拡張し、 被 F V制御部に対応した F V制御モー ドを設定するフィ一ノレドを持たせることで できる。 例えば、 口一カルメモリ LMまたは システム制御レジスタ (R) 25といったデータ保持が必要な回路部に対しては、 独立に F L、 VLを設定する画とすることが考えられる。 つまりローカルメモリ LMや FV制御レ ジスタに対し独立して FV制御を行うことで、 ttrlEPUの FVが遮断状態としても、 当該し M及び Rのデータ力 され、 また ¾ PU力 S遮断状態においても、 他の PUから当該 PU の LMに対しアクセスすることも可能となる。
またさらに、 ロー力ノレメモリ LMの構成により FV制御 ¾ ^を複 ^定することができる 。 図 10a〜図 10cにローカノレメモリ LMに ¾~Τる F V制御;^;を示す。
例えば、 図 10 aに示す通りローカルメモリ LMをバンク構成とし、 各バンク毎 (Ban kO〜: Bank 3) に対してそれぞれ FV制御を雄する。 このため、 各 Bank0〜3に はそれぞれ «¾ΕΒ1択回路 (VD SEL) 203力 S接続される。
つまり、 データの保持が必要なバンクのみ通常電圧、 またはデータ保持に必要な最低限の flffiを供給し、 当該バンク以外の他のバンクは を遮 fl"ることで ¾Λを削減すると共に 、 データの退 理を行う必要がなくなるため?11の電¾断時から通常動作時への復帰を 高速に行うことが可能となる。
またさらには、 図 10bに示す通り、 ローカルメモリ LMのアドレス空間を一定の連続し たアドレス空間 (Ar e a l〜Ar e a 4) で分割し、 当該空間単位で FV制御を行うこと で、 不要なアドレス空間 (記憶領域) に¾"1 "る飄を遮 »ί"Τることで を削減できる。 このため、 ローカルメモリ LMの各アドレス空間 (Ar e a l〜Ar e a 4)毎に供給電 ffi 択回路 (VDSEL) 203が嫌される。
また、 図 10cに示す通り、 口一カルメモリ LMがバンク構成としたとき、 各バンク (B
a n k 0〜3) に跨る一定の したァドレス空間 (Ar e a l〜Ar e a4) で分割した 単位で FV制御を行う。
このため、 ローカルメモリ LMの各 B a n k 0〜 3に跨る各アドレス空間 (Ar e a l〜 Ar e a 4) 毎に供 ^®SE選択回路 (VD SEL) 203カ観される。 この構成により、 バンク構成を活用しメモリアクセスを高速化するメモリインタリーブを しつつ低 化 が可能となる。
なお、 ローカルメモリ LMは、 機能的に当該 LMを搭 る PUのみからアクセスできる 部分 (非 メモリ) と、 当該 PUのみならず他の PUからもアクセス可能な部分 (^[共 有メモリ) に分割して実装してもよく、 以上の 2つのメモリ機能単位別で F V制御を行うこ とも考えられる。 このため、 図示はしないが、 上記非 メモリと^ メモリの領域毎 にそれぞれ供糸^«11選択回路 (VDSEL) 力 S赚される。
また、 図 10 a〜図 10 cに示したメモリ分割 は、 Sfit己メモリ機能単位、 また メ モリ SMなど、 システム力 s搭 る様々なメモリ 能 立単位に対しても、 同様に適用す ることが可能である。 例えば PU外に配置した * ^メモリ SMに対しても複数バンク構成と し、 各バンクに対するアクセス ®¾やシステム状態 (スタンバイ、 スリープなど) に対応し て、 別途 FV制御を行うようにしてもよい。
例えば、 図 10 aの構成をローカルメモリ LMに代わって雜メモリ SM18に適用し、 * ^メモリ SM18をバンク (Bank0〜3) に分割して、 各バンク毎に供 ^Mffil択回 路 (VD SEL) 203を接続することでバンク単位で ®Λ制御を行うことができる。 また 、 図 10 bの構成をローカルメモリ LMに代わって^"メモリ SM18に適用し、 メモ リ SM18のァドレス空間を一定の したァドレス空間 (Ar e a l〜Ar e a 4) で分 割し、 当該空間単位で FV制御を行うことで、 不要なアドレス空間 (記憶領域) に ¾ "る電 源を遮 Slf-Tることで ®Λを削減できる。 また、 図 10 cの構成をローカルメモリ LMに代わ つて メモリ SM18に適用し、 各バンク (Bank0〜3) に跨る一定の; iS^したアド レス空間 (Ar e a l〜Ar e a4) で分割した単位で F V制御 («Λ制御) を行うことも 可能である。 なお、 図 10 a〜図 10 cを^ *メモリ SM 18に適用する^^には、 図中 「
LMJ を 「SM」 と読¾ えるものとする。
<ローカノレメモリ LMに ¾ "る F V制御モード〉
? 制御纖を?!;內の複数部分 (機能部分) とする例として、 ローカルメモリ LMに対 して PUとは独立して FV制御を行う方法を以下に説明する。 本例ではローカルメモリ LM は図 10 aで示したように 4バンク (Bank0〜3) で構成し、 FV制御 は PU及び LMバンク毎とする。
PUの FV制御モードは上記図 9に示した通りである。 図 13にローカルメモリ LMの F V制御モードの一覧を示す。 LMの動作モードに関しては¾ がメモリとなるため、 本 ¾5¾ 形態では通常メモリアクセス及びデータ が可能である通 ¾作モード (VL = VD、 F L = FC、 レジスタ値" 11") と、 メモリアクセスは不可であるがデータを麟可能なデー タ保持モード (VL=lZ2VD、 FL = 0、 レジスタ値 " 01") と、データ麟を行わず 完全に廳を遮 る、 断モード (VL=0、 FL = 0、 レジスタ値 " 00") の 3モ ードとする。 続いて、 ローカルメモリ LMを図 10 aまたは図 10 cのように複数のバンクで構成し、 バンク毎の F V制御に対応した F V制御レジスタのフォーマットを図 14 aに示す。 本例で は、 各 PU10〜17毎に、 FV制御レジスタ 1250を一メモリアドレスにマップし、 そ のフィールド (マップしたアドレス) で制御対象毎に FV制御モードを決定する。 1フィー ルドが図示のように 32ビットの場合、 つまりビット 1、 0を PUの F V制御モード (PU FV)ゝ ビット 3、 2を LMバンク 0 (BankO) の FV制御モード (LM0FV)、 ビッ ト 5、 4を LMバンク 1 (Bankl) の F V制御モード (LM1 F V)、 ビット 7、 6を L Mバンク 2 (B a n k 2) の F V制御モード (LM2 F V)、 ビット 9、 8を LMバンク 3 ( Bank 3) の FV制御モード (LM3FV) として、 所望のフィールドをアクセスし、 図 13のテーブルからローカルメモリ LMの動作モードを決定し、 FV制御を行う。 なお、 P Uの動作モードは、 図 9のテープンレに基づいて決定する。
FV制御レジスタ 1250の設定例を図 14bに示す。 本例では、 PUのモードは図 14
aの PUFVに MI DDLE (" 1、 0") が設定され、 ローカルメモリ LMのバンク 0のみ を活性化し通^!)作させるよう LMO F Vには" 1、 1" 力 S設定され、 LMのバンク 1はデ ータ麟モードとなるように LM1 FVには" 1、 0"力 S設定され、 バンク 2及びバンク 3 は LM2FV、 LM3FVに" 0、 0" を設定し fl¾断としている。
また、 上記の他にも F V制御レジスタに対し、 制御 ^毎にァドレスを割り振る構成とし ても良い。 例えば、 図 14 cで示すように F V制御対象毎にレジスタをメモリアドレスにマ ップした FV制御レジスタのフォーマットを示す。 図 14cでは、 アドレスの順に PUの F V制御モードと LMの F V制御モードを示す PUF V、 LMO F V〜LM3 F Vが欄され 上記図 14 aで示したように、 F V制御レジスタのビットフィールドで淛御 ¾ ^の F V制 御モードを切り替える^^、 当該フィ一ノレドの値を設定するためのビット演算が必要となる 力 図 14 cの構成では直接当該制御対象レジスタがマップされたァドレスに直接アクセス すれば良く、 FV制御レジスタの設定に関する命令数を肖 U減することができる。 しかしその 反面、 アドレスリソースが図 14 aと比較し多く必要となる。 以上では、 各 PUが持つ FV制御レジスタを設定することで、 PUゃLMのFV制御モー ドを設定する例として説明したが、 図 8で説明したように各 P U 10〜 17の F V制御モー ドを示す FV制御レジスタを、 ローカノレバス L BUS 19に接続された FV制御テーブル ( FVTBL) 26として持たせる では、 図 15に示すように当該 F VTBLを構成する 図 15は、 図 8で示した FV制御テーブル FVTBLのフォーマットを示す。 当該 FVT BLの 1ラインは、 PU番号(PUN 250)、 当該 PUの FV制御モード (PUFV251 )、 LMの FV制御モード (LM0FV252、 LM1 FV253、 LM2FV254、 LM 3FV255)、 後 るローカルバス L BUSの FV制御モード (BUSFV) に対応し、 任意の PUに対する当該 PU、 LM、 L BUSの FV動作モードを決定できる。
そして、 CPU0等がこの FV制御テーブル FVTBLを読み込んで、 各 PU10〜17
毎に PUと口一カルメモリ LM (各バンク毎) 及びロー力ノレパスの FV制御モードを決定し 、 ^^回路 (DCGEN) 20及びクロック 回路 (CLKGEN) 21を制御する くバスに ¾ ~る ¾¾¾制御〉
また、 各 PU10〜: I 7を接続するローカルバス (LBUS) 19に対しても、 マルチプ 口セッサシステムの機能 立単位の FV制御として、 部分的に観制御 m )するこ とができる。
例えば、 P U 10〜 17の何れかが 乍時で β¾断されている 、 該当する P Uの バスインタフェース (B I F) はアクセスきれないため、 当該 B I Fの電¾¾1断を行うこと ができ、 その結果リーク β¾を肖 I滅することができる。 また、 バス構成をクロスバとした場 合、 当該 ρ υに接続するバスを決定するスィッチ部の飄を制御し遮 f "ることもできる。 図 11に、 クロスノ^ t成のバスに る ¾ ^制御の を示す。 例えば、 DSP0 (14 ) を 断状態とし DSP0に ¾~Τる通信トラフィックが無いとすると、 DSP0に付随 する B I F (27)、及び DSP0に対し他の PU及び^ *メモリ SMからのバスネットヮー クを赚するスィッチ群 (192)、 に る飄も遮 る。
これにより、 «) 態となつた DSP0のスィッチ群 192の 消費を肖 IJ減できる。 図 12に、 クロスパネットワークに対する ®f、制御を実現するための回路構成を示す。 な お本図では、 CPU0、 DSPO, DSP 1及び^"メモリ SMを、 クロスバネットワーク で構成されたローカルバス L BUS 19に纖した構成を示す。 本回路は、 各 PU10〜1 7が送出したパケットデータを續し、 図 11に示したスィツチ群 192の制御を行うネッ トワーク制御部 NWCRLと、 当該バケツトデータの送出元と送出先のネットワークを接続 するネットワークスィッチ部 (NWSW) で構成する。
ネットワーク制御部 NWC RLは、 PU10〜17が送出したパケットを新しパケット 処理の優先度を決定する SHCTL195と、 SHCTL195により優先度決定された当 該パケットを選択するセレクタ (SELC) 196と、 当該パケットを一時的に するキ ユー 197と、 当該パケットを角浙し送出先及び送出元のネットワークを接続するセレクタ
スィッチ 191〜 194を制御する SWCT L 198から構成される。
また、 ネットワークスィッチ NWSWは各 PU間のネットワークを するセレクタスィ ツチ (SEL) 191〜: L 94で構成する。
各 PU10〜17とネットワーク制御部 NWCRLには、 廳 回路 DCGENと職 的に接続するスィッチ (DCSEL) 199がそれぞれ設けられる。 そして、 スィッチ (D CSEL) 199から各 PU10〜17及び B I F27と、 当該 PUが接続されるセレクタ スィッチ 191〜 194に対し電源供給を行う。
例えば D SP0を 断状態とし、 D S P 0に対する通信トラフィック力 S発生しなレヽと すると、 D S P 0に付加したスィツチ D C S E L 199は、 当該 D SP0のみならず当該 D SP0に^^された B I F27及び、 当該 DS P 0へのネットワークを選択するセレクタス イッチ SEL1 (192) に る ®¾gを遮^る。 これにより、 ®«断状態とした DS P 0のみならず、 周辺の回 ¾ ^の ¾Λを遮 f ^ることで ®Λ消費をさらに削減できる。 なお 、 ネットワーク全体を待獄態、 つまり 断状態とするときは、 NWCRLに対しても 当該 NWCRLへ ¾ ^供糸^ Τるスィッチ DCSEL 199により、 断を行う。
<F V制御レジスタの設定方法〉
次に、 FV制御レジスタ 1250を設定する具体的な方法について説明する。 なお以下で は、 レジスタフォーマットを図 14 aの構成として説明する。
各 PUの FV制御レジスタ 25には、 全 PUから一意にアクセス可能なグロ一ノくノレアドレ スがそれぞれ割り振られ、 コンパイラが予め決定したタスク管理用の PU (つまり、 スケジ ユーラまたは OSを る PU) カ当該アドレスにアクセスし、 当該レジスタ値を変更す ることで F V制御モードを設定する。
図 16にマルチプロセッサシステム全体のグローバルアドレス空間マップを示す。 本実施 形態では、 先頭アドレスより所定のアドレスまで PU自身のローカルリソース (LM、 FV 制御レジスタ 1250を含むシステム設定レジスタ) が見える領域、 ブロードキャスト (B C) 領域を定義する。 BC領域に関しては後财る。 そして、 BC領域の後に各 PU毎のァ ドレス空間を割り振り、 さらに各 PU内のアドレス空間にローカルメモリ LMアドレス、 及
びシステム設定レジスタアドレスを割り振る。 FV制御レジスタは、 前記システム設定レジ スタァドレス内の 1アドレスを持ち、 当該ァドレスをアクセスすることで FV制御モードを 設定できる。 なお図 16では、 CPUO、 CPU1、 DSPO、 DSP 1, の順に先頭空間 よりアドレスがマップされ、 例えば DSPOの FV制御レジスタを設^る際は、 アドレス "DSPO— FVREG— ADRS" をアクセスすることとなる。 また、 当該空間の各 PU 領域の後には メモリ SMのァドレスを割り振る。
F V制御レジスタの設定は、 コンパイラが決定したタスク管理用の P Uがレジスタァクセ ス用のオブジェクトコードを ¾ί し、 ローカルバス L BUS 19を介して制御先 PUの FV 制御レジスタをアクセスすることで行う。 コンパイラが当該オブジェクトコードを生成する 具体的な方法に関しては後述するが以下簡単に説明すると、 コンパイラがタスクを複数 P U に割り当てる際、 当! ¾t数の PUをグノ "プ化し、 グノ プ内のタスクの起動や同期処理を 行うタスク管理 PUを決定する。 コンパイラは、 当該管理 PU上で FV制御を行うコードを 当該管理 PUは当該コードを菊亍することで、 グ ^プ内の PUの FV制御を行う
。 なお、 上記コンパイラは図示しなレヽ計難上で節されるものである。
図 1 7 aに FV制御レジスタを設定する例を示す。 コンパイラが CPUO、 DSPO、 D
SP 1をグノ ~プ化し、 CPUOがタスク管理を行い、 当該 CPU0が DSP0に対し FV 制御を行うとする。 CPU0は、 コンパイラが した FV設定を行うオブジェクトコード を^ frTることで、 DSP0の F V制御モードを設定する。
図 17 bに DSP0の F V制御モ一ドを設定するオブジェクトコ一ドの例を示す。 本例で は DSP0內の FV制御レジスタのアドレスを予め定義しておき、 CPU0内の汎用レジス タに当該 FV制御レジスタのアドレス、 及び FV設定値を 差し、 当 定値を当該アドレ スで指定されたレジスタに書き込むことで、 設定を完了する。
なお、 FV設定を行う方法として、 タスク管理 PUがレジスタを直接アクセスするォブジ ェクトコードを るとした力 例えば、 図 1 7 cに示すように、 OSが各 PUの FV動 作モ一ドを管理するとした^^では、 O Sの F V制御用 A P Iをコーノ ることで、 O Sの 管理下で P Uの F V制御モード¾定を行うことができる。
なお、 システム全体の F V制御用レジスタを設け、 このレジスタ内にすベての P U 1 0〜 1 7の F V制御モードを設定するレジスタを設けて、 各レジスタにモードを設定すると、 全 PU 1 0〜1 7の F Vモードが自動で設定される謹を持たせても良レヽ。 例えば、 図 8の F V制御テーブル 2 6のように全 PU 1 0〜: 1 7で共有するレジスタを設け、 当該レジスタを JE fすることで、 全 PU 1 0〜1 7の FV制御モードを変更することが可能となる。
また、 当該システム全体の制御用レジスタに測処理 PU群(C PU)、専用麵 PU群 ( D S P、 DR P、 BMP) など、 プロセッサの «に対応して、 当!^^ごとの PUについ て F Vモードを同期して設定する複数の F V制御レジスタを設けるようにしても良い。 この 図 8の F V制御テーブル 2 6にプロセッサの種類毎に F V制御レジスタを設け、 各 C PU、 D S P、 DR P、 BMP毎に F V制御レジスタを * ^することにより、 一つのレジス タを変更することにより、 プロセッサの «毎に F V制御モードを変更することができる。 ぐ B C領域 >
続レ、て、 上記図 1 6で示したメモリマツプの先頭領域に設けたブロードキャスト (B C) 領域について、 以下に説明する。 当該 B C領域は書き込み専用の領域であり、一 PUが当該 B C領域の一アドレスに対しデータの書き込みを行うと、 当該アドレスに予め対応させた全 PUの各 LMエントリに当該データを、 ローカルバス L BU S 1 9を介して同時に書き込む 。 これにより、 全 PUで贿するデータを同時に各 PUのローカルメモリ LMが持つことと なり、 各 PU 1 0〜1 7は共有メモリ SMにアクセスしなくとも高速に LM上の当該データ にアクセスすることが可能となる。
また、 F V制御などのシステム制御を行うに際しても、 当該ブロードキャストを行うこと で全 PUに対し一斉に制御情報を ることが可能となる。 また、 PU範囲を指定するマ スク情報を饼せてブロードキャスト送信することで、 P uの範囲を限定してデータ^リ御情 報を 計るマルチキャスト機能を親することも可能である。 この結果、 例えばコンパィ ラが、 あるタスクを並列処理する複数 PUで構成する PUグ プを定義する齢、 当該 P Uグ プ内で一斉にタスク処理を開台したり、 F V制御を 亍したりすることが可能とな り、 システム全体のスループットが向上する。
くタスク処理時の F V制御!^ >
次に、 図 18 a〜図 18 dを用いて各 PU10〜17におけるタスク処理時の
動作周波数 (FV) 制御方法の Hfe について説明する。 各 PUで Hfrf"るタスク (プロダラ ム) は、 後 るコンパイラによって入力プログラムから^される。 つまり、 当該入カブ ログラムは、 ま -f^izi るコンパイルにより、 当該プログラムの構造を することで、 代 入文のみからなるベーシックブロック (BB)、 繰り返しプロック (RB)、 サブルーチン ( SB) といった ¾ ^が大きなステートメント 'ブロックをマクロタスク (ΜΤ) として分害 ij する。 本例では、 3個のマクロタスク MT 301〜303に分割されるとする。 ここで、 マ クロタスクは、 入力プログラム (ソースコード) を複数の粒度の単位ブロックに分割したも のである。 つまり、 マクロタスクに分割することで、 サブ ^チン等の粗 ¾ ^タスク間の並 歹 IJ処理を利用するマク口データフロー処理、 ノトプレベルの並列処理である中 並列処理 に、 s ^プロック内部のステートメントレベルの並列性を利用する 並列^ aとを階 層的に組み合わせて並列処理を行うマノ グレイン並列処理を行う。 また、 本魏形態では 、 プログラムの構成要素をマクロタスクとし、 マクロタスクの構成要素をタスクとし、 タス クを PU10〜17に割り当てるものとする。
続いて、 当該マクロタスク MTの任意の PUにおける演算コスト等の特 14情報を算出する ことで、 当該マクロタスク MTをどの PU上で ¾frTるかを決定し、 また当該マクロタスク MT間のデータ依存性^ ^御依存性を滅することで、 タスクの Hffll辭を決定する。
図 18 aは、 タスク間の並列実行依存性を示したマクロタスクグラフである。 本グラフは 、 マクロタスク MT1 (301) とマクロタスク MT2 (302) は同時に 亍できること を示し、 さらにマクロタスク MT3 (303) は、 マクロタスク MT1 (301) 及ひ TVIT 2 (302) の実行が終了後に、 実行できることを示している。 また本例では、 マクロタス ク MT1は PU10 (CPU0) に、 マクロタスク MT2は PU12 (BMP0) 12に、 マクロタスク MT3は PU10 (CPU0) に配置される。
以上のようにスケジューリングされたマクロタスクを通常処理 («!£·周波 ¾ ^御なし) したときの処理ガントチャートを図 18bに示す。
図 18 bにおいて、 マク口タスク MT 1と MT 2は並列 Hi亍可能なため、 MT 1は C PU (CPU0) にて (305)、 MT2は BMP (BMP0) にて (306) 同時に処理が開始 される。 通常処理時は CPU、 BMP共に される miBま通常の VD、 また動作周波数も 通常の FCが供給されている。 本例では、 CPUにおけるマクロタスク MT1の処理サイク ノレ数は、 BMPにおけるマクロタスク MT 2の^ サイクル数より小さいため、 CPUにお けるマクロタスク MT1の処理 (305) 力 BMPにおける MT2の処理 (306) (こ先 行して終了する。
CPUはマクロタスク MT 1の処理 (305) を終了したため、 次にマクロタスク MT 3 を処理 (307) することになるが、 マクロタスク MT間の依存関係から BMPにおける M T 2の処理 (306) が終了するまでは、 CPUにおいて次に処理すべきマクロタスク MT 3を実行することができない。 そのため、 CPUは BMPでのマクロタスク MT 2の処理が 終了するまでアイドル状態となる。 当該アイドル状態においても、 CPUに対しては通常の ¾¾S¾EVD及びクロック F Cが 合されているため、 余分な ®Λを消費することになる。 そこで以上を解決する一方法として、 CPUにおいてマクロタスク MT 1を frTる際に 、 BMPがマクロタスク MT 2の処理に必要とする時間と、 CPUで るマクロタスク MT1の処理時間が等しくなるよう、 CPUの動作周波数を通常時 (FULLモード) より も謹させる LOWモード(図 9の 1Z4FCを供糸^ Tるモード) で,画する (308)。 つ まり、 BMPを通常時の FV制御モード (FULL) で駆動する一方、 〇?11の ¥制御モ 一ドを L OWモードとし、 処理が早く終了する方の P Uの動作周波 ¾¾ HS^し、 並列処理 を行う P U間で F V制御モードが異なるように F V制御レジスタの設定を行う。 本手法によ る FV制御適用時のガントチャートを図 18 cに示す。 コンパイラは、 CPU (CPU0) におけるマクロタスク MT1の処理サイクノレ^ ¾ぴ、 BMP (BMP0) におけるマクロタ スク MT 2の処理サイクノ^:を^^もることで、 双方の S時間が等しくなるよう C P の 動作周波数を決定する。 この結果、 CPUの動作周波数が iS^されるため、 当該 PUに る « «BEVLも ig^することが可能となり、 消費 を: il化できる。
つまりこの例では、 マクロタスク MT1について、 〇?11の 制御モードを図9の 「L
OWモード」 に設定し、 並列的に処理が行われる BMPの FV制御モードを 「FULL」 に 設定する。
また、 上記図 18bの C PUアイドル状態を解決する別の方法として、 C PUにおけるマ クロタスク MT 1の処理 (309) が終了した時点で、 . C P Uの 及ひ 作クロック の供給を遮断し待 Κ態とする (310)。つまり、 CPUがマクロタスク MT1の処理を完 了すると、 ?11の 制御モードを図9の 「OFF」 に設定する。 そして、 マクロタスク MT 3の開始時に、 FV制御モードを 「FULL」 に設定し、 処理を再開する。 本手法によ る F V制御適用時のガントチヤートを図 18 dに示す。
図 18 dにおいて、 CPUによるマクロタスク MT1の処理は BMPにおけるマクロタス ク MT2 (306) より先行して終了するが、 当該終了時点で CPUを待纖態 (OFF) とし、 BMPがマクロタスク MT 2の (306) が終了した時点で再び C PUを通常の fl^flffi及 Ό¾¾作クロックを供糸^ Τることで通常状態に復帰させ、 マクロタスク MT 3の処 理 (307) を開始する。 この結果、 CPUをアイドノレさせることなく動作が停止するため 、 消費 ¾Λを «できる。
このように、 プログラム (タスク) をコンパイルする時、 PUの構成に基づきコンパイラ が予め事前の処理時間を!^もり、 コンパイノレ時に処理 ιϋΫを静的に決定できる部分に関し ては事前に達手順を決定し、 PU毎にきめ細かく動作周波辦嗍及ぴ飄管理を行うこと で、 マルチプロセッサシステムの性能を損なわずに を 化することが可能となるので ある。
くタスク処理時 (リアルタイム制約時) の FV制御 〉
以上では、 マクロタスク (ΜΤ) の ^条件が他のマクロタスク ΜΤに依存する^^の F V制御方法を説明したが、 他にもタスクがある一定時間内に処理すべき制約を持つ、 すなわ ち図 19 aで図示するような、 当該タスクの処3¾限 (許容時間) が決定されているリアル タイム処理タスクを^とした F V制御方法も考えることができる。
図 19 aで例示したマクロタスク (MT1) 311では、 「FUL L」モード、つまり通常 の « βΕΕ及びクロック周波数で動作する CPUで処理した:^、 処糊限 (De a d 1 i
n e) よりも先行して鍵が終了する。 この 処理が終了した時点で CPUはアイドル 状態となるが、 本来の処理期限に対して余裕があるため、 処 ffl限制約内で CPUの動作周 波数を赚させる (312) ことが可能となる。
本手法による FV制御適用時のガントチャートを図 19bに示す。 コンパイラは処理期限 までに処理を完了可能な動作周波数を貝賴もり、 図示のように CPUの FV制御モードを 「 LOWj モードに決定する。 その結果、 供糸 «EVLも籠することができ、 消費 を最 適化できる。
また、 同様にマクロタスク MT 1の処理 (313) が終了した時点で C P Uの «Μ¾ひ!!] 作クロックを遮断する (314) ことで、 消費 ¾Λを観するようにしてもよい。 本手法に よる FV制御適用時のガントチャートを図 19 cに示す。 この場合、 CPUは 「FULL」 モードでマクロタスク MTiを処理し、 処 a¾限前に処理を完了することになる力 マクロ タスク MT 1の完了時に動作モ一ドを 「◦ F F」 とすることで、 無駄な 消費を回避する ことができる。
くコンパイラの処理フロー〉
次に前述したマルチプロセッサ 'アーキテクチャ上で、 プロセッサユニット (PU) の特 性に合わせたスケジューリングと ·周波数の動的変化による消費 の; 制御を行う コ一ドを «するコンパィノレ方法と、 当該手法を難したコンパィラの処理について以下順 を追って説明していく。 図 20に本手法を実装したコンパイラ 40の処理フローを示す。
<マクロタスクの^^〉
Cや F o r t r a n等の高級 ¾|¾で fffiiされた逐次構造の入力プログラム 400は、 まず 、 当該プログラム構造を讀することで、 繰り返しブロック (RB : Re p e t i t i o n B l o c k), サブノ "チン (SB : Sub Rou t i ne)ゝ «代入文ブロック (BP A: B 1 o c k o f P s e udo As s i gnmen t s t a t emen t sノ の 3種類の が大きなマクロタスク (MT) に分割し、 各マクロタスクを する (401 )。 R B【 レープブロックで各階層での最も外側のループであり、 B P Aはスケジユーリング オーバーへッドあるいは並列性を考慮し、 代入文からなる複数の »ブロックを融合あるい
は分割したブロックである。 図 2 1に、 上記のような入力プログラム (ソースプログラム 4 0 0 ) の一例を示す。
<D i r e c t i V e指定〉
なお、 当該ソースプログラム 4 0 0中には、 予め P Uの割り当てを記 することが可能で あり、 例えばあるサブルーチンを D S Pに、 またあるサブルーチンを C PUに割り当てるこ とを明示的に指定することも可能である。 その結果、 当該 D S Pサブ ^チンはコンパイラ 4 0によりさらに並列性の^ iが行われ、 例えば D S Pが 4個ある:^、 当該 4個の D S P に対してコンパィラ 4 0は並列ィ匕スケジユーリングを ¾ ^する。
ぐデータ依存 ·制御フ口一^?〉
続いて、 分割生成された当該マクロタスク間の制御フロー及びデータ依存性を籠し、 マ クロタスク MTの^ mi醉関係を抽出する (4 0 2)。図 2 1の入力プログラム 4 0 0は、逐 次的に fffilされているため、 通常のコンパイラ 4 0によって される新コードは、 当該 プログラムの と同様に逐次的な 1 ^で菊亍される力 マクロタスク MT間で見ると必ず しも IKiされた順序で "る必要がないことが多い。 .
つまり、 マクロタスク MT間において、 制御またはデータ参照の依存性がなレ、 特に マノレチプロセッサシステムにおいては、 複数の p Uに複数のマクロタスク ΜΤを配置して同 時に、 または jl,を変更して、 全体の 時間力短くなるようスケジユーリングすることが 重要となる。
このようなスケジューリングを行うためには、 MT間の並列性を籠する必要がある。 そ こで、 この^?に向けた として、 データ依存 ·制御フロー 処理 4 0 2により、 マク 口タスク MT間の 亍 II醉関係を抽出する。
<ノ プレベル並歹 lj†¾^)f〉
続いて、 マクロタスク MT内の中 S レベルの並列' として、 ノトプレベルの並列ィ匕 を行う (4 0 3 )。 ノ^ "プレベル並列ィ匕 4 0 3では、ノ -プの繰り返し (イタレーシヨン) 単 位間のデータ依存性を解折して、 各ィタレ一ションカ独立に処理できるかを判断し、 可能な は各ィタレーションを複数の P Uに割り当てて並列 を行う。
また、 単一の プを複数のノ^ "プに分割して並列性を高めたり、 データのコピーや配列 変数の拡張により、 各ノ "プ間のデータ依存性を削时ることで並列化したり、 また複数の ノ!^プを単一のノ!^ "プに融合することでノ "プ制御に必要なオーバーへッドを軽減したり、 といった様々な手法により プの並列化を翔する。
<処理コスト續 >
次に、 上記 されたマクロタスク ΜΤを各 PUで節した際に必要となる処理サイクル を ¾もる、処理コスト^ fを行う (4 0 4 )。処理コスト (演算コスト) の もり方法と しては、 例えば C PUなどに関しては、 乗算や加算など命令レベルで必要とするサイクル数 を処理コストテーブル 4 2 0にプロフアイリング情報として ί ^しておき、 当該テーブル 4 2 0を参照することで、 マクロタスク ΜΤを当該 PUで ¾m "る際の逐次処理サイクノレ数を ¾もることができる。
また、 01 ?ゃ0 3 ?など、 プログラム中から表現される命令レベルでのサイクノレ数の見 積もりが困難な:^は、 一度当該プロックのプログラムを D R Pや D S P用の ϊコードを ^^する夫々のローカルコンパイラを呼び出し、 変換した 亍コードを元にプロフアイリン グを行レ、、処理コストを求める (4 1 3 )。 なお、 ローカルコンパイラは、 P Uの に応じ て予め設定され、 例えば、 D S Pであれば D S Pのローカルコンパイラプロフアイリング 報を、 DR Pであれば DR Pのローカルコンパイラプロフアイリング情報を用いる。
また、 例えば分岐を含む^ \ あるいはノトプのサイズ 己列のサイズが、 マクロタスク MTの菊ラ前では定まらないような においは、 ロー力ノレなコンパィラで一度プロフアイ リングすることにより、 精度を高めた処理コストの算出を行うこともできる。 なお、 本プロ フアイリングを行わずマクロタスク MTが ϋを含む ^は、 確率を 5 0 %としてコス ト算出を行う。 また、 同じくプロフアイリングを行わずノ!^プゃ配列のサイズが定まらない # ^は、 例えばノ プを固定回数とし、 また配列宣言時の最大サイズとする、 等の方法を適 用する。
以上では^ aコストを、 処理サイクル数 (時間) として定義したが、 他にコストを ®Λと して定義することで、 が最小となるようなスケジユーリングを行うことも可能である。
例えば、 処理サイクル数とマクロタスク MTを完了すべき処翻限から、 設定可能な F V制 御モード 01波数、 動作 «E) のうち処糊限内で最小の消費 ¾Λとなる動作モードを選択 する。 あるいは、 ?1;の消費¾¾は、
消費 «Λ=動作 ®Ε 2 X職周波数
と!^もることができるので、 処環限内で消費 が最小となる F V制御モードの組み合 わせを選択し、 スケジューリングすればよレ、。 例えば、 図 1 9 bのように L OWモードのみ で、 処理を実行する^^、 図 1 9 cのように複数の F V制御モードを組み合わせる。 ある レ、は、 処理時間が最小かつ消費 が最小となる F V制御モードの組み合わせを選択するこ ともできる。
くマクロタスク間並列 't4^ff=最早紫亍条件籠〉
コンパイラ 4 0はマク口タスク MTの処理コストが決定した後、 データ依存 ·制御フロー 漸処理 4 0 2で抽出したマクロタスク MT間の制御フローと、 データ依存性を同時に讀 した結果から、 マクロタスク MT間の並列性、 つまり各マクロタスク MTの を最も早く 新してよい条件 (最早新条件) を決定する (4 0 5 )。
この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ (MTG) である 。 図 2 1の入力プログラムを解析し生成された MTGを、 図 2 2に示す。 なお、 マクロタス ク間並列' 結果は、 マクロタスクグラフテーブル 4 2 1として外部記 1t¾置に され 、 後段のコンパイル処理で使用される。 なお、 この外部記 tt¾置は、 コンパイラ 4 0を紫亍 する図示しなレヽ計算機のものを指す。
<マクロタスクグラフの説明 >
以下、 図 2 2を参照しながら、 マクロタスクグラフ MTGについて説明する。 本グラフ中 の各ノ一ドはマク口タスク MTを示し、 ノード間の はマク口タスク間のデータ依存関係 を、 ノード間の ·はマクロタスク間の制御依存関係を、 ノ一ド内の /J、円が条件分岐を表し ている。 例えば、 マクロタスク MT 1—1 ( 5 0 1 ) から MT 1— 2 ( 5 0 2 ) 及 D T 1 —3 ( 5 0 3 ) に対して織が伸びているが、 これ の大きいマクロタスク MT 1—2 RXMAT 1 3が MT 1 1を Hi亍した結 じたデータを入力データとして用レ \ 処理を
¾ίϊしているという依存 M ^があることを示している。 そのため、 として、 MT1 _ 2及ひ IIT 1—3 ilMT 1 _ 1の終了後、 亍できることを示す。
また、 入力プログラム 400から求めたマクロタスク ΜΤ 1—2 (502) は、 複数のル 一プゃサプ ^チンで構成された ¾¾ の大きいブロックなので、 コンパイラ 40は当該マク 口タスク MTをさらに複数のマクロタスク MTに階層的に分割する。 よって、 当該マクロタ スクグラフ MT Gでは MT 1— 2中に、 別階層でさらにマクロタスクダラフ MT G 1 _ 2を 構成する。 マクロタスク MT1_3 (503) も同様に別階層のマクロタスクグラフ MTG MTG1一 3を構成する。
マクロタスク MT1— 2 (502) 内のマクロタスクグラフ MTG1— 2 (510) を見 ると、 タスク MT1— 2— 1 (511) 力らはタスク MT 1— 2—2 (512)、 タスク MT 1— 2—4 (514)、 タスク MT 1— 2—5 (515) に鎌が延びているため、 MT1_ 2—1 (511) 終了後、 同時にこれら 3つのタスク 512、 514、 515を^? ~るこ とが可能である。
また、 タスク MT 1— 2—2 (512) はさらにタスク MT1_2一 3 (513) へ依存 があるが、 これは MT 1— 2—2 (512) のタスクが終了後、 MT 1_2— 3 (513) のタスクを^ Tればよレヽ。 また、 タスク MT1_2— 4 (514) 及ひ¾1丁1— 2— 5 ( 515) 力らタスク MT 1— 2—6 (516) に対して が延びているため、 タスク MT 1— 2—4 (514) 及びタスク MT 1— 2—5 (515) 双方の 亍が終了した時点で M T1— 2— 6 (516) が紫亍できる。
以上のように、 マクロタスク MT 1—2は新前に並列 jll^関係は確定されており、 あら 力 じめ固定的 (静的) にタスクをスケジューリング可能である。
続いて、 マクロタスク MT1_3 (503) 内のマクロタスクグラフ MTG (520) を 見ると、 マクロタスク MT1_3_1 (521) には小円が するが、 これはタスク MT 1— 3—1 (521) が条件^ 1¾を含むことを示している。 小円からタスク MT 1— 3— 2 (522)、 MT1— 3— 5 (525)へは矢印のある破線が伸びており、 また制御依存の O R条件を表す点線のアーク 529が重なっているため、 当該条件がタスク MT 1— 3— 2ま
たは MT— 1—3— 5の ί可れかに "ることを示している。
また、 タスク ΜΤ 1—3— 3 (523) へは矢印のなレ^!力延びており、 タスク MT1 —3—3 (522) への矢印のない当! ¾ ^と、 タスク MT1— 3_2 (523) に接続さ れる■上には、 制御依存の AND条件を表す実線のアーク 528が重なっている。 これは 、 もし当該条件で、 矢印で指されているタスク MT1— 3— 2の方向に^"すると、 同一の に制御依存してレ、るタスク MT1— 3— 3が同時に 亍可能なことを示してレ、る。 なお 、 図中!^はタスクの実行が確定される制御依存関係と、 データ依存しているタスクが実行 されない の条件を表している。 また、 矢印がついた は、 データ依存'制御フロー解 析 (402) で求めた制御フローと同一 (つまり、 オリジナル) であることを表す。
なお、 タスク MT 1— 3—1 (521) の条件 は、 当該タスク MT 1— 3— 1を新 しないと分岐方向が確定しないため、 実行時の状況に応じたスケジユーリングを行う必要が ある。 当該条件分岐力 S確定し、 タスク MT 1— 3—2 (522) 及びタスク MT1— 3— 3 (523) 方向に した 、 タスク MT 1—3—2 (522) 及ぴタスク MT1— 3—
3 (523) 力らタスク ΜΤί_3_4 (524) にデータ依存関係を示す雄があるため 、 双方のタスク ΜΤ (522、 523) 処理の節が終了した時点で、 タスク ΜΤ 1—3—
4 (524) の処理を 亍できる。
また、 タスク ΜΤ 1—3—5 (525) 方向に した:^、 同様にデータ依存関係から 当該タスク 525が終了した時点で、 タスク MT1— 3— 6 (526) 及びタスク MT 1— 3一 7 (527) の処理を実行できる。
<プロセッサグルーピング >
次にコンパイラ 40は、 ^^されたマクロタスクグラフ MTGテープノレ 421を参照し、 マクロタスクグラフの形状や並列性に応じた、 またはユーザからの指定に応じたプロセッサ のグノ^-プ化を行う (406)。
つまり、 マクロタスクグラフ MTGで表現された上位階層のマクロタスク ΜΤ、 例えばマ クロタスク ΜΤ 1—2 (502)、 MT1— 3 (503) の形状、 並列性を簾し、 当該マク 口タスク ΜΤの処理に必要となる PU10〜17をグノ プ化し、 当該グノ! ^プに対してタ
スク MTを割り当てる。 なお、 1つのグループは、 当該グループ内の特定用途プロセッサ ( DSP、 DRP、 BMP) を制御するための汎用プロセッサ (CPU) を少なくとも一つ含 合となる。 具体的には、 マクロタスクグラフ MTGの構成によりにコンパィノレ時に適切 なプロセッサ PUのグ "プ構成が判断できる齢、 コンパイラ 40は特定用途プロセッサ を含めたグントピジグを行う。
また、 マクロタスクグラフ MTGの構成によりコンパイル時にプロセッサグルーピングが できない 、 つまり 用途プロセッサ力 すべきタスクが多階層に し、 グノ^ "ピ ングカ S適切に行えなレ、 では、 コンパイル時にコンパィラ 40、 または ラ時にスケジュ ーラとしての鄉を果た 用プロセッサが、 タスクを特定用途プロセッサグノ^"プに対し. 割り当てる。 この際、 特定用途プロセッサへの負荷が大きレヽ場合、 汎用プロセッサで処理を frTる。 なお、 決定したグ Λ ^ビング情報は、 プロセッサグノ! ^ビングテープ、ノレ 422と して外部記難置に騰され、 後段の纏で鶴される。
本実施形態では、 図 22のマクロタスクグラフ MTG1 (500) においてマクロタスク MT1_2 (502) と MT1一 3 (503) の処理コストが同等であり、 これらマクロタ スク内部のマクロタスクグラフ MTG 1—2 (510)、 MTG1_3 (520) の実行には 汎用プロセッサによる特定用途プロセッサの制御が必要であるため、 2個のプロセッサダル ープを定義する。
次に、 マクロタスク MT1— 2、 MT1— 3の各 PUに る処理コストや並列性に応じ 、 各プロセッサグノ^"プ內で必要とされる特定用途プロセッサの構成を決定する。 本 H¾形 態においては、 必要とされるプロセッサ構成がマクロタスクグラフ MTG1上の利用可能な リソースで実現できるため、 プロセッサグループを、 CPU0、 DSP0、 DRP0、 DR Pl、 及び CPU 1、 DSP 1, BMP0、 BMP 1とコンパイル時に決定する。
くスタティックスケジュールとダイナミックスケジユーノレ〉
コンパイラ 40は次にスケジューリング方法として、 スタティックスケジュールかダイナ ミックスケジュールかを判! る(407)。夫々のスケジューリング方法の詳細は後财る 力 以下簡単に説明する。 まず、 もし、 タスク MTに条件 がなく最早新条件が予め決
定できる MTフローであれば、 前者のスタティックスケジュールを適用し、 コンパイラ 4 0 が予めタスク MTのスケジューリングを行い、 同期コード及び F V制御コード (スケジユー リングコ一ド) をタスク間に挿入する。
また、 もし、 タスク MTに^ f牛分咬がある、 あるいはタスク MTの処理時間が^ 時に変 IrTるなど、 コンパイル時に予測できなレヽ ΜΤフローであれば、 後者のダイナミックスケジ ユールを適用し、 コンパイラ 4 0は、 などの状況に応じた制御を 亍時に行うスケジュ 一リングプログラムを生成する。 コンパイラ 4 0がスケジューリングプログラム (スケジュ 一リングコード) を生成する利点は、 従来のマルチプロセッサのように O Sあるいはライブ ラリにネ且; タスクの^^、 スケジユーリングを すると、 数千から数万クロックの;^ バーヘッドが生じてしまう可能性があり、 それを避けるためである。
<スタティックスケジユーリング >
まず、 スタティックスケジューリングの処理フローについて説明する。 スタティックスケ ジユーリングでは、 コンパイル時にタスク MTの割り当てと ¾ίϊ順序力 Sすでに決定している ため、 まず、 マクロタスクスケジューリング処理 4 0 8により、 マクロタスクテープ'ノレ 4 2
1及びプロセッサグルーピングテーブル 4 2 2情報を参照し、 PU間における実行タスク間 の同期ゃ他タスクの起動等を行う制御情報を し、 当該制御情報の挿入箇所を決定する。 また、 さらに、 タスクプログラムまたはタスクが必要とするデータを、 他 P Uのローカル メモリ LMや^ メモリ SMより当該 PUのローカルメモリ LMにロードするといつたデー タ I*報も併せて生成する。 このような、 データロー力ライゼーシヨン手法により、 ロー カルメモリ LMを^ ¾に活用し、 データの^ ¾量を最 匕する。 以上の処理により^^され たスケジユーノレ If報は、 マクロタスクスケジュールテーブル 4 2 3として、 外部記',置に される。
続いて、 コンパイラ 4 0は、 スタティック F Vスケジューリング処理 4 0 9を行う。 本処 理では、 図 1 8 a〜図 1 8 dで説明したタスク並列処理実行時の F V制摘 に基づき、 マ クロタスクスケジユーリング 4 0 8で生成されたスケジユーノレ If報 (マクロタスクスケジュ
ールテーブル) より、 タスクの処理コスト及びスケジュール期限 (処 a¾限) で決定される 余裕度を判定し、 当該余裕度に応じた動作周波数 ·供^ mmを決定する p u動作モードを設 定するため、 FV制御情報を する。 当該 FV制御情報は、 麵 ' FV制御スケジュール テーブル 424として、 外部記難置に麟される。 なお、 余裕度は、 例えば、 新開始か ら実行完了までの処理時間と、 処理期限までの時間から求まるものであり、 各 PU10〜1 7の性能上の余裕の度合レ、を示す。 例えば、 図 19 aのように、 CPUOの 亍完了から処 ■限までの時間力 S長い^^には余裕度が大きいと判定し、 逆に 亍完了から処 限まで の時間が短レヽ には余裕度が小さいと判定できる。
また、 処翻限 (許容時間) は、 入力プログラムに! Ε3ί&したり、 コンパイラ 40の処理時 に図示しないコンソールから入力してもよレ、。
<ダイナミックスケジューリング >
次に、 ダイナミックスケジューリングの処理フローについて説明する。 ダイナミックスケ ジユーリング時は、 タスク MT内の条件分岐等の不確定要素によりコンパイノレ時にスケジュ 一リング内容を決定することができない。 このためコンパイラ 40は、 タスク MTの処 果に基づき、 プログラム実行時に動的にスケジューリングを行うスケジューリングプロダラ ムを生成する (410)。本プログラムは、処理結果に基づきタスク MTの起動や同期、及び 当! ¾MT力必要とするデータのロードを行う。 また、 さらに図 18 a〜図 18 dで説明した タスク並列^ 亍時の F V制 fe^に基づき、 P Uの動作周波数 ·供^ flffiを決定する動 作モード (FV制御モード) を設定する。 生成したスケジューリングプログラムは、 電源' FV制御スケジュールテーブル 424として、 外部記 H¾置に勝される。
<スケジユーリングコ一ドの生成 >
コンパイラ 40は以上の処理により、 入力プログラム 400の PU10〜17へのスケジ ユーリングを完了する。 これまでの処理で生成したスケジユーリング情報は外部記 1t¾置に テーブル (421〜424) として麟されている。 コンパイラ 40は、 当該テーブル (4 21〜 424 ) にアクセスし、 タスクの WI^^一タ^†青報、 及び F V制御情報を読 み込み、 入力プログラムに対してスタティックスケジュール部には制御コード (スケジユー
リングコード) を、 またダイナミックスケジュール部にはスケジューリングプログラムを付 カロする (411)。制御コードは、例えば ϋメモリ型並列計^^における並列プロダラミン グ標準インタフェースである MP I (Me s s a g e Pa s s i ng I n t e r f a c e) などを用いて生成する。 当該コードが付加された入力プログラムは、 さらに各 PUの種 類毎に用意されたローカルコンパイラで処理することにより、 当該 PUにおける節バイナ リコードに変換される (412)。 なお、 ローカルコンパイラは、上述のように CPU、 DS P、 DRP、 BMPの PUの 毎に予め用意され、 コンパイラ 40から各 PUの■に応 じた口一力ノレコンパイラを呼び出して実行バイナリコードを生成するものである。
<スケジューリングの結果 >
本スケジユーリング結果の例を図 23に示す。 図 23は、 MTのスケジユーリング結果を P U毎に時間軸で示している。 本例では C P U 0がタスクの起動や同期、 F V制御などの管 理を行うため、 最初に CPU0上にコンパイラ 40が^ ¾した制御コード 550力 Sロードさ れる。 当該制御コード 550は、 各 PUの FV制御を行うコード、 及び CPU0においてマ クロタスク MT 1—1を起動するコードで表現されている。 つまり CPU0は、 マクロタス ク MT 1— 1を ¾ίϊする C P U 0に対し動作モードを F U L Lにするよう F V制御レジスタ の値を "3" に設定する。 また、 他の PUに対しては処理すべき ΜΤがないため、 動作モー ドを OFFにするよう FV制御レジスタの値を "0" に設定する。 次に、 CPU0は自 CP U0にてマクロタスク MTl— 1の処理を開台する。
CPU0でマクロタスク MT1— 1処 SU 後、 コンパイラ 40が生成した制御コード 5 51を ¾iし、 F V制御モードの設定を行う。 次に処理すべきタスクは、 マクロタスク MT 1—2及ひ *MT 1—3の下ィ のマクロタスクグラフ MT Gで指定されたタスク MT 1— 2 — 1及ぴタスク ΜΤ1_3— 1であり、 前者は CPU 0にて、 後者は CPU 1にて節され る。
従って CPU0はタスク MT1_3— 1を処理する CPU 1の FV制御レジスタを通常モ ード (FULL) に設定する。 また CPU 0に関しても、 すでに F V制御モードは通常モー ドである力 引き続き MT 1—2 1を処理するため通常モード (FULL) としておく。
このとき、 tiflSタスク MT1— 2— 1及ひ iilBタスク MT1— 3— 1の処理中は、 他の P U上での処理タスクは しないため、 当該他の PUは引き続き動作モードを OF Fとして おく。 続いて CPU0は、 自 CPU0においてタスク MT1— 2— 1を、 また CPU1にお いてタスク MT 1— 3— 1の処理を開始する。
なお前述した通り、 マク口タスク MTG 1—2は条件 を含まないためコンパイル時で すでにスケジューリング力 S行われており (スタティックスケジューリング)、 CPU0、 DS P0、 DRP0、 DP 1グノ^ "プへタスク MTを割り振る。 またマクロタスク MTG 1—3 は条件 を含むため、 新時にスケジューリングを行うプログラムを付加し、 Htf結果に よって CPU1、 DSP 1, BMP0、 BMP 1のグノ^ "プへタスク MTを割り振る。
続レ、てマクロタスクグラフ MT G1— 2のタスク MTグノ! ^プのスケジユーリングにつレヽ て説明する。 タスク MT 1— 2— 1の Hfiが CPU0において終了すると、 CPU0は制御 コード 552を実 ί?し、 タスク ΜΤ 1— 2— 2を処理するために DSP0を通常動作モード FULLとするよう、 FV制御レジスタを "3" に設定する。 またタスク MT 1— 2— 4及 t^MTl_2— 5はコンパイノレ時の FVスケジユーリングによるタスクの余裕度判定により DRP0、 DRP 1を低 ¾Λ動作モード MI DDL Eとするよう、 FV制御レジスタを " 2 " に設定する。 また、 CPU0においては実 frTべき MTはないが、 スケジューラを実行し DSP0、 DRP 0, 及ぴ DRP 1のタスクの同期管理を行っているため、 スケジューラは CPU0に対して低 ¾Λ動作モード LOWとするよう、 FV制御レジスタを "1" に設定す る。 そして、 タスク MT 1— 2—2、 タスク MT 1— 2—4、 及ぴタスク MT 1— 2— 5の 処理を開女台する。 なお、 タスク MT1— 2— 2は当該 MT処 «了後、 同じく DSP0にお いてタスク MT 1— 2— 3を ることとなるため、 この時点でタスク ΜΤ 1— 2— 2終 了後にタスク ΜΤ1— 2_3を起動するようタスクの起動予約 (タスクレディキューへのタ スクの登録) をしておく。
次に肅己タスク ΜΤ 1— 2— 4及びタスク ΜΤ 1— 2—5の処理が双方とも終了したこと を CPU0力 S判定すると、 当該 CPU 0は制御コード 553を節し、 CPU0はタスク M T 1 _ 2— 6を処理する自 C P U 0の動作モードを M I D D L Eに、 また D R P 0及び D R
P 1は処理すべきタスクが雜しなレ、ため、 動作モードを O F Fに設定し、 通常よりも と動作周波数を赚した状態で 5タスク MT 1— 2— 6の処理を開始する。 ttl!Eタスク M Τ 1— 2— 6の処理が終了すると、 CPU0は制御コード 554を 亍しタスク ΜΤ 1—2 — 3の処 了を判^ Τると、 MTG 1—2グノープ内のタスク処理が完了したため、 CP U 0は DSP 0の動作モードを OFFに設定する。
続いて MTG 1_3のタスク MTグノ^ "プについて説明する。 マクロタスク MT 1_3は 内部に を持っため、 タスクを紫亍しないと^ ^向がわからなレヽ。 従って、 Hfi1時の状 況によりタスク、 データのロード、 タスクの起動、 同期及び FV制御コードの管理を行うダ イナミックスケジューラ 555を、 CPU1において実行する。 当該スケジューラ 555は 、 まずタスク MT 1— 3— 1を実行するため CPU 1の動作モードを FULLに設定し、 タ スク MT1_3— 1を起動する。 タスク MT 1—3—1 Hi亍終了後、 スケジューラ 556は
^^向を判定し、 次に起動するタスクを判 る。
図 23に示したスケジューリングでは、 タスク MT1— 3_2が DSP 1にて、 タスク M T 1— 3— 3が BMP 0にて TOされる。 当該処理の起動前に、 スケジューラ 556は FV スケジユーリング結果に従い D S P 1の動作モードを FULLに、 また BMP 0の動作モー ドを LOWに設定する。 CPU 1においては、 実 m~べきタスク MTはないが、 スケジユー ラ 556を実行し DS P 1及ぴ BMP 0のタスク管理を行っているため、 スケジューラ 55 6は C PU 1の動作モードを 1ΜΛモード LOWに設定する。
次に、 CPU0上のダイナミックスケジューラ 557は、 fillEタスク MT1_3— 2及ぴ タスク MT 1— 3— 3の双方の 了を判定すると、 次にタスク MT 1— 3— 4を処理す る自 CPU 0の動作モード (FV制御モード) を FULLに、 また実 frTべきタスクが存在 しない DSP 1及び BMP 0の動作モードを OFFに設定する。 そして、 自 CPU 0におい て、 ΙΙ己タスク MT1— 3— 4を紫?1 "る。
以上により、 の PU10~17で構成されるマノ1^プロセッサにおいて、 マノ! ^ダレ ィン並列処理により、 亍時間が最小となるよう入力プログラムを並列化しスケジユーリン グした後、 各 P U間で処理時間が均一となるよう、 P U毎にきめ細かく動作周波数制御及ぴ
管理を行うことで、 最小の 時間で性能を損なわずに消費 の を図ることが可 能となるのである。
<コンパイラが する目的プログラム >
コンパイラ 4 0により、 以上で説明したようなスケジュールを行うスケジユーリングコ一 ドを、 入力プログラム 4 0 0に付加し PU毎に出力した出力プログラム (目的コード) の一 例を図 2 4及び図 2 5に示す。 図 2 4、 図 2 5は、 上記図 2 3で示した処理を記述したもの で、 図 2 4はマクロタスク MTG 1—2を処理するプロセッサのグループとして C PU 0、 D S P 0、 DR P 0、 DR P 1の各 PU用の菊亍コードを示す。 また、 図 2 5は、 マクロタ スク MTG 1—3を処理するプロセッサのグ ~プとして C PU 1、 D S P 1 , BMP 0、 1の各 PU用の節コードを示す。 コンパイラ 4 0の賊コードは賺コードで表現されて いるが、 前述したように実際は MP I等のインタフェース規格に従って表現される。
ぐまとめ >
以上のように、 本発明によれば、 多種のプロセッサユニット PUを集積するマルチプロセ ッサシステムにおいて、 当該 PUを効率よく動作させるプログラムの分割配置および制御コ 一ドを^" Tるコンパイラ 4 0により、 当該プロセッサシステムの性能を最大限活用しつつ 、 最小限の麵時間内に低 ¾Λにて効率よく処理することが可能となる。 また、 さらにはソ フトウエア開発者がプロセッサの構成を意識することなく、 短時間で極めて効率の良いプロ グラム作成が可能となる。
ぐ補足 >
なお、 上記 »形態にぉレヽては、 一つのチップに複数の P U 1 0〜 1 7を備えたマルチプ 口セッサシステムに本発明を適用した例を示したが、 図 1に示したチップを複数備えた並列 計 に適用することも可能であり、 上記と同様の作用効果を得ることができる。
また、 請求項 1 4、 請求項 2 2、 請求項 3 0において、 tif!Eプロセッサユニット毎に設定 されたプロファイリング情報に基づレ、て ΙίΐϊΕ単位プロックを処理する処理サイクノレ数を求め 、 当該処理サイクルから tins演算サイクル時間を求めることを赚とするマルチグレイン並 列化コンパイラ。
また、 請求項 1 4、 請求項 2 2、 請求項 3 0において、 前 1¾¾算サイクノレ時間は、 前記プ ロセッサュニット毎に設定された口一カルコンパイラにより tijfS単位プロックを節コード に変換し、 ΙΐΙίΒプロセッサュニット毎に設定されたプロフアイリング情報に基づいて Ι ΐΞ単 位ブロックを処理する処理サイクル数を求め、 当該処理サイクル数に基づいて ffil¾t算サイ クル時間を求めることを とするマルチグレイン並列ィ匕コンパイラ。
また、 請求項 1 5、 請求項 2 3、 請求項 3 1において、 前記プロセッサュニット毎に設定 されたプロファイリング情報に基づレヽて 単位プロックを処理する処理サイクル数を求め 、 当該処理サイクルから ΙίίΐΒΜΛを求めることを赚とするマルチグレイン並列化コンパイ また、 請求項 1 5、 請求項 2 3、 請求項 3 1において、 前 ia¾算サイクノレ時間は、 前記プ ロセッサュニット毎に設定されたローカノレコンパイラにより tfjfE単位プロックを ¾ίϊコード に変換し、 tiriaプロセッサュニット毎に設定されたプロフアイリング情報に基づいて tine単 位ブロックを する サイクノレ数を求め、 当該処理サイクル数に基づレ、て tirism^を求 めることを赚とするマノ グレイン並列ィ匕コンパイラ。
また、 請求項 1 3、 請求項 2 1、 請求項 2 9にお ヽて、 嫌己単位プロックの並列性を抽出 する処理は、 ήίίϊΕ抽出した単位ブロックをマクロタスクグラフテーブルに;^し、 fiit己単位 プロックを処理するのに必要なプロセッサュニットをグノレ—プ化してプロセッサグルーピン グテーブルに ¾ ^する処理とを含み、
ttifSスケジューリングコードを生成する処理は、 前記マクロタスクグラフテーブルとプロ セッサグルーピングテーブル及ぴコスト情報を参照してプロセッサュニッ卜の制御コードを
^^する処理と、 嫌己単位プロックの菊亍 mmこ応じて MI己制御コードを挿入する処理を含 むことを難とするマノ グレイン並列化コンパィラ。
また、 請求項 1 3、 請求項 2 1、 請求項 2 9において、 編己単位ブロックの並列性を抽出 する処理は、 tine抽出した単位ブロックをマクロタスクグラフテーブルに し、 肅己単位 ブロックを処理するのに必要なプロセッサュニットをグ プ化してプロセッサグノ "ピン グテープ 'ノレに する処理とを含み、
ΙίίΐΒスケジューリングコードを^^する処理は、 ΙΞマクロタスクグラフテーブルとプロ セッサグノレーピングテーブル及びコスト情報を参照して、 動的に前記単位ブロックのスケジ ユーリングを行うスケジューリングプログラムを生成する処理と、 前記単位ブロックの実行 JI醉に応じて tijfBスケジユーリングプログラムを挿入する を含むことを,とするマル チグレイン並列ィ匕コンパイラ。 産業上の利用可能性
本発明によれば、 多様な PUを集積するマルチプロセッサシステムにおいて、 当該 PUを 効率よく動作させるプロダラムの分割配置および制御コードを するコンパイラにより、 当該プロセッサシステムの性能を最大限活用しつつ、 低 *Λにて効率よく処理することが可 能となる。 また、 さらにはソフトウェア開発者がプロセッサの構成を: i^することなく、 短 時間で効率良いプログラム作成が可能となる。 その結果、 高い演算性能を持ち力ゝっ低 に することが強く望まれる、 カーナビゲーシヨンシステム 帯 «¾、 家電向けの L s Iに本発明を適用することができ、 高品質の動画像^声 、 また画像認 識 といった機能を することが可能となる。 また、 自動車における情報系、 制御系システム 向け L S Iに対しても適用することができ、 自動 システム等を ¾すること が可能となる。 またさらには、 将来非常に高い演算性能を有しつつ低 化が必須となる、 ス一パーコンピュータへの適用も可能である。