(57)【特許請求の範囲】
【請求項１】
独立動作可能な複数のプロセッサがチップ上に実装されているマルチプロセッサシステムにおいて、コンパイル後の命令をチップ上の各プロセッサに割り付ける命令割付手段と、各プロセッサ毎に割り付けられた命令間のデータ依存関係，制御依存関係を解析し、同期をとるように命令のスケジューリングを行なう第１のスケジューリング手段と、命令ステップ毎にプロセッサ単体の発熱量を予測する発熱量予測手段と、各プロセッサの発熱量からチップ全体の発熱量を予測する総発熱量予測手段と、総発熱量予測手段によって予測された総発熱量からチップ上の各プロセッサ毎の命令の再スケジューリングを行ないチップ全体の発熱量を抑制する第２のスケジューリング手段とを有していることを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムにおいて、前記第１のスケジューリング手段は、実行待ち状態にある複数の命令中から次の実行の対象となる命令候補を選択するようになっており、前記発熱量予測手段は、第１のスケジューリング手段によって選択された命令候補についてプロセッサ単体の命令ステップ単位の発熱量の予測値を算出し、また、前記総発熱量予測手段は、各プロセッサの命令ステップ単位の発熱量の予測値から命令ステップ単位でのチップ全体の発熱量を予測し、さらに、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算し、該単位時間の間の累積加算値を総発熱量として算出し、前記第２のスケジューリング手段は、総発熱量予測手段により算出された総発熱量が制限値を越える場合には、この制限値を越えないように、第１のスケジューリング手段によってスケジューリングされた各プロセッサ毎の命令の再スケジューリングを行なうようになっていることを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１または請求項２記載のマルチプロセッサシステムにおいて、前記第２のスケジューリング手段から前記第１のスケジューリング手段へのフィードバックを行ない、前記第２のスケジューリング手段によって再スケジューリングされた命令を前記第１のスケジューリング手段によって再びスケジューリングする処理を、所定回数、繰り返し行なうことを特徴とするマルチプロセッサシステム。
【請求項４】
独立動作可能な複数のプロセッサがチップ上に実装されているマルチプロセッサシステムにおいて、チップ上の各プロセッサが実行する命令を作成する命令作成装置であって、該命令作成装置は、コンパイル後の命令をチップ上の各プロセッサに割り付ける命令割付手段と、各プロセッサ毎に割り付けられた命令間のデータの同期をとるように命令のスケジューリングを行なう第１のスケジューリング手段と、命令ステップ毎にプロセッサ単体の発熱量を予測する発熱量予測手段と、各プロセッサの発熱量からチップ全体の発熱量を予測する総発熱量予測手段と、総発熱量予測手段によって予測された総発熱量からチップ上の各プロセッサ毎の命令の再スケジューリングを行ないチップ全体の発熱量を抑制する第２のスケジューリング手段とを有していることを特徴とする命令作成装置。
【請求項５】
請求項４記載の命令作成装置において、前記第１のスケジューリング手段は、実行待ち状態にある複数の命令中から次の実行の対象となる命令候補を選択するようになっており、前記発熱量予測手段は、第１のスケジューリング手段によって選択された命令候補についてプロセッサ単体の命令ステップ単位の発熱量の予測値を算出し、また、前記総発熱量予測手段は、各プロセッサの命令ステップ単位の発熱量の予測値から命令ステップ単位でのチップ全体の発熱量を予測し、さらに、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算し、該単位時間の間の累積加算値を総発熱量として算出し、前記第２のスケジューリング手段は、総発熱量予測手段により算出された総発熱量が制限値を越える場合には、この制限値を越えないように、第１のスケジューリング手段によってスケジューリングされた各プロセッサ毎の命令の再スケジューリングを行なうようになっていることを特徴とする命令作成装置。
【請求項６】
請求項４または請求項５記載の命令作成装置において、前記総発熱量予測手段は、前記単位時間当たりの総発熱量の算出において、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算するとともに、単位時間経過した命令の発熱量を前記累積加算値から減算して、総発熱量を算出するようになっていることを特徴とする命令作成装置。
【請求項７】
請求項４または請求項５記載の命令作成装置において、前記第２のスケジューリング手段から前記第１のスケジューリング手段へのフィードバックを行ない、前記第２のスケジューリング手段によって再スケジューリングされた命令を前記第１のスケジューリング手段によって再びスケジューリングする処理を、所定回数、繰り返し行なうことを特徴とする命令作成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、独立動作可能な複数のプロセッサがチップ上に実装されているマルチプロセッサシステムおよび命令作成装置に関する。
【０００２】
【従来の技術】
近年、ＬＳＩ製造技術の進歩に伴い、超微細化，高集積化が進み、１チップ上に複数のプロセッサを配置（実装）することが可能となってきている。そこで、チップの性能限界として新たにチップ内の発熱量の問題が考えられるようになってきた。これはチップ内の活性化率が上がると発熱量が上昇しチップの発熱許容値を越えるために、発熱によってチップの動作限界が規定される（すなわち、処理を効率的に行なうことができなくなる）ということをも意味する。
【０００３】
【発明が解決しようとする課題】
このように従来のマルチプロセッサシステムでは、チップ内の活性化率が上がると発熱量が上昇し、チップの発熱許容値を越えてしまい、効率的に処理を実行することができないという事態が生じてしまうという問題があった。
【０００４】
本発明は、チップ上に複数のプロセッサが実装される場合に、チップ全体の発熱量を抑えるように各プロセッサを制御し、チップ全体の発熱量を抑えつつ効率的に処理を実行することの可能なマルチプロセッサシステムおよび命令作成装置を提供することを目的としている。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、請求項１，請求項４記載の発明では、独立動作可能な複数のプロセッサがチップ上に実装されているマルチプロセッサシステムにおいて、コンパイル後の命令を各プロセッサに割り付ける命令割付手段と、各プロセッサ毎に割り付けられた命令間の同期をとるように命令のスケジューリングを行なう第１のスケジューリング手段と、命令ステップ毎にプロセッサ単体の発熱量を予測する発熱量予測手段と、各プロセッサの発熱量からチップ全体の発熱量を予測する総発熱量予測手段と、総発熱量予測手段によって予測された総発熱量からチップ上の各プロセッサ毎の命令の再スケジューリングを行ないチップ全体の発熱量を抑制する第２のスケジューリング手段とを有していることを特徴としている。
【０００６】
また、請求項２，請求項５記載の発明では、前記第１のスケジューリング手段は、実行待ち状態にある複数の命令中から次の実行の対象となる命令候補を選択するようになっており、前記発熱量予測手段は、第１のスケジューリング手段によって選択された命令候補についてプロセッサ単体の命令ステップ単位の発熱量の予測値を算出し、また、前記総発熱量予測手段は、各プロセッサの命令ステップ単位の発熱量の予測値から命令ステップ単位でのチップ全体の発熱量を予測し、さらに、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算し、該単位時間の間の累積加算値を総発熱量として算出し、前記第２のスケジューリング手段は、総発熱量予測手段により算出された総発熱量が制限値を越える場合には、この制限値を越えないように、第１のスケジューリング手段によってスケジューリングされた各プロセッサ毎の命令の再スケジューリングを行なうようになっていることを特徴としている。
【０００７】
また、請求項３，請求項７記載の発明では、前記第２のスケジューリング手段から前記第１のスケジューリング手段へのフィードバックを行ない、前記第２のスケジューリング手段によって再スケジューリングされた命令を前記第１のスケジューリング手段によって再びスケジューリングする処理を、所定回数、繰り返し行なうことを特徴としている。
【０００８】
また、請求項６記載の発明では、前記総発熱量予測手段は、前記単位時間当たりの総発熱量の算出において、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算するとともに、単位時間経過した命令の発熱量を前記累積加算値から減算して、総発熱量を算出するようになっていることを特徴としている。
【０００９】
【発明の実施の形態】
以下、本発明の実施形態を図面に基づいて説明する。本発明は、複数のプロセッサが実装されているマルチプロセッサシステムにおいて、並列処理を行なう場合にプロセッサ間の依存関係の問題等のために（プロセッサ間の同期をとる必要があるために）、全てのプロセッサが常に動作しているような状況はありえず（全てのプロセッサが同時に命令を実行しているような状況はありえず）、複数のプロセッサのうち、必ず、待ち状態になる（データ待ち等による処理待ち状態の）プロセッサが必ず存在することに着目してなされたものである。すなわち、本発明は、この処理待ちのプロセッサを効率的に利用するとともに処理への影響を最小限にとどめながらプロセッサの制御を行ない、発熱量を抑えることでチップ全体として発熱量を制御し、効率よく処理を実行することを意図している。
【００１０】
図１は本発明に係るマルチプロセッサシステムの構成例を示す図である。図１を参照すると、このマルチプロセッサシステムは、独立動作可能な複数のプロセッサＰ１〜Ｐｎが実装されている１つのチップ１０と、ソースリストＳＬに基づいてチップ１０上の各プロセッサＰ１〜Ｐｎに命令コードを割り付け、組み込むための命令作成装置１１とを有している。
【００１１】
ここで、命令作成装置１１は、例えばワークステーションなどで実現され、このマルチプロセッサシステムの開発機器として機能するようになっており、ソースリストＳＬをコンパイルするコンパイラ９と、コンパイル後の命令（オブジェクトコード（機械語命令））をチップ１０上の各プロセッサＰ１〜Ｐｎに割り付ける命令割付手段１と、各プロセッサＰ１〜Ｐｎ毎に割り付けられた命令間の同期をとるように命令のスケジューリングを行なう第１のスケジューリング手段２と、命令ステップ毎にプロセッサ単体の発熱量を予測する発熱量予測手段３と、各プロセッサＰ１〜Ｐｎの発熱量からチップ１０全体の発熱量を予測する総発熱量予測手段４と、総発熱量予測手段４によって予測された総発熱量に基づいて、第１のスケジューリング手段２によってスケジューリングされた各プロセッサ毎の命令の再スケジューリングを行ないチップ１０全体の発熱量を抑制する第２のスケジューリング手段５とを有している。
【００１２】
ここで、第１のスケジューリング手段２は、コンパイル後の命令を各プロセッサに割り付ける際、各プロセッサに割り付けた命令毎に実行順序等のスケジューリングを行ない、発熱量予測手段３において処理を行なう命令候補を順次選択するようになっている。
【００１３】
具体的には、第１のスケジューリング手段２は、各プロセッサに割り付けられた命令間のデータ依存関係，制御依存関係を解析する依存関係解析手段７を具備し、依存関係解析手段７の解析結果に基づいて、命令の実行順序の並べ替えやウェイト命令の挿入などを行なうようになっている。
【００１４】
また、発熱量予測手段３は、第１のスケジューリング手段２によって選択された命令候補についてプロセッサ単体の命令ステップ単位の発熱量（プロセッサ上で命令候補を実行した場合のそれぞれのプロセッサの発熱量）の予測値を算出するようになっている。
【００１５】
具体的に、発熱量予測手段３は、プロセッサの命令群について、予め１命令に対応した１プロセッサ分の発熱量の予測値を例えばメモリにテーブルとして記憶しておき、コンパイル後の命令（オブジェクトコード）が各プロセッサに割り付けられる時に、命令ステップ毎にこれらの値を読み込み、第１のスケジューリング手段２によって選択された命令候補についてプロセッサ単体の命令ステップ単位の発熱量の予測値を得るようになっている。なお、発熱量の予測値はシミュレーションや実験等により求めておくことができる。
【００１６】
また、総発熱量予測手段４は、各プロセッサの命令ステップ単位の発熱量の予測値から命令ステップ単位でのチップ全体の発熱量を予測し、さらに、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算し、該単位時間の間の累積加算値を総発熱量として算出するようになっている。
【００１７】
すなわち、総発熱量予測手段４は、先ず、各プロセッサＰ１〜Ｐｎについて命令ステップ毎に発熱量を求めておき、これらＮ個の発熱量の総和を求めることによりチップ１０全体の発熱量を得るようになっている。これが命令実行時間当たりの総発熱量となり、さらに、この値を単位時間の間だけ累積加算することにより、単位時間当たりの総発熱量を得るようになっている。
【００１８】
図２には、Ｎ個のプロセッサＰ１〜Ｐｎのうち、２つのプロセッサＰ１，Ｐ２だけが稼働している（命令を実行している）とした場合の発熱量予測手段３，総発熱量予測手段４の処理概要が示されている。図２を参照すると、チップ内部のプロセッサＰ１とプロセッサＰ２が命令を実行しているとする場合、先ず、発熱量予測手段３は、プロセッサＰ１の実行命令の命令コードＣ１により予測値テーブルからＣ１の発熱量Ｈ１を読み出し、また、プロセッサＰ２の実行命令の命令コードＣ２により発熱量Ｈ２を読み出して、プロセッサ単体の命令ステップ単位の発熱量の予測値を算出する。
【００１９】
次いで、総発熱量予測手段４は、これら発熱量Ｈ１とＨ２の総和Ｓ１を求めることにより、その命令ステップでのチップ全体の発熱量Ｓ１（命令実行時間当たりの総発熱量）を得て、さらに、この発熱量Ｓ１を単位時間の間、累積加算することにより、単位時間当たりの総発熱量Ｓ２を得るようになっている。
【００２０】
なお、ここで、単位時間とは、チップ内部で発生した熱が外部に放射されるまでの時間を意味している。実際には、チップを覆うパッケージ等の熱伝達特性により影響されるため、シミュレーションや実験等から単位時間としての適正値を得ることができる。
【００２１】
また、第２のスケジューリング手段５は、総発熱量予測手段４により算出された総発熱量が制限値を越える場合には、この制限値を越えないように、第１のスケジューリング手段２によって選択された次の命令候補を他の命令の実行に置き換えるか、あるいは命令実行順序の入れ替えを行なうか、あるいは発熱を抑制するウェイト命令を挿入するように、第１のスケジューリング手段２によってスケジューリングされた各プロセッサごとの命令の再スケジューリングを行なうようになっている。
【００２２】
換言すれば、命令スケジューリングに着目するとき、他プロセッサと同期をとる部分については第１のスケジューリング手段２で行なわれ、発熱量を制限する部分については第２のスケジューリング手段５によって行なわれる。すなわち、図１のシステムでは、第１のスケジューリング手段２にて、他のプロセッサとの同期をとるように命令スケジューリングを行ない、この同期をとるための命令部分を固定した後、さらに第２のスケジューリング手段５にて、所定の命令スケジュール区間における発熱量が制限内になるように再スケジューリングを行なうようになっている。
【００２３】
図３は発熱量予測手段３，総発熱量予測手段４で図２のような処理がなされるとした場合の第２のスケジューリング手段５における処理の概要を説明するための図である。なお、図３の例では、説明の便宜上、１命令の実行時間間隔を１命令ステップとし、従って、図３の横軸の１つのブロック（１命令の実行時間）が１命令ステップとなっている。
【００２４】
また、図３において、単位時間が設定されるエリアは、前述のように、累積加算値Ｓ２（対象エリア内に記述された命令に対応する発熱量の予測値（テーブル読み出し）の累積加算値）を求めるときの対象となるエリアであり、第２のスケジューリング手段５は、上記エリア（単位時間）における累積加算値Ｓ２を対象エリア内の命令数で割り、平均した結果が制限値の範囲内に収まるように命令のスケジューリングを行なう。なお、図３の例では、８命令ステップが単位時間となっている。
【００２５】
図４には、１つのプロセッサ，例えばＰｍに対する命令スケジュールの一例が示されている。図４の例では、このプロセッサＰｍに割り当てられた命令スケジュールは、Ｋ個の命令スケジュール区間Ａ１〜Ａｋとして求められる。この場合、Ｋ個の命令スケジュール区間Ａ１〜Ａｋのうちの１つの区間が上記単位時間（発熱量算出範囲）に相当したものとなっている。換言すれば、図４の例では、命令スケジュール区間は、単位時間と同じ命令ステップ数からなっている。
【００２６】
このように、この第１の構成例では、この対象エリアを区間分割することにより、区間毎に累積加算値Ｓ２を得る。このため、Ｓ２はその区間に記述された命令に対応する発熱量の予測値を全て累積加算することにより得られる。図３を参照すると、第２のスケジューリング手段５は、単位時間内に発生する発熱量の平均値が制限値ＴＨ以下になるようにスケジューリング操作することを示しており、極短時間での制限値ＴＨ以上の発熱は平均化されるため問題とならなくなる。
【００２７】
次にこのような構成のマルチプロセッサシステムの処理動作例を図５のフローチャートを用いて説明する。図５を参照すると、先ず、作成したソースリスト（プログラム）ＳＬをコンパイラ９などでコンパイルして、単一のプロセッサで実行可能なオブジェクトコード（実行時のマシン語レベル）の命令に変換する（ステップＳ１）。このようにして、マシン語レベルでの命令（オブジェクトコード）が与えられると、命令割付手段１では、このコンパイル後の命令（オブジェクトコード）を各プロセッサＰ１〜Ｐｎに割り付ける（ステップＳ２）。この処理は、具体的には、マシン語レベルに変換した命令（オブジェクトコード）をマルチプロセッサシステムに適応させるために各プロセッサ毎に命令を分配した場合のデータ依存関係を考慮して命令分割を行ない、各プロセッサへ割り付けを行なう。
【００２８】
次いで、依存関係解析手段７は、各プロセッサ毎に分割された命令中の他のプロセッサとのデータ依存関係，制御依存関係の解析を行なう（ステップＳ３）。しかる後、第１のスケジューリング手段２は、各プロセッサＰ１〜Ｐｎ毎に割り付けられた命令間のデータの同期をとり、命令のスケジューリングを行なう（ステップＳ４）。具体的には、データ依存関係，制御依存関係に基づき各プロセッサ毎に同期を取るためにそれぞれに命令実行順序の入れ替えや発熱量抑制機能を付加したウェイト命令の挿入等を行なう。
【００２９】
このようにして命令のスケジューリングがなされたとき、発熱量予測手段３では、命令ステップ毎にプロセッサ単体の発熱量を予測し（ステップＳ５）、総発熱量予測手段４では、各プロセッサＰ１〜Ｐｎの命令ステップ毎の発熱量からチップ１０全体の命令ステップ毎の発熱量を予測し、さらに、チップ全体の命令ステップ毎の発熱量を単位時間当たりに総和をとって総発熱量として予測する（ステップＳ６）。この段階で、第２のスケジューリング手段５は、総発熱量予測手段４による発熱量の予測結果に基づき、命令の再スケジューリングを行なう（ステップＳ７）。
【００３０】
具体的には、第２のスケジューリング手段５は、総発熱量予測手段４によって予測された総発熱量が制限値を越える場合には、この制限値を越えないように、第１のスケジューリング手段２によって選択された次の命令候補を他の命令の実行に置き換えるか、あるいは発熱を抑制するウェイト命令を挿入するように、各プロセッサＰ１〜Ｐｎに対する命令の再スケジューリングを行ない、再スケジューリングした命令をチップ１０上の各プロセッサＰ１〜Ｐｎに組み込む。チップ１０上の各プロセッサＰ１〜Ｐｎは、再スケジューリングされた命令を実行し、この場合、上記再スケジューリングされた命令は、これを実行した場合にも各プロセッサＰ１〜Ｐｎの総発熱量（チップ１０全体の総発熱量）が制限値以下に抑制され、従って、処理を効率的に実行することができる。すなわち、チップ１０内の発熱量を許容値以上にすることなく、命令の実行が可能となる。
【００３１】
上述の例では、発熱量予測手段３，総発熱量予測手段４で図２のような処理がなされるとしたが、図２のような処理のかわりに、図６のような処理を行なうようになっていても良い。すなわち、図６の処理例では、総発熱量予測手段４は、前記単位時間当たりの総発熱量の算出において、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算するとともに、単位時間経過した命令の発熱量を前記累積加算値から減算して、総発熱量を算出するようになっている。
【００３２】
具体的に、図６の処理例では、チップ内部のプロセッサＰ１とプロセッサＰ２が命令を実行しているとする場合、先ず、図２の処理例と同様に、発熱量予測手段３は、プロセッサＰ１の実行命令の命令コードＣ１により予測値テーブルからＣ１の発熱量Ｈ１を読み出し、また、プロセッサＰ２の実行命令の命令コードＣ２により発熱量Ｈ２を読み出して、プロセッサ単体の命令ステップ単位の発熱量の予測値を算出する。
【００３３】
次いで、総発熱量予測手段４は、これら発熱量Ｈ１とＨ２の総和Ｓ１を求めることにより、その命令ステップでのチップ全体の発熱量Ｓ１（命令実行時間当たりの総発熱量）を得て、さらに、この発熱量Ｓ１を単位時間の間、累積加算し、この累積加算値により、単位時間当たりの総発熱量を得るが、この際、図６の処理例では、ある単位時間経過した命令の発熱量を上記累積加算値から減算し、これを総発熱量Ｓ２として算出する。すなわち、命令ステップ毎に新しい命令の発熱量を加算し、対象エリアからはずれた過去の命令の発熱量は減算する。これにより、単位時間領域（対象エリア）を移動させることができる。換言すれば、図６の処理例では、単位時間領域（対象エリア）を命令ステップ毎（１命令実行時間毎）に区間移動する度に累積加算値Ｓ２を得るようになっている。
【００３４】
図７にはこの場合の発熱量算出の対象となる単位時間区間の例が示されている。この例では、命令ステップ毎に新しく選択された命令の発熱量を累積加算するとともに、ある単位時間経過した命令の発熱量を累積加算値から減算することにより、発熱量算出の対象となる単位時間領域を移動させることができる。
【００３５】
このように、総発熱量予測手段４は、図６の処理例では、命令ステップ毎に単位時間領域を移動させて、総発熱量Ｓ２を算出することができる。
【００３６】
なお、一般に、スケジューリングには動的スケジューリングと静的スケジューリングとがあるが、上述の例では、静的スケジューリングで考えている。すなわち、動的スケジューリングの場合には、実時間の計測処理となることから、熱管理用プロセッサや熱センサ等が必要になるが、静的スケジューリングの場合には熱管理用プロセッサや熱センサ等を必要としない。すなわち、プロセッサＰ１〜Ｐｎを動かすプログラムデータの静的スケジューリングにおいては、プログラム実行を想定したチップ発熱の挙動について予めシミュレーションや実験等にて、命令ごとの発熱データを用意することにより、オフラインで熱管理処理を行なうことができる。
【００３７】
静的スケジューリングの処理流れとしては、前述したように、プログラムソースがコンパイルされた後、コンパイル（翻訳）された機械語命令コードは、命令割付手段１，第１のスケジューリング手段２，発熱量予測手段３，総発熱予測手段４，および第２のスケジューリング手段５を経て、熱管理処理された命令コードとなる。ただし、第２のスケジューリング手段５において、発熱を抑制するウェイト命令を挿入する場合には、ウェイト命令コードを実行するためのハードウェアが必要となる。この場合、発熱を抑制するウェイト命令コードが実行されたときの機能として、リソースに対するクロックラインの遮断機能や電圧低下機能を実現するハードウェア（スイッチングによる発熱を抑制する機能）が要求される。従って、この場合、第２のスケジューリング手段５については、これをチップ１０上にハードウェアとしてもたせるのが良い。
【００３８】
また、図８は本発明に係るマルチプロセッサシステムの他の構成例を示す図である。図８を参照すると、このマルチプロセッサシステムの命令作成装置５１は、基本的には、図１のマルチプロセッサシステムの命令作成装置１１と同様の構成となっているが、図８の命令作成装置５１では、第２のスケジューリング手段５から第１のスケジューリング手段２へのフィードバック制御がなされるようになっている。
【００３９】
図９は図８のマルチプロセッサシステム（命令作成装置５１）の処理動作例を示すフローチャートである。図９を参照すると、図８の命令作成装置５１も、基本的には、図１の命令作成装置１１の図５の処理動作と同様の処理動作を行なうが、図８の命令作成装置５１では、ステップＳ７で発熱量を基にして再スケジューリングされた命令について、ステップＳ３で、再び、データ依存，制御依存関係の解析を行ない、ステップＳ４で同期のための命令の並び替えやウェイト命令の挿入などを行なう。
【００４０】
このようなフィードバックを所定回数繰り返し行なうことで、より効率的な命令のスケジューリングが可能となり、より効率の良い発熱制御が可能となる。
【００４１】
また、図１０は図１あるいは図８の命令作成装置のハードウェア構成例を示す図である。図１０を参照すると、この命令作成装置は、例えばワークステーションやパーソナルコンピュータ等で実現され、全体を制御するＣＰＵ２１と、ＣＰＵ２１の制御プログラム等が記憶されているＲＯＭ２２と、ＣＰＵ２１のワークエリア等として使用されるＲＡＭ２３と、ソースリストＳＬを入力する入力装置２４と、作成した命令コードをチップ１０上の各プロセッサに与える出力装置２６とを有している。
【００４２】
ここで、ＣＰＵ２１は、図１あるいは図８のコンパイラ９，命令割付手段１，第１のスケジューリング手段２，発熱量予測手段３，総発熱予測手段４，および第２のスケジューリング手段５の機能を有している。
【００４３】
なお、ＣＰＵ２１におけるこのようなコンパイラ９，命令割付手段１，第１のスケジューリング手段２，発熱量予測手段３，総発熱予測手段４，および第２のスケジューリング手段５等としての機能は、例えばソフトウェアパッケージ（具体的には、ＣＤ−ＲＯＭ等の情報記録媒体）の形で提供することができ、このため、図１０の例では、情報記録媒体３０がセットさせるとき、これを駆動する媒体駆動装置３１が設けられている。
【００４４】
換言すれば、本発明の命令作成装置は、汎用の計算機システムにＣＤ−ＲＯＭ等の情報記録媒体に記録されたプログラムを読み込ませて、この汎用計算機システムのマイクロプロセッサに上述の処理を実行させる装置構成においても実施することが可能である。この場合、本発明の命令作成処理を実行するためのプログラム（すなわち、ハードウェアシステムで用いられるプログラム）は、媒体に記録された状態で提供される。プログラムなどが記録される情報記録媒体としては、ＣＤ−ＲＯＭに限られるものではなく、ＲＯＭ，ＲＡＭ，フレキシブルディスク，メモリカード等が用いられても良い。媒体に記録されたプログラムは、ハードウェアシステムに組み込まれている記憶装置、例えばハードディスク装置にインストールされることにより、このプログラムを実行して、コンパイラ９，命令割付手段１，第１のスケジューリング手段２，発熱量予測手段３，総発熱予測手段４，および第２のスケジューリング手段５の機能を実現するマルチプロセッサシステムの構築に寄与する。
【００４５】
また、本発明のコンパイラ９，命令割付手段１，第１のスケジューリング手段２，発熱量予測手段３，総発熱予測手段４，および第２のスケジューリング手段５の機能を実現するためのプログラムは、媒体の形で提供されるのみならず、通信によって（例えばサーバによって）提供されるものであっても良い。
【００４６】
また、図１０の例では、命令作成装置は、チップ１０とは別体の装置として構成されているが、命令作成装置は、チップ１０上に、プロセッサＰ１〜Ｐｎとともに実装されていても良い。すなわち、チップ１０上に、プロセッサＰ１〜Ｐｎの他に、さらに、例えば、命令作成装置として機能するＣＰＵとＲＯＭなどを実装し、命令自体をＲＯＭから供給するか、あるいは、ＣＰＵで生成し、図１０の出力装置２６のような外部との入出力インタフェースを必要とせずに、ＲＯＭから供給される命令あるいはＣＰＵで生成される命令をプロセッサＰ１〜Ｐｎに割り付けることもできる。換言すれば、プロセッサＰ１〜Ｐｎのみならず命令作成装置をも含めて１チップ上に実装したマルチプロセッサシステムとして構成することも可能であり、この場合には、１チップ内で全ての制御がなされる。
【００４７】
【発明の効果】
以上に説明したように、請求項１，請求項２，請求項４，請求項５記載の発明によれば、独立動作可能な複数のプロセッサがチップ上に実装されているマルチプロセッサシステムにおいて、コンパイル後の命令をチップ上の各プロセッサに割り付ける命令割付手段と、各プロセッサ毎に割り付けられた命令間のデータの同期をとるように命令のスケジューリングを行なう第１のスケジューリング手段と、命令ステップ毎にプロセッサ単体の発熱量を予測する発熱量予測手段と、各プロセッサの発熱量からチップ全体の発熱量を予測する総発熱量予測手段と、総発熱量予測手段によって予測された総発熱量からチップ上の各プロセッサ毎の命令の再スケジューリングを行ないチップ全体の発熱量を抑制する第２のスケジューリング手段とを有しており、発熱量を考慮した命令のスケジューリングを行ない、チップ全体の発熱量を抑えることにより、チップの発熱許容限界を越えることなく処理を行なうことができ、低消費電力化を図ることができる。
【００４８】
また、請求項３，請求項７記載の発明によれば、前記第２のスケジューリング手段から前記第１のスケジューリング手段へのフィードバックを行ない、前記第２のスケジューリング手段によって再スケジューリングされた命令を前記第１のスケジューリング手段によって再びスケジューリングする処理を、所定回数、繰り返し行なうので、より効率的な命令のスケジューリングが可能となり、より効率の良い発熱制御が可能となる。
【００４９】
また、請求項６記載の発明によれば、前記総発熱量予測手段は、前記単位時間当たりの総発熱量の算出において、命令ステップ単位でのチップ全体の発熱量の予測値を所定の命令ステップ毎に単位時間の間、累積加算するとともに、単位時間経過した命令の発熱量を前記累積加算値から減算して、総発熱量を算出するようになっているので、命令ステップ毎に単位時間区間を移動することができ、常に最新の実行ステップにおける発熱量の算出が可能となって、きめ細かな低消費電力化を図ることができる。
【図面の簡単な説明】
【図１】本発明に係るマルチプロセッサシステムの構成例を示す図である。
【図２】発熱量予測手段，総発熱量予測手段の処理例の概要を示す図である。
【図３】発熱量予測手段，総発熱量予測手段で図２のような処理がなされるとした場合の発熱量制御手段における処理の概要を説明するための図である。
【図４】１つのプロセッサ，例えばＰｍに対する命令スケジュールの一例を示す図である。
【図５】図１のマルチプロセッサシステムの処理動作例を説明するためのフローチャートである。
【図６】発熱量予測手段，総発熱量予測手段の他の処理例の概要を示す図である。
【図７】図６の処理例において、発熱量算出の対象となる単位時間区間の例を示す図である。
【図８】本発明に係るマルチプロセッサシステムの他の構成例を示す図である。
【図９】図８のマルチプロセッサシステムの処理動作例を説明するためのフローチャートである。
【図１０】図１あるいは図８の命令作成装置のハードウェア構成例を示す図である。
【符号の説明】
１          命令割付手段
２          第１のスケジューリング手段
３          発熱量予測手段
４          総発熱量予測手段
５          第２のスケジューリング手段
７          依存関係解析手段
９          コンパイラ
１０        チップ
１１        命令作成装置
Ｐ１〜Ｐｎ    プロセッサ
ＳＬ        ソースリスト
【図１】
0003567354.tif 000002
【図２】
0003567354.tif 000003
【図３】
0003567354.tif 000004
【図４】
0003567354.tif 000005
【図５】
0003567354.tif 000006
【図６】
0003567354.tif 000007
【図７】
0003567354.tif 000008
【図８】
0003567354.tif 000009
【図９】
0003567354.tif 000010
【図１０】
0003567354.tif 000011