(57)【要約】【課題】  複数のプロセッサを備えたプロセッサシステムの消費電力を処理能力を低下させることなく低減する。【解決手段】  ＣＰＵ９１０は命令コードに付加されたモード設定情報を検出し、クロック制御部９１６および電源電圧制御部９１７にクロック制御信号および電源電圧制御信号を出力する。そこで、複数の処理エンジン９１１〜９１４が並列して命令を実行する際に、所定の基準の周波数よりも低い周波数のクロック信号、および所定の基準電圧よりも低い電源電圧が供給される。これにより、消費電力が低減されるとともに、並列実行によって処理能力が確保される。【選択図】  図２９
2005128937.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを備えたプロセッサシステムであって、
上記プロセッサに実行させる命令を読み込んで、上記命令が実行される上記プロセッサの割り当てを制御する割り当て制御手段と、
上記割り当てにより各上記プロセッサに実行される上記命令に応じて、上記各プロセッサに供給するクロック信号の周波数を制御するクロック制御手段と、
上記クロック制御手段による上記クロック信号の周波数の制御に対応して、上記各プロセッサに供給する電源電圧、および上記各プロセッサを構成するトランジスタの基板ノードに供給する基板電圧のうちの少なくとも何れか１つを制御する電圧制御手段とを備え、
上記クロック制御手段、および電圧制御手段は、上記割り当て制御手段によって複数のプロセッサに並列して命令を実行させる際に、それぞれ、所定の基準の周波数よりも低い周波数のクロック信号、および所定の基準電圧よりも低い電源電圧または所定の基準の閾値電圧よりも高い閾値電圧を与える基板電圧を供給するように構成されていることを特徴とするプロセッサシステム。
【請求項２】
請求項１のプロセッサシステムであって、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とするプロセッサシステム。
【請求項３】
請求項２のプロセッサシステムであって、
上記制御情報は、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧の複数種類の組み合わせのうちの何れかを示す情報であることを特徴とするプロセッサシステム。
【請求項４】
請求項１のプロセッサシステムであって、
さらに、上記命令が、複数のプロセッサによって並列に実行可能かどうかを解析する命令解析手段を備え、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令解析手段の解析結果に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とするプロセッサシステム。
【請求項５】
請求項４のプロセッサシステムであって、
上記命令解析手段は、さらに、上記命令による処理が所定の高負荷処理であるかどうかを解析するように構成されていることを特徴とするプロセッサシステム。
【請求項６】
請求項５のプロセッサシステムであって、
上記所定の高負荷処理は、所定回数以上のループ処理を含むことを特徴とするプロセッサシステム。
【請求項７】
請求項２および請求項４のうちの何れか１項のプロセッサシステムであって、
上記複数のプロセッサは、所定の上記基板電圧に対して、第１の閾値電圧を有するトランジスタを含むプロセッサと、上記第１の閾値電圧よりも高い第２の閾値電圧を有するトランジスタを含むプロセッサとを含み、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報または上記命令解析手段の解析結果、および各プロセッサに含まれるトランジスタの閾値電圧に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とするプロセッサシステム。
【請求項８】
請求項１のプロセッサシステムであって、
上記電圧制御手段は、上記割り当て制御手段によって命令の実行を割り当てられないプロセッサへの電源電圧の供給を停止させるように構成されていることを特徴とするプロセッサシステム。
【請求項９】
請求項１のプロセッサシステムであって、
さらに、上記各プロセッサが正常に動作するかどうかを示す情報を保持する故障情報保持手段を備え、
上記割り当て制御手段は、正常に動作するプロセッサにだけ、命令の実行を割り当てるように構成されていることを特徴とするプロセッサシステム。
【請求項１０】
請求項９のプロセッサシステムであって、
さらに、上記各プロセッサにテスト動作をさせて各プロセッサが正常に動作するかどうかを検出する故障検出手段を備えたことを特徴とするプロセッサシステム。
【請求項１１】
請求項１０のプロセッサシステムであって、
上記故障検出手段は、各プロセッサに所定のテストプログラムを実行させ、その実行結果に基づいて、正常に動作するかどうかを検出するように構成されていることを特徴とするプロセッサシステム。
【請求項１２】
複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化装置であって、
上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析手段と、
上記命令解析手段の解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加手段と、
を備えたことを特徴とする命令列最適化装置。
【請求項１３】
請求項１２の命令列最適化装置であって、
上記制御情報付加手段は、さらに、１つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えるように構成されていることを特徴とする命令列最適化装置。
【請求項１４】
複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化プログラムであって、
上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析ステップと、
上記命令解析ステップによる解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加ステップと、
をコンピュータに実行させることを特徴とする命令列最適化プログラム。
【請求項１５】
請求項１４の命令列最適化プログラムであって、
上記制御情報付加ステップは、さらに、１つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えることを特徴とする命令列最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば中央処理装置（ＣＰＵ）や、ハードウェア演算エンジン（ＨＷＥ）、コプロセッサ、ＤＳＰ（digital signal processor）などと称される演算処理装置等の同種または異種の複数のプロセッサを備え、並列に演算処理が可能なプロセッサシステムにおける消費電力の低減に関する技術に属するものである。
【背景技術】
【０００２】
従来より、ＣＰＵの消費電力を低減するために、ＣＰＵの処理負荷が軽いときにクロック信号の周波数を低下させる技術が知られている（例えば、特許文献１参照）。また、ＣＰＵやコプロセッサなどの複数のユニットを有するプロセッサシステムにおいて、デコードされた命令がno-operationであるときに、対応するユニットの電源をオフとすることにより、システム全体の消費電力や発熱量の低減を図る技術も知られている（例えば、特許文献２参照）。
【０００３】
さらに、処理の付加や動作環境の設定に応じて、同時に動作するＣＰＵの数を制御することにより、処理能力を高くしたり消費電力を小さくしたりできるようにする技術も知られている（例えば、特許文献３参照）。
【特許文献１】特開平９−３４５９９号公報
【特許文献２】特開２０００−１１２７５６号公報
【特許文献３】特開平９−１３８７１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のように単にクロック信号の周波数を低下させる手法は、処理負荷が軽いときには用いることができるものの、高い処理能力が必要とされる場合には適用することができないため、システム全体として必ずしも大幅に消費電力を低減させることはできない。
【０００５】
また、処理を行わないユニットの電源をオフにする手法では、処理が行われる際の消費電力自体は低減されないため、やはり、必ずしも大幅に消費電力を低減させることはできない。
【０００６】
さらに、同時に動作するＣＰＵの数を制御する手法では、高い処理能力を必要とする場合の消費電力を低減することはできず、処理能力と消費電力との両立を図ることはできない。
【０００７】
上記の問題点に鑑み、本発明は、特に複数のプロセッサを備えたプロセッサシステムの消費電力を大幅に低減することができ、しかも、処理能力と消費電力との両立を図ることも可能にすることを課題とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、請求項１の発明が講じた解決手段は、
複数のプロセッサを備えたプロセッサシステムであって、
上記プロセッサに実行させる命令を読み込んで、上記命令が実行される上記プロセッサの割り当てを制御する割り当て制御手段と、
上記割り当てにより各上記プロセッサに実行される上記命令に応じて、上記各プロセッサに供給するクロック信号の周波数を制御するクロック制御手段と、
上記クロック制御手段による上記クロック信号の周波数の制御に対応して、上記各プロセッサに供給する電源電圧、および上記各プロセッサを構成するトランジスタの基板ノードに供給する基板電圧のうちの少なくとも何れか１つを制御する電圧制御手段とを備え、
上記クロック制御手段、および電圧制御手段は、上記割り当て制御手段によって複数のプロセッサに並列して命令を実行させる際に、それぞれ、所定の基準の周波数よりも低い周波数のクロック信号、および所定の基準電圧よりも低い電源電圧または所定の基準の閾値電圧よりも高い閾値電圧を与える基板電圧を供給するように構成されていることを特徴とする。
【０００９】
これにより、所定の基準の周波数よりも低い周波数のクロック信号を供給することによって、回路遅延マージンが大きくなるので所定の基準電圧よりも低い電源電圧または所定の基準の閾値電圧よりも高い閾値電圧を与える基板電圧を供給して動作させることができ、消費電力を低減することができる一方、複数のプロセッサに並列して命令を実行させることによって、処理能力を確保することができる。
【００１０】
また、請求項２の発明は、
請求項１のプロセッサシステムであって、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とする。
【００１１】
また、請求項３の発明は、
請求項２のプロセッサシステムであって、
上記制御情報は、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧の複数種類の組み合わせのうちの何れかを示す情報であることを特徴とする。
【００１２】
これらにより、命令に含まれる制御情報に基づいてプロセッサの割り当て等が制御され、割り当て等のために命令の解析回路等を設ける必要がないので、小さな回路規模で消費電力を低減することができる。
【００１３】
また、請求項４の発明は、
請求項１のプロセッサシステムであって、
さらに、上記命令が、複数のプロセッサによって並列に実行可能かどうかを解析する命令解析手段を備え、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令解析手段の解析結果に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とする。
【００１４】
また、請求項５の発明は、
請求項４のプロセッサシステムであって、
上記命令解析手段は、さらに、上記命令による処理が所定の高負荷処理であるかどうかを解析するように構成されていることを特徴とする。
【００１５】
また、請求項６の発明は、
請求項５のプロセッサシステムであって、
上記所定の高負荷処理は、所定回数以上のループ処理を含むことを特徴とする。
【００１６】
これらにより、命令の解析に基づいてプロセッサの割り当て等が決定されるので、特にプロセッサの割り当て等を示す情報が含まれていないような命令コードの命令を実行させる場合でも、消費電力を低減し得る一方、回数の多いループ処理などを高速に行わせ得るように割り当て等を制御することができる。また、プログラム開発者等が具体的なクロック信号の周波数などを意識することなく、消費電力または処理能力などを指示するだけで、容易に消費電力の低減や処理速度の向上を図ることができる。
【００１７】
ここで、上記解析の際に参照する命令の数が多いほど、多少複雑な繰り返し処理などでも並列処理が可能になり、より確実に消費電力が低減されるようにすることが容易にできるが、一方上記命令の数を多くすることは、解析をする回路の規模を増大させることになるので、プロセッサシステムに必要とされる処理能力や消費電力などに応じた数の命令が解析の対象となるようにすればよい。また、プロセッサに割り当てる命令の単位は、１命令ごとに限らず、例えばまとまりを持った処理内容の一連の命令が何れかのプロセッサで高いクロック効率で実行できる場合などには、そのような一連の命令を単位として割り当てするようにしてもよい。
【００１８】
また、請求項７の発明は、
請求項２および請求項４のうちの何れか１項のプロセッサシステムであって、
上記複数のプロセッサは、所定の上記基板電圧に対して、第１の閾値電圧を有するトランジスタを含むプロセッサと、上記第１の閾値電圧よりも高い第２の閾値電圧を有するトランジスタを含むプロセッサとを含み、
上記割り当て制御手段、クロック制御手段、および電圧制御手段は、上記命令に含まれる制御情報または上記命令解析手段の解析結果、および各プロセッサに含まれるトランジスタの閾値電圧に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を制御するように構成されていることを特徴とする。
【００１９】
これにより、低閾値電圧のトランジスタを含むプロセッサを動作させることによって処理能力を確保することができる一方、高閾値電圧のトランジスタを含むプロセッサを動作させることによって、アクティブリーク電流を低減し、一層、消費電力を小さく抑えることが容易にできる。
【００２０】
また、請求項８の発明は、
請求項１のプロセッサシステムであって、
上記電圧制御手段は、上記割り当て制御手段によって命令の実行を割り当てられないプロセッサへの電源電圧の供給を停止させるように構成されていることを特徴とする。
【００２１】
これにより、動作していないプロセッサのリーク電流が生じないようにして、やはり、一層、消費電力を小さく抑えることができる。
【００２２】
また、請求項９の発明は、
請求項１のプロセッサシステムであって、
さらに、上記各プロセッサが正常に動作するかどうかを示す情報を保持する故障情報保持手段を備え、
上記割り当て制御手段は、正常に動作するプロセッサにだけ、命令の実行を割り当てるように構成されていることを特徴とする。
【００２３】
また、請求項１０の発明は、
請求項９のプロセッサシステムであって、
さらに、上記各プロセッサにテスト動作をさせて各プロセッサが正常に動作するかどうかを検出する故障検出手段を備えたことを特徴とする。
【００２４】
また、請求項１１の発明は、
請求項１０のプロセッサシステムであって、
上記故障検出手段は、各プロセッサに所定のテストプログラムを実行させ、その実行結果に基づいて、正常に動作するかどうかを検出するように構成されていることを特徴とする。
【００２５】
これらにより、故障していないプロセッサのクロック周波数や電源電圧が制御されることによって、処理能力を保証するとともに、消費電力を低減することができる。
【００２６】
また、請求項１２の発明は、
複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化装置であって、
上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析手段と、
上記命令解析手段の解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加手段と、
を備えたことを特徴とする。
【００２７】
また、請求項１４の発明は、
複数のプロセッサを備えたプロセッサシステムによって実行される命令列を最適化する命令列最適化プログラムであって、
上記命令列における各命令が、複数のプロセッサによって実行可能かどうかを解析する命令解析ステップと、
上記命令解析ステップによる解析結果、および消費電力または処理能力を指示する情報に基づいて、上記プロセッサの割り当て、クロック信号の周波数、および電源電圧または基板電圧を示す制御情報を上記命令列に付加する制御情報付加ステップと、
をコンピュータに実行させることを特徴とする。
【００２８】
これらにより、前記請求項２について説明したような、小さな回路規模でプロセッサの割り当てを制御し、消費電力を低減し得るプロセッサシステムによって実行可能な命令列を容易に生成することができる。
【００２９】
また、請求項１３の発明は、
請求項１２の命令列最適化装置であって、
上記制御情報付加手段は、さらに、１つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えるように構成されていることを特徴とする。
【００３０】
また、請求項１５の発明は、
請求項１４の命令列最適化プログラムであって、
上記制御情報付加ステップは、さらに、１つのプロセッサによって実行されることを示す命令を、複数のプロセッサによって並列に実行されることを示す命令に置き換えることを特徴とする。
【００３１】
これらにより、複数のプロセッサに並列に処理を行わせることが容易にできる。
【発明の効果】
【００３２】
以上のように本発明によると、プロセッサごとに、実行される命令に応じてクロック周波数を制御することにより、処理能力を低下させることなく、消費電力を低減することができる。さらに、上記クロック周波数の制御と対応させて、各プロセッサに供給される電源電圧や基板電圧を制御することにより、一層、消費電力を低減することができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施形態を図面に基づいて詳細に説明する。
【００３４】
《本発明の概要、および消費電力等とクロック周波数等との関係》
まず、本発明によって消費電力が低減されるメカニズムに関連する消費電力等とクロック周波数等との関係について説明する。
【００３５】
（消費電力と、クロック周波数、電源電圧との関係）
ＣＭＯＳトランジスタ回路の消費電力と、クロック周波数および電源電圧との間には、リーク電流を無視すれば、概ね次のような関係がある。
【００３６】
Ｐ  ∝  Ｋ×Ｃ×Ｖｄｄ2×ｆ                                  （１）
ここで、
Ｐ    ：消費電力
Ｋ    ：トランジスタのスイッチング確率
Ｃ    ：駆動される負荷容量
Ｖｄｄ：電源電圧
ｆ    ：クロック周波数（トランジスタの動作周波数）である。
【００３７】
上式から解るように、電源電圧やクロック周波数を低くすることによって、消費電力を小さくすることができる。すなわち、一定の処理（処理内容とデータとの組み合わせによる処理）を行うために必要な実行サイクル数は一定なので、所定の時間内において、あるクロック周波数での実行サイクル数が上記一定の処理に必要な実行サイクル数よりも多い場合には、無駄なトランジスタのトグル（オン、オフスイッチング）が行われることになる。そこで、クロック周波数を低くして上記所定の時間内での実行サイクル数を少なくすることにより、無駄なトグル回数を減らして消費電力を低減することができる。
【００３８】
しかも、クロック周波数を低くすると、回路遅延マージンが大きくなるため、以下に説明するように電源電圧を低下させることができ、したがって消費電力（上記のように電源電圧の２乗に比例する）を一層小さく抑えることができる。また、例えば一定の処理を２つのプロセッサに分散して並列に実行させる際に、クロック周波数を１／２にすれば、処理能力は同等でも、やはり、電源電圧を低下させることができるので消費電力を小さく抑えることができる。
【００３９】
（回路の遅延時間と、電源電圧、トランジスタの閾値電圧との関係、およびリーク電流と閾値電圧との関係）
回路の遅延時間（ゲート遅延時間）と、電源電圧およびトランジスタの閾値電圧との間には、次のような関係がある。
【００４０】
ｔｄ  ∝  Ｖｄｄ×Ｃ／（Ｖｄｄ−Ｖｔ）2                      （２）
ここで、
ｔｄ  ：回路の遅延時間
Ｃ    ：駆動される負荷容量
Ｖｄｄ：電源電圧
Ｖｔ  ：トランジスタの閾値電圧である。
【００４１】
すなわち、遅延時間は、駆動される負荷容量が一定だとすれば、電源電圧と閾値電圧とによって定まる。具体的には、例えば、閾値電圧が０．４Ｖの場合、
電源電圧が２．５  Ｖのときの遅延時間をｔｄ１、
電源電圧が１．７５Ｖのときの遅延時間をｔｄ２とすると、
ｔｄ２／ｔｄ１≒１．６９となる。つまり、電源電圧が２．５Ｖから１．７５Ｖに低下すると、遅延時間は約１．６９倍になる。そこで、電源電圧が２．５Ｖでクロック周波数がｆのときに適切に動作する回路は、電源電圧が１．７５Ｖに低下しても、クロック周波数が約ｆ／１．６９≒０．５９×ｆ以下であれば動作させることができ、逆に、約０．５９×ｆのクロック周波数で動作させる場合には、電源電圧を１．７５Ｖまで低下させることができる。したがって、前記式（１）に示したように、クロック周波数を低くすることによって、そのこと自体による消費電力の低減効果に加えて、電源電圧を低下させることによる消費電力の低減効果が得られる。
【００４２】
また、クロック周波数を低くすることによって回路遅延マージンが大きくなると、上記のように電源電圧を低くできるのと同様に、閾値電圧を高くすることことによってリーク電流を小さくすることができる。すなわち、リーク電流と閾値との間には、次のような関係がある。
【００４３】
Ｉｌｅａｋ  ∝  ｅｘｐ｛−Ｖｔ／（Ｓ×ｌｎ１０）｝            （３）
ここで、
Ｉｌｅａｋ  ：リーク電流
Ｓ          ：Ｓファクタである。
【００４４】
具体的には、例えば、電源電圧が２．５Ｖの場合に閾値電圧を０．３Ｖから０．６Ｖにしたとすると、上記式（２）によれば遅延時間は１．３４倍になる（クロック周波数が０．７５×ｆ以下なら動作させることができる）が、このとき、Ｓファクタを１００ｍＶとすると、リーク電流は２７％程度にすることができる。したがって、やはり、クロック周波数を低くすることによって、リーク電流を小さくすることによる消費電力の低減効果も得ることができる。
【００４５】
すなわち、近年の半導体プロセスにおける回路の微細化に伴って、閾値電圧を低く（スケーリング）することや、大容量のメモリを半導体チップ内に搭載することによる回路規模の増大などに応じてリーク電流の増大が顕在化しがちであるのに対して、逆に、クロック周波数を低くして遅延時間の増大を許容し得るようにすることにより、閾値電圧が高くなるように基板電圧を制御したりして消費電力を低減することができる。
【００４６】
ここで、上記のような閾値電圧は、固定的に設定する場合には、例えば不純物濃度を設定することなどによって行うことができる。また、動的に設定する場合には、例えば半導体基板電圧を制御することによって、すなわち、トランジスタの基板ノード（ウェルが形成されている場合には、そのウェル）とソースノードとに対して逆バイアス電圧を印加することによって行うことができる。
【００４７】
本発明においては、上記のようなクロック周波数、電源電圧、および閾値電圧と、消費電力との関係を利用して、複数のプロセッサにそれぞれ実行される命令を割り当てるとともに、各プロセッサの処理内容（実行される命令の処理時間）に応じて、プロセッサに供給するクロック周波数等を制御することにより、全体の処理能力の低下を招くことなく、大幅な低消費電力化が実現される。
【００４８】
以下、本発明の具体的な実施形態について説明する。
【００４９】
《発明の実施形態１》
実施形態１として、半導体集積回路で構成されたプロセッサシステムにおいて、命令に付加されたフラグに基づいて、命令をＣＰＵとハードウェアエンジン（ＨＷＥ）との何れのモジュール（機能ブロック）に実行させるかの割り当て、およびクロック周波数の制御が行われる例について説明する。
【００５０】
図１は、プロセッサシステムの要部の構成を示すブロック図である。このプロセッサシステムは、記憶部１００と、フラグ検出部１０１と、命令割り当て制御部１０２と、ＣＰＵ１０３と、ＨＷＥ１０４と、ＳＲＡＭ１０５と、クロック制御部１０６と、バス１０７とを備えている。（上記フラグ検出部１０１と命令割り当て制御部１０２によって割り当て制御手段が構成され、フラグ検出部１０１とクロック制御部１０６によってクロック制御手段が構成される。）
上記記憶部１００は、実行される命令の命令コードが格納されるもので、例えばあらかじめ命令コードが記憶されたＲＯＭや、ハードディスクに記憶された命令コードがロードされるＲＡＭなどによって構成される。上記命令コードには、ＣＰＵ１０３およびＨＷＥ１０４のクロック周波数に関する動作モードを示す情報が含まれている。具体的には、例えば図２に示すように、命令コードは、命令の内容を示す命令コード本体に、その命令がＣＰＵ１０３またはＨＷＥ１０４の何れで実行されるかを示す割り当て制御フラグと、ＣＰＵ１０３またはＨＷＥ１０４をそれぞれ動作させるクロック信号の周波数を示すクロック制御フラグとが付加されて成っている。上記クロック制御フラグは、より詳しくは、例えば図３に示すように、上位２ビットがＣＰＵ１０３に供給されるクロック信号の周波数を示し、下位２ビットがＨＷＥ１０４に供給されるクロック信号の周波数を示すようになっている。このようなフラグは、例えばプログラム設計者が付加することなどもできるが、後述する命令列最適化装置によって自動的に付加させることもできる。なお、必ずしも上記のようにＣＰＵ１０３とＨＷＥ１０４とで独立に全てのクロック周波数を指定し得るようにするのに限らず、所定のクロック周波数の組み合わせを指定し得るようにしてもよい。また、特にクロック周波数の指定がない場合に、最高のクロック周波数になるようにしてもよい。
【００５１】
フラグ検出部１０１は、記憶部１００から読み出された命令コードと、その命令コードに含まれる割り当て制御フラグに基づいた割り当て制御信号とを命令割り当て制御部１０２に出力するとともに、クロック制御フラグに基づくクロック制御信号をクロック制御部１０６に出力するようになっている。
【００５２】
命令割り当て制御部１０２は、上記フラグ検出部１０１から出力された割り当て制御信号に応じて、ＣＰＵ１０３またはＨＷＥ１０４に命令コードを転送するようになっている。なお、上記フラグ検出部１０１および命令割り当て制御部１０２は、ハードウェアによって構成されるようにしてもよいが、ＣＰＵ１０３等よりも上位のプロセッサなどによって構成されるようにしてもよい。また、ＣＰＵ１０３やＨＷＥ１０４への命令コードの転送は直接行われるのに限らず、バス１０７を介して行われるようにしてもよい。
【００５３】
ＣＰＵ１０３は、内部に有する演算リソースやＳＲＡＭ１０５等を用いて、一般的な種々の命令を実行する汎用のプロセッサである。（なお、このＣＰＵ１０３には半導体集積回路全体の種々の動作を制御する機能を持たせるようにしてもよい。）
一方、ＨＷＥ１０４は、例えば、１つのまたは一連の命令による、ＭＰＥＧ−４演算や、ビタビ復号演算、積和演算などの特定の演算処理（定型処理）を高速に（少ない処理サイクル数で）、かつ、ＣＰＵ１０３の処理とは独立して（いわゆる突き放しで）行うプロセッサである。（ここでは説明の簡単のために、例えば図２に示すアドレス００００〜０００３のようなループ処理を高速に行えるとして説明する。）
ＳＲＡＭ１０５は、バス１０７を介してＣＰＵ１０３およびＨＷＥ１０４と接続され、ＣＰＵ１０３やＨＷＥ１０４の処理における一時的なデータなどが格納される共有メモリである。なお、このようなメモリとしては、通常、高速な動作が可能なＳＲＡＭ（Static RAM）が用いられるが、これに限るものではない。
【００５４】
クロック制御部１０６は、前記フラグ検出部１０１から出力されるクロック制御信号に応じた周波数のクロック信号を、ＣＰＵ１０３、ＨＷＥ１０４、およびＳＲＡＭ１０５に供給するものである。このクロック制御部１０６は、具体的には例えば図４に示すように、所定の周波数のクロック信号を生成するクロックジェネレータ１０６ａと、上記クロック信号を所定の分周比で分周する分周器１０６ｂと、フラグ検出部１０１から出力されるクロック制御信号を保持する周波数制御レジスタ１０６ｃと、ＣＰＵ１０３、ＨＷＥ１０４、およびＳＲＡＭ１０５に、上記周波数制御レジスタ１０６ｃの保持内容に応じた周波数のクロック信号を選択的に出力するセレクタ１０６ｄとを備えて構成されている。
【００５５】
次に、上記のように構成されたプロセッサシステムの動作について説明する。図５は、記憶部１００に格納された命令が実行されるときの制御動作を示すフローチャートである。なお、同図は、プロセッサシステムの制御動作を模式的に示すもので、実際には、必ずしも同図に示す各ステップが順に行われるのではなく、通常、前記各部の動作が並行して行われる。
【００５６】
（Ｓ１００）  フラグ検出部１０１は、記憶部１００に記憶されている命令コード（または命令コード群）を先読みし、その命令コードに含まれる割り当て制御フラグ、およびクロック制御フラグを検出する。
【００５７】
（Ｓ１０１）〜（Ｓ１０３）  フラグ検出部１０１は、次に、上記割り当て制御フラグの検出結果に基づいたＣＰＵ１０３またはＨＷＥ１０４を示す割り当て制御信号と、上記命令コードとを命令割り当て制御部１０２に出力する。ここで、上記命令コードは、上記フラグが付加されたままでもよいし、またはフラグを除去してもよい。
【００５８】
（Ｓ１０４）  さらに、フラグ検出部１０１は、クロック制御フラグの検出結果に基づいて、クロック制御信号をクロック制御部１０６に出力する。
【００５９】
（Ｓ１０５）  クロック制御部１０６は、上記クロック制御信号に応じて、ＣＰＵ１０３、およびＨＷＥ１０４に出力するクロック信号の周波数を切り替える。具体的には、図２のプログラムの例では、ＨＷＥ１０４には、アドレス００００〜０００４の命令コードが実行される際に周波数ｆのクロック信号が供給される。一方、ＣＰＵ１０３には、アドレス０００５〜０００８の命令コードが実行される際に周波数ｆ／２のクロック信号が供給され、アドレス０００９の命令コードが実行される際に周波数ｆのクロック信号が供給される。また、ＳＲＡＭ１０５へは、ＣＰＵ１０３またはＨＷＥ１０４に供給されるクロック信号の周波数のうち、高い方の周波数のクロック信号が供給される。
【００６０】
（Ｓ１０６）  命令割り当て制御部１０２は、上記フラグ検出部１０１から出力された割り当て制御信号に応じて、命令コードをＣＰＵ１０３またはＨＷＥ１０４に転送する。例えば図２に示したプログラムの例では、アドレス００００〜０００４の命令コードはＨＷＥ１０４に転送されて実行され、アドレス０００５〜０００９の命令コードはＣＰＵ１０３に転送されて実行される。
【００６１】
ここで、図２に示したプログラム例の内容について簡単に説明すると、アドレス００００〜０００３の命令コードは、アドレス０００１〜０００２の命令コードの実行が４回繰り返されるループ演算が行われることを示している。アドレス０００４の命令コードは、上記ループ演算が行われた結果、ＨＷＥ１０４のレジスタ（Ａ）に保持されたデータが、ＳＲＡＭ１０５におけるアドレスｘｘｘｘの領域に格納されることを示している。また、アドレス０００９の命令コードは、ＣＰＵ１０３によってアドレス０００５〜０００８の処理が行われた後、レジスタ（Ａ）に保持されているデータに、上記ＨＷＥ１０４によってＳＲＡＭ１０５に格納されたデータが加算されることを示している。
【００６２】
このようなプログラムが実行される場合、図６に示すように、まず、アドレス００００〜０００４の命令コードがＨＷＥ１０４に転送され、実行される。一方、アドレス０００５〜０００８の命令コードは、上記ＨＷＥ１０４による実行と並行して、順次転送されながら実行される。
【００６３】
そこで、例えば、ＨＷＥ１０４によるアドレス００００〜０００３の命令コード（ループ演算）の実行がＣＰＵ１０３の２倍の効率で１ループあたり２クロックで行われ、アドレス０００４の命令コードの実行が１クロックで行われるとすると、合計で２クロック×４ループ＋１クロックで９クロック要することになる。一方、ＣＰＵ１０３によるアドレス０００５〜０００８の命令コードの実行が４クロックで行われるとすると、この所要クロック数は上記ＨＷＥ１０４によるループ演算の所要クロック数の約１／２にあたることになる。
【００６４】
そこで、もし、ＣＰＵ１０３およびＨＷＥ１０４に同じ周波数ｆのクロック信号が供給されるとすると、ＣＰＵ１０３はＨＷＥ１０４の約１／２の時間でアドレス０００８までの命令コードの実行を完了することになる。そして、この場合、次のアドレス０００９の命令コードは、ＨＷＥ１０４によるループ演算の演算結果を参照しているので、上記ループ演算が終了するまで実行することができず、その間、ＣＰＵ１０３では無駄に電力が消費されることになってしまう。すなわち、ＣＰＵ１０３とＨＷＥ１０４の処理内容の統合が必要な場合には、どちらかが（相対的に過剰な演算処理性能を有し処理能力が高いなどのために）処理を早く完了したとしても、他方の演算結果が出るまでの間、内部状態を維持したまま待つ必要があり、その間アイドル状態で動作して不要なトグルによる電力を消費し続けることになる。
【００６５】
ところが、本実施形態のプロセッサシステムでは、前記のように、ＣＰＵ１０３でアドレス０００５〜０００９の命令コードが実行される際には、クロック制御フラグに基づいて、ｆ／２の周波数のクロック信号がＣＰＵ１０３に供給される。このため、ＣＰＵ１０３の消費電力を約１／２に抑えられるとともに、ＣＰＵ１０３の処理は、周波数ｆのクロック信号が供給されるＨＷＥ１０４の処理とほぼ同時に終了する（処理時間が等価になる）ので、プロセッサシステム全体の処理能力の低下を招くことがない。すなわち、処理能力と消費電力とを両立させ得るクロック周波数の組み合わせを最適化した動作モードで種々の処理を行わせることができる。しかも、上記のように命令コードに付加されたフラグに基づいて、プロセッサの割り当てやクロック周波数の制御をすることにより、複雑なデコード回路等を設ける必要がないので、回路規模を小さく抑えることもできる。
【００６６】
なお、命令の所要クロック数と供給可能な周波数によっては、必ずしも待ち時間が全くなくならなくても、最高周波数より低い周波数にして少しでも待ち時間が短くなれば、処理能力を低下させることなく消費電力を低減できることになる。
【００６７】
また、ＣＰＵ１０３またはＨＷＥ１０４の一方が動作しないとき、すなわち実行する命令が割り当てられないときや、各プロセッサで実行される命令の終了タイミングが正確には一致せずに多少の待ち時間が生じるときなどには、クロック信号の供給を停止（または入力されるクロック信号をディスエイブル状態に）するようにしてもよい。
【００６８】
《発明の実施形態２》
次に、上記のような、各プロセッサの割り当ておよびクロック周波数を制御するためのフラグが付加された命令コードを生成する命令列最適化装置の例について説明する。
【００６９】
この命令列最適化装置は、例えば、コンパイラやオプティマイザなどと称されるプログラムが実行されるコンピュータによって構成され、機能的な構成としては、図７に示すような構成を有している。
【００７０】
同図において、記憶装置２０１は、フラグが付加される前後のソースプログラムおよびオブジェクトプログラムを記憶するものである。上記ソースプログラムとしては、例えば命令コード列から成る実行形式の機械語プログラムや、アセンブラプログラム、また、抽象度の高いＣ言語プログラムなどを用いることができる。ここで、アセンブラプログラムやＣ言語プログラムなどの場合には、機械語プログラムへの展開が行われるとともにフラグが付加されるようにしてもよいし、一旦、命令コードの付加を示す情報が埋め込まれた中間プログラムが生成された後に、フラグが付加された機械語プログラムが生成されるようにしてもよい。
【００７１】
命令解析部２０２（命令解析手段）は、ソースプログラムを解析し、ソースプログラムに含まれる各命令（一連の命令から成る命令群を含む）が、何れのプロセッサで実行可能かや、並列に実行可能かを判定するとともに、各命令の相互関係（処理内容の依存関係）、すなわち、例えばある命令Ｉ１の実行結果が他の命令Ｉ２の実行にあたって参照される場合には、命令Ｉ１の実行が完了しなければ命令Ｉ２は実行できないなどの実行タイミングの制約を判定するようになっている。
【００７２】
標準実行時間推定部２０３（実行時間推定手段）は、各命令が各プロセッサによって所定の基準のクロック周波数（例えば最高周波数：以下、「標準クロック周波数」と呼ぶ。）で実行される場合の標準実行時間を推定するようになっている。上記標準実行時間は、具体的には、例えば、各プロセッサごとに種々の命令の実行に要する所要クロック数が登録されたテーブルを参照し、これに標準クロック周波数の逆数（１／ｆ）を乗算することによって得ることができる。なお、上記所要クロック数に関しては、何れかの基準とするプロセッサによって実行される際の所要クロック数を上記のようにして求め、これに他のプロセッサで実行される場合の効率（基準とするプロセッサとの処理能力の比）を乗算することによって、他のプロセッサによって実行される場合の所要クロック数を簡易に推定することもできる。また、プログラム中にループ演算や条件分岐が含まれている場合などには、必ずしも正確な所要クロック数を求められるとは限らないが、そのような場合には、例えばサンプルデータを用いたシミュレーションやプログラム設計者による指定などによってループ回数や分岐条件等を設定することにより、妥当な推定値や最悪値を所要クロック数として求めることなどができる。
【００７３】
換算実行時間算出部２０４は、各命令が各プロセッサによって種々のクロック周波数で実行される場合に要する換算実行時間を算出するようになっている。具体的には、標準実行時間×（標準クロック周波数／各クロック周波数）によって換算実行時間が求められる。なお、例えば、標準実行時間と種々のクロック周波数との組み合わせに対応して、あらかじめ上記換算実行時間が登録されたテーブルを参照することによって求めるなどしてもよい。
【００７４】
ここで、上記標準実行時間や換算実行時間としては、文字通り時間の単位の値を用いてもよいが、クロック数を用いるようにしてもよい。すなわち、標準実行時間として所要クロック数を用い、各クロック周波数に応じた換算実行時間として、所要クロック数×（標準クロック周波数／各クロック周波数）を用いるなどしてもよい。
【００７５】
割り当て・クロック周波数決定部２０５（割り当て決定手段、クロック周波数決定手段）は、上記命令解析部２０２によって判定された、各命令を実行可能なプロセッサおよび実行タイミングの制約を示す情報と、換算実行時間算出部２０４によって算出された各命令の換算実行時間とに基づいて、消費電力が最も小さくなるように、各命令を実行させるプロセッサの割り当て、および各命令が実行される際に供給するクロック信号の周波数を決定するようになっている。具体的には、例えば、図８（ａ）（ｂ）に示すように、命令ａ、ｂがプロセッサＡ、Ｂによって実行される場合において、クロック周波数がｆのときに、命令ａはプロセッサＡ、Ｂの何れで実行されても実行時間が同じである一方、命令ｂがプロセッサＡで実行される実行時間はプロセッサＢで実行される実行時間の１／２であるとし、また、命令ａ、ｂの実行が共に完了した後でなければ次の命令の実行が可能でないとした場合、命令ｂがプロセッサＡによって実行されるようにすれば、プロセッサＡの処理には余裕があることになる。そこで、プロセッサＡのクロック周波数をｆ／２にすることにより、全体の処理時間に影響を与えることなく、消費電力を低減することができる。
【００７６】
フラグ付加部２０６（割り当て制御情報付加手段、クロック制御情報付加手段）は、上記割り当て・クロック周波数決定部２０５によって決定された割り当て、および周波数に基づいて、前記図２に示したように、各命令の命令コードに割り当て制御フラグおよびクロック制御フラグを付加するようになっている。なお、割り当て制御フラグを付加するのに代えて、または付加するとともに、ＣＰＵ１０３とＨＷＥ１０４とで並列に実行させることが可能な１つまたは一連の命令コードを並列演算命令に置き換えるようにしてもよい。
【００７７】
次に、上記命令列最適化装置の動作について、図９に基づいて説明する。
【００７８】
（Ｓ１０００）  まず、ソースプログラムが解析され、各命令を実行可能なプロセッサが判別される。また、複数の命令が並行して実行される場合に、何れの命令も実行が完了しなければ他の命令が実行できないような命令などの実行タイミングの制約が検出される。
【００７９】
（Ｓ１００１）  次に、ソースプログラムに含まれる全ての命令が、ある１つのプロセッサだけによって実行可能であるかどうかが判定され、判定結果がＹｅｓであれば、上記全ての命令は上記１つのプロセッサによって例えば最高クロック周波数で実行させればよいので、処理は後述する（Ｓ１００６）に移行する。
【００８０】
（Ｓ１００２）  上記（Ｓ１００１）の判定結果がＮｏであれば、各命令が各プロセッサによって標準クロック周波数で実行される場合の標準実行時間が推定される。
【００８１】
（Ｓ１００３）  さらに、各命令が各プロセッサによって種々のクロック周波数で実行される場合に要する換算実行時間が算出される。
【００８２】
（Ｓ１００４）  上記のようにして算出された換算実行時間、および（Ｓ１０００）で検出された命令間の相互関係（命令の実行タイミングの制約）に基づいて、消費電力が最も小さくなるように、各命令を実行させるプロセッサの割り当て、および各命令の実行時に供給するクロック信号の周波数が決定される。
【００８３】
具体的には、例えば、まず各命令を実行可能なプロセッサへの割り当ての全ての組み合わせに対して、それぞれ、前記図８で説明したように、全てのプロセッサを例えば標準クロック周波数で動作させたときに処理に余裕のあるプロセッサ、すなわち、他のプロセッサの処理が終了するまで待ちが生じるプロセッサを求める。次に、上記余裕のあるプロセッサに対する、全体の処理時間に影響を与えることがない最も低いクロック周波数、つまり、後続する命令によって演算結果を参照される演算処理が、他のプロセッサによる演算処理よりも遅くなることなく終了し得る最も低い周波数（またはそのような周波数と標準クロック周波数との比など）を求める。（なお、実際には、標準実行時間と各換算実行時間とを比較して、標準実行時間以下の換算実行時間のうちで最も長い換算実行時間に対応する周波数を求めるなどしてもよい。）
これによって、各割り当ての組み合わせごとに、各プロセッサによる各命令の実行に対して、その実行の際のクロック周波数が対応付けられるので、各割り当ての組み合わせについての消費電力（実際には各命令の実行に必要なクロック数の合計などでもよい）がそれぞれ求められる。
【００８４】
そこで、上記消費電力が最も小さい割り当ての組み合わせを求めれば、処理能力を低下させることなく消費電力を低減できる各命令の割り当て、およびクロック周波数が決定される。
【００８５】
（Ｓ１００５）  上記命令の割り当て、およびクロック周波数の決定に基づいた割り当て制御フラグとクロック制御フラグとが、ソースプログラムに含まれる命令の命令コードに付加され、オブジェクトプログラムとして記憶装置２０１に格納される。
【００８６】
（Ｓ１００６）  一方、前記（Ｓ１００１）で、ソースプログラムに含まれる全ての命令が、ある１つのプロセッサだけによって実行可能であると判定された場合には、前記のように全ての命令は上記１つのプロセッサによって例えば最高クロック周波数で実行させればよいので、ソースプログラムに含まれる命令の命令コードに、そのプロセッサへの割り当てを示す割り当てフラグと、最高クロック周波数を示すクロック制御フラグとが付加される。
【００８７】
（Ｓ１００７）  ソースプログラムの全ての命令についての処理が終わるまで、上記（Ｓ１００２）〜（Ｓ１００５）の処理が繰り返される。
【００８８】
上記のようにして割り当て制御フラグおよびクロック制御フラグが付加された命令コードを生成することによって、前記実施形態１に示したような複数のプロセッサを有するプロセッサシステムで、処理能力を低下させることなく大幅に小さな消費電力で実行させることのできるプログラムが得られる。
【００８９】
なお、上記（Ｓ１００４）において、全ての割り当ての組み合わせの数が多くなるなどの場合には、少数のプロセッサに極端に多くの命令が割り当てられるような組み合わせについての考慮を省略することによって、最適化装置の処理負荷を軽減し得るようにしてもよい。すなわち、例えば、プロセッサの割り当てが決定される際に、図７、９に破線で示すように、あらかじめ設定された処理比率設定情報などに基づいて各プロセッサによる処理量（処理時間や所要クロック数の合計）の比率を所定の範囲に制限し（処理比率設定手段）、その範囲の割り当ての組み合わせのうちで消費電力が最も小さい組み合わせを求めるようにすることにより、上記のようなフラグの付加を高速に行わせることができる。この場合、各プロセッサによる命令実行の並列度も高くなるので命令全体の実行速度が速くなることにもなる。特に上記処理比率を種々設定し得るようにすることにより、プロセッサシステムの消費電力および命令実行速度と、最適化装置によるフラグ付加処理の負荷とをプロセッサシステムの使用目的などに応じて調整することなどもできる。また、上記のような処理を、ソースプログラムの全ての命令について一括して行わず、所定の一連の命令ごとに行うなどしてもよい。この場合でも、上記一連の命令の長さを適切に設定して局所的な消費電力を小さくすれば、全体の消費電力も大幅に低減することができるとともに、割り当ての組み合わせの数が少なく抑えられるので、やはり、最適化装置の処理負荷を軽減することができる。
【００９０】
また、上記消費電力を算出する際には、各プロセッサにおける消費電力の相違を考慮して所定の係数をかけるなどして、より確実に消費電力を低減し得るようにしてもよい。
【００９１】
また、上記の例では、処理に余裕のあるプロセッサや、全体の処理時間に影響を与えない最低クロック周波数を求める際に換算実行時間を用いる例を示したが、これに限らず、標準実行時間を用いるようにしてもよい。すなわち、例えば標準実行時間の差によって余裕の有無を判別したり、標準実行時間の比などに基づいて、上記最低クロック周波数等を求めるなどしてもよい。
【００９２】
《発明の実施形態２の変形例》
上記実施形態２の命令列最適化装置と同様に、命令コードにフラグを付加する、他の命令列最適化装置について説明する。なお、以下、前記実施形態１、２等と同様の機能を有する構成要素については同一の符号を付して説明を省略する。
【００９３】
この命令列最適化装置は、複数のプロセッサによって実行可能な命令が標準実行時間の最も短いプロセッサによって実行されるようにプロセッサへの命令の割り当てを決定し、その割り当てのもとに、消費電力が小さくなるようにクロック周波数が決定されるようになっている。具体的には、この装置は、例えば図１０に示すように、前記実施形態２（図７）と比べて、割り当て・クロック周波数決定部２０５に代えて割り当て決定部３１１とクロック周波数決定部３１２とを備えている点が異なる。
【００９４】
上記割り当て決定部３１１は、複数のプロセッサによって実行可能な命令が、標準実行時間推定部２０３によって算出された標準実行時間の最も短い（所要クロック数が最も少ない）プロセッサによって実行されるように、割り当てを決定するようになっている。
【００９５】
また、クロック周波数決定部３１２は、上記のように決定された割り当てに対して、全てのプロセッサを標準クロック周波数で動作させたときに処理に余裕のあるプロセッサを、全体の処理時間に影響を与えることがない最も低いクロック周波数で動作させるように（待ち時間が最も短くなるように）、クロック周波数を決定するようになっている。
【００９６】
上記のように構成された命令列最適化装置の動作は、図１１に示すように、実施形態２（図９）と以下の点が異なっている。
【００９７】
（Ｓ１１５１）  標準実行時間の算出（Ｓ１００２）がなされた後、複数のプロセッサによって実行可能な命令が、それぞれ最も標準実行時間の短いプロセッサで実行されるように、プロセッサの割り当てが決定される。
【００９８】
（Ｓ１１０４）  図９の（Ｓ１００４）と異なり、クロック周波数の決定だけがなされる。すなわち、各命令が上記（Ｓ１１５１）で割り当てられたプロセッサによって標準クロック周波数で実行される際に、他のプロセッサの処理が終了するまで待ち時間が生じる（余裕がある）プロセッサに対して、上記待ち時間が短くなり、かつ、全体の処理時間に影響を与えることがない最も低い周波数のクロック信号が供給されるように決定される。これによって、上記のようなプロセッサの割り当ての範囲内で、プロセッサシステムの処理能力を低下させることなく、消費電力を低減することができる。
【００９９】
上記のようにしてプロセッサの割り当ておよびクロック周波数が決定されると、実施形態２と同様に（Ｓ１００５）で上記決定に応じた割り当て制御フラグおよびクロック制御フラグが命令コードに付加される。
【０１００】
上記のように、各命令が標準実行時間の最も短いプロセッサによって実行されるようにすることにより、命令コードの実行効率を高くして合計の所要クロック数を低減することができるうえ、やはり、実行時間に余裕のあるプロセッサに供給されるクロック信号の周波数を低くすることによって、無駄なトランジスタのトグルを減少させることができるので、大幅に消費電力を低減することができる。しかも、クロック周波数の決定処理は、１組のプロセッサの割り当ての組み合わせに対してなされるだけなので、最適化装置の処理負荷を軽減し、高速にフラグの付加を行わせるようにすることもできる。
【０１０１】
なお、上記のように各命令が標準実行時間の最も短いプロセッサで実行されるように割り当てられる場合、同種の命令が多く含まれるプログラムなどの場合には、単一の、または少数のプロセッサへの割り当てが集中することも考えられる。この場合、消費電力は小さく抑えられるが、各プロセッサによる処理の並列度が低下して、プログラム全体の実行に要する時間が長くかかることになる。そこで、消費電力が多少増えてもプログラム全体の実行時間を短く抑えるためには、実施形態２で説明したのと同様、図１０、１１に破線で示すように、処理比率設定情報などに基づいて、各プロセッサによる処理量の比率を所定の範囲に制限するなどすればよい。
【０１０２】
また、各命令を最も標準実行時間の短いプロセッサで実行されるように割り当てるのに代えて、例えば全てのプロセッサが標準クロック周波数で動作する場合にプログラム全体（または所定の一連の命令列全体）の実行時間が最も短くなるように、プロセッサを割り当てるようにしてもよい。すなわち、複数のプロセッサで実行可能な命令については、標準実行時間が最も短いプロセッサでなくても、そのプロセッサと並行して実行させ得る他のプロセッサに割り当て、各プロセッサによる処理の並列度を高くすることによって、プログラム全体の実行時間等を短くすることができる。そして、その場合でも、実行時間に余裕のあるプロセッサに供給されるクロック信号の周波数を低くすることによって、無駄なトランジスタのトグルを減少させて消費電力を低減することができる。また、この場合にも、前記のように各プロセッサによる処理量の比率を所定の範囲に制限するなどして、その範囲内で、実行時間が短くなるように割り当てを決定するようにすれば、最適化装置の処理負荷を軽減することもできる。
【０１０３】
また、さらに、例えば、割り当て決定部３１１（並べ替え手段）でプロセッサの割り当てが決定される際に命令の実行順序の並べ替えが行われるようにしてもよい。すなわち、例えば図１２に示すように、前記図１１の各ステップに加えて、（Ｓ１２５１）で命令の並べ替え処理が行われるようにしてもよい。
【０１０４】
具体的には、例えば図１３（ａ）に示すような命令ａ〜ｄがソースプログラムに記述されている場合において、命令ａ、ｃは、それぞれプロセッサＡで４クロックで逐次実行可能である一方、命令ｂはプロセッサＢに転送後、プロセッサＡの動作とは独立して１２クロックで実行可能であり、これらの命令ａ〜ｃの実行終了後に命令ｄの実行が可能であるとすると、ソースプログラムに記述された通りの順序で演算処理がなされる場合には、図１３（ｂ）および以下に示すように各命令が実行されることになる。
【０１０５】
（１）  命令ａが、プロセッサＡに順次転送されながら、クロック周波数ｆ、所要クロック数４クロックで実行される。
【０１０６】
（２）  命令ａの終了後、命令ｂが、プロセッサＢにまとめて転送された後、クロック周波数ｆ、所要クロック数１２クロックで実行される。
【０１０７】
（３）  上記命令ｂの実行と並行して、命令ｃが、順次転送されながら、クロック周波数ｆ／３、所要クロック数４クロック（クロック周波数がｆとした場合の換算実行時間は１２クロック分）で実行される。
【０１０８】
これに対して、命令の順序が図１３（ｃ）に示すように並べ替えられる場合には、図１３（ｄ）および以下に示すように実行させることができる。
【０１０９】
（１）  命令ｂが、プロセッサＢにまとめて転送された後、クロック周波数ｆ×３／４、所要クロック数１２クロック（換算実行時間は１６クロック分）で実行される。
【０１１０】
（２）  上記命令ｂの実行と並行して、命令ａが、プロセッサＡに順次転送されながら、クロック周波数ｆ／２、所要クロック数４クロック（換算実行時間は８クロック分）で実行される。
【０１１１】
（３）  続いて、命令ｃも、クロック周波数ｆ／２、所要クロック数４クロック（換算実行時間は８クロック分）で実行される。
【０１１２】
つまり、命令の実行順序を入れ替えることによって、プロセッサによる処理の並列度を高くして実行時間の余裕を大きくすることができる。それゆえ、命令ａ〜ｃの何れも低いクロック周波数で実行させることができ、消費電力を大幅に低減することができる。また、クロック周波数を低くすると、後述するように電源電圧も低くすることなどによってさらに消費電力を低減することもできるが、元の実行順序で命令ｃについてだけクロック周波数をｆ／３にするよりも、並べ替え後のように命令ａ、ｃについて共にｆ／２にする方が、より大きな消費電力低減効果を得ることができる。なお、上記のように命令の実行順序を並べ替えた場合でも、図１３（ｅ）に示すように、命令ｂはクロック周波数ｆで実行させ、命令ａ、ｂはｆ×２／３で実行させるようにしてもよい。この場合には、全体の処理速度を向上させることができるとともに、消費電力も、命令の実行順序を並べ替える前よりは小さくすることができる。
【０１１３】
《発明の実施形態３》
次に、前記実施形態１のように命令コードに付加されたフラグに基づいてクロック周波数等を制御するのではなく、フラグを有しない通常の命令コードを用いても、同様に消費電力を低減できるプロセッサシステムの例を説明する。すなわち、このプロセッサシステムは、命令コードに付加されたフラグを検出する代わりに、実施形態２の命令列最適化装置のような命令の割り当ておよびクロック周波数を決定する機能を持たせて、その決定に基づいて、命令の割り当ておよびクロック周波数を制御するようになっている。
【０１１４】
具体的には、例えば図１４に示すように、実施形態１（図１）のフラグ検出部１０１に代えて、命令解析部４０２（命令解析手段）、標準実行時間推定部４０３（実行時間推定手段）、換算実行時間算出部４０４、および割り当て・クロック周波数決定部４０５（割り当て決定手段、クロック周波数決定手段）が設けられている。これらの各部は、それぞれ、実施形態２（図７）の命令解析部２０２、標準実行時間推定部２０３、換算実行時間算出部２０４、または割り当て・クロック周波数決定部２０５と同じような機能を有するものである。ただし、通常、実施形態２のような命令列最適化装置ではソフトウェアとコンピュータによって上記のような機能がもたらされるのに対し、本実施形態のプロセッサシステムは、ＣＰＵ１０３やＨＷＥ１０４による命令の実行速度に応じたタイミングで制御を行うためにハードウェアによって構成される。（ただし、これに限るものではなく、例えばＣＰＵ１０３等よりも上位のプロセッサなどによって制御されるようにしてもよい。）
このプロセッサシステムの動作は、図１５に示すように、概ね実施形態１、２（図５、９）の動作を組み合わせたものと同様である。
【０１１５】
（Ｓ１３００）  まず、命令解析部４０２が、記憶部１００に記憶されている所定量の一連の命令コードを先読みし、命令コードが解析される。この命令コードの解析の内容は、基本的に実施形態２の（Ｓ１０００）で行われるものと同様であるが、命令解析部４０２がハードウェアによって構成される場合には、必ずしも全ての命令コードについてまとめて解析されずに、そのハードウェア規模に応じた上記所定量の一連の命令コードごとに解析が行われるようにしてもよい。
【０１１６】
（Ｓ１３０１）  次に、上記先読みされた一連の命令コード中に含まれる各命令が、何れも同一の一方のＣＰＵ１０３またはＨＷＥ１０４の一方でだけ実行可能なものであり、かつ、その実行可能な方のＣＰＵ１０３またはＨＷＥ１０４が動作状態（他の命令の実行を完了しない状態）である場合には、後述する（Ｓ１３０６）に移行して、上記各命令が実行可能なＣＰＵ１０３またはＨＷＥ１０４を示す割り当て信号と、例えば最高クロック周波数を示すクロック制御信号とが出力される。すなわち、上記のような場合にはＣＰＵ１０３とＨＷＥ１０４とで並列処理を行うことができず、したがって上記一連の全体の処理能力は各命令の実行時間に依存することになるので、割り当ておよびクロック周波数は上記のように設定されればよい。
【０１１７】
（Ｓ１００２）〜（Ｓ１００４）  一方、一連の命令コード中に含まれる各命令が、ＣＰＵ１０３またはＨＷＥ１０４のうち互いに異なる方で実行可能である場合や、他の命令を実行中ではない方のＣＰＵ１０３またはＨＷＥ１０４で実行可能である場合には、並列処理を行わせることができるので、実施形態２（図９）で説明したのと同じように、標準実行時間の推定、換算実行時間の算出がなされた後、先読みされた一連の命令コードの範囲内での実行に関して消費電力が最小になるようにプロセッサの割り当ておよびクロック周波数の決定がなされる。
【０１１８】
（Ｓ１３０５）  上記命令の割り当て、およびクロック周波数の決定に基づいた割り当て制御信号とクロック制御信号とが、命令割り当て制御部１０２およびクロック制御部１０６に出力される。
【０１１９】
（Ｓ１３０６）  一方、前記（Ｓ１３０１）で説明したように、先読みされた一連の命令コード中に含まれる各命令が、何れも同一の一方のＣＰＵ１０３またはＨＷＥ１０４でだけ実行可能なものであり、かつ、その実行可能なＣＰＵ１０３またはＨＷＥ１０４が他の命令の実行を完了しない状態であると判定された場合には、上記各命令が実行可能なＣＰＵ１０３またはＨＷＥ１０４を示す割り当て信号と、最高クロック周波数を示すクロック制御信号とが出力される。
【０１２０】
（Ｓ１０５）〜（Ｓ１０６）  クロック制御部１０６は、上記クロック制御信号に応じて、ＣＰＵ１０３、ＨＷＥ１０４、およびＳＲＡＭ１０５に出力するクロック信号の周波数を切り替え、命令割り当て制御部１０２は、上記割り当て制御信号に応じて、命令コードをＣＰＵ１０３またはＨＷＥ１０４に転送し、命令の実行がなされる。
【０１２１】
上記のように、実行時に命令コードを解析してプロセッサの割り当ておよびクロック周波数を決定するようにすることによって、フラグが付加されていないような通常の命令コードが用いられる場合であっても、消費電力を低減することができる。
【０１２２】
なお、本実施形態のプロセッサシステムにおいても、図１４、１５に破線で示すように、処理比率設定情報などに基づき、各プロセッサによる処理量の比率を所定の範囲に制限するなどして（処理比率設定手段）、その範囲の割り当ての組み合わせのうちで消費電力が最も小さい組み合わせを求めるようにすることにより、消費電力が最小となる割り当ての組み合わせを求めるためのハードウェア規模の低減を図ったり、ＣＰＵ１０３およびＨＷＥ１０４の処理の並列度を高めて一連の命令全体の実行速度を速くしたりすることができる。
【０１２３】
《発明の実施形態３変形例》
上記実施形態３のプロセッサシステムと同様に、フラグを有しない通常の命令コードを用いても消費電力を低減できる、他のプロセッサシステムについて説明する。
【０１２４】
このプロセッサシステムは、前記実施形態３のプロセッサシステム（図１４）が実施形態２の命令列最適化装置（図７）のような命令の割り当ておよびクロック周波数の決定機能を有するのに対し、実施形態２の変形例（図１０）と同様の機能を有して命令の割り当ておよびクロック周波数を制御するようにしたものである。すなわち、ＣＰＵ１０３またはＨＷＥ１０４の何れのプロセッサによっても実行可能な命令が、標準実行時間の短い方のプロセッサによって実行されるように命令の割り当てを決定し、その割り当てのもとに、消費電力が小さくなるようにクロック周波数を決定して、割り当ておよび周波数の制御を行うようになっている。より具体的には、例えば図１６に示すように、実施形態３（図１４）と比べて、割り当て・クロック周波数決定部４０５に代えて、割り当て決定部５１１とクロック周波数決定部５１２とを備えている点が異なる。
【０１２５】
上記割り当て決定部５１１およびクロック周波数決定部５１２は、それぞれ、実施形態２の変形例（図１０）の割り当て決定部３１１またはクロック周波数決定部３１２と同様の機能を有するものである。すなわち、割り当て決定部５１１は、各命令が、双方のプロセッサによって実行可能な場合、標準実行時間推定部４０３によって算出された標準実行時間に基づいて、上記標準実行時間が短い（所要クロック数が少ない）方のプロセッサによって実行されるように、割り当てを決定するようになっている。
【０１２６】
また、クロック周波数決定部５１２は、上記のように決定された割り当てに対して、両方のプロセッサを例えば標準クロック周波数で動作させたときに処理に余裕のある方のプロセッサを、全体の処理時間に影響を与えることがない最も低いクロック周波数で動作させるように、クロック周波数を決定するようになっている。
【０１２７】
上記のように構成されたプロセッサシステムの動作は、図１７に示すように、実施形態３（図１５）と以下の点が異なっている。（この相違点は、実施形態２の命令列最適化装置の動作（図９）に対する、その変形例の動作（図１１）の相違点と同様である。）
（Ｓ１１５１）  標準実行時間の算出（Ｓ１００２）がなされた後、上記標準実行時間に基づいて、双方のプロセッサによって実行可能な命令が、それぞれ標準実行時間の短い方のプロセッサで実行されるように、割り当てが決定される。
【０１２８】
（Ｓ１１０４）  図１５の（Ｓ１００４）と異なり、クロック周波数の決定だけがなされる。すなわち、各命令が上記（Ｓ１１５１）で割り当てられたプロセッサによって標準クロック周波数で実行される際に、他のプロセッサの処理が終了するまで待ち時間が生じる（余裕がある）プロセッサに対して、上記待ち時間が短くなり、かつ、全体の処理時間に影響を与えることがない最も低い周波数のクロック信号が供給されるように決定される。これによって、上記のようなプロセッサの割り当ての範囲内で、プロセッサシステムの処理能力を低下させることなく、消費電力を低減することができる。
【０１２９】
上記のようにしてプロセッサの割り当て、およびクロック周波数が決定されると、実施形態３と同様に（Ｓ１３０５）で上記決定に応じた割り当て制御信号とクロック制御信号とが、命令割り当て制御部１０２およびクロック制御部１０６に出力され、（Ｓ１０５）〜（Ｓ１０６）で、クロック制御部１０６によるＣＰＵ１０３、ＨＷＥ１０４、およびＳＲＡＭ１０５に出力するクロック信号の周波数の切り替え、および命令割り当て制御部１０２による命令コードのＣＰＵ１０３またはＨＷＥ１０４への転送がなされ、これらの命令が実行される。
【０１３０】
上記のように、各命令が標準実行時間の短い方のプロセッサによって実行されるようにすることにより、命令コードの実行効率を高くして合計の所要クロック数を低減することができるうえ、実行時間に余裕のあるプロセッサに供給されるクロック信号の周波数を低くすることによって、無駄なトランジスタのトグルを減少させることができるので、やはり、大幅に消費電力を低減することができる。しかも、実施形態３のように種々の割り当ての組み合わせのうちで消費電力が最も小さい組み合わせを求めるのに比べて、標準実行時間の短いプロセッサを求める方が処理は単純であり、また、クロック周波数の決定は、１組のプロセッサの割り当ての組み合わせに対してなされるだけなので、割り当て決定部５１１およびクロック周波数決定部５１２の回路規模を小さく抑えることもできる。
【０１３１】
なお、本実施形態３の変形例においても、標準実行時間の短いプロセッサを求めるためのハードウェア規模の低減を図ったり、消費電力が多少増えても各プロセッサによる処理の並列度を高めて一連の命令コード全体の実行時間を短く抑えたりするためには、図１６、１７に破線で示すように、処理比率設定情報などに基づいて、各プロセッサによる処理量の比率を所定の範囲に制限するなどすればよい。
【０１３２】
また、やはり、各命令が最も標準実行時間の短いプロセッサで実行されるように割り当てるのに代えて、例えば全てのプロセッサが標準クロック周波数で動作する場合に全体の実行時間が最も短くなるように、プロセッサを割り当てるようにすることもできる。さらに、各プロセッサによる処理量の比率を所定の範囲に制限するなどし、その範囲内で実行時間が短くなるように割り当てを決定するようにして、プロセッサの割り当てを決定するためのハードウェアの規模を低減することもできる。
【０１３３】
《発明の実施形態４》
前記実施形態１では、プロセッサの割り当て、およびクロック周波数の制御が共に命令コードに付加されたフラグに基づいて行われる一方、実施形態３では、共にプロセッサシステムによる命令コードの解析に基づいて行われる例を示したが、プロセッサの割り当てだけをフラグに基づいて行い、クロック周波数の制御は解析に基づいて行うようにしてもよい。
【０１３４】
本実施形態のプロセッサシステムは、例えば図１８に示すように、実施形態３（図１４）の命令解析部４０２、および割り当て・クロック周波数決定部４０５に代えて、フラグ検出部６０１、命令解析部６０２、およびクロック周波数決定部５１２を備えている点が異なっている。
【０１３５】
上記フラグ検出部６０１は、命令コード含まれる割り当て制御フラグだけを検出する点が実施形態１（図１）のフラグ検出部１０１と異なり、記憶部１００から読み出された命令コードを命令割り当て制御部１０２に出力するとともに、割り当て制御フラグを検出して、これに応じた割り当て制御信号を命令割り当て制御部１０２およびクロック周波数決定部５１２に出力するようになっている。
【０１３６】
また、命令解析部６０２は、実施形態２の変形例（図１０）の命令解析部２０２が有する機能のうち、クロック周波数の決定に必要な内容、すなわち各命令の相互関係（処理内容の依存関係）や実行タイミングの制約を解析するようになっている。
【０１３７】
クロック周波数決定部５１２は、実施形態３の変形例（図１６）と同じもので、フラグ検出部６０１から出力される割り当て制御信号に基づいて、ＣＰＵ１０３およびＨＷＥ１０４を例えば標準クロック周波数で動作させたときに処理に余裕のある方のプロセッサを、全体の処理時間に影響を与えることがない最も低いクロック周波数で動作させるように、クロック周波数を決定するようになっている。
【０１３８】
以下、上記のように構成されたプロセッサシステムの動作について、図１９に基づいて説明する。
【０１３９】
（Ｓ１４００）  フラグ検出部６０１は、記憶部１００に記憶されている命令コード（または命令コード群）を先読みし、その命令コードに含まれる割り当て制御フラグを検出する。また、命令解析部６０２は、先読みされた命令コードにおける実行タイミングの制約等を解析する。
【０１４０】
（Ｓ１０１）〜（Ｓ１０３）  フラグ検出部６０１は、次に、上記割り当て制御フラグの検出結果に基づいて、ＣＰＵ１０３またはＨＷＥ１０４を示す割り当て制御信号を命令割り当て制御部１０２に出力する。また、上記命令コードを、上記フラグが付加されたまま、またはフラグを除去して、命令割り当て制御部１０２に出力する。
【０１４１】
（Ｓ１００２）  標準実行時間推定部４０３は、各命令が各プロセッサによって標準クロック周波数で実行される場合の標準実行時間を推定する。
【０１４２】
（Ｓ１００３）  換算実行時間算出部４０４は、各命令が各プロセッサによって種々のクロック周波数で実行される場合に要する換算実行時間を算出する。
【０１４３】
（Ｓ１４０４）  クロック周波数決定部５１２は、フラグ検出部６０１から出力される、割り当て制御フラグに応じた割り当て制御信号に基づいて、各プロセッサに供給されるクロック信号の周波数を決定する。すなわち、各命令が上記フラグに応じたプロセッサによって標準クロック周波数で実行される際に、他のプロセッサの処理が終了するまで待ち時間が生じる（余裕がある）プロセッサに対して、上記待ち時間が短くなり、かつ、全体の処理時間に影響を与えることがない最も低い周波数のクロック信号が供給されるように決定される。これによって、上記のようなプロセッサの割り当ての範囲内で、プロセッサシステムの処理能力を低下させることなく、消費電力を低減することができる。
【０１４４】
（Ｓ１４０５）  クロック周波数決定部５１２は、上記クロック周波数の決定に基づいたクロック制御信号をクロック制御部１０６に出力する。
【０１４５】
（Ｓ１０５）〜（Ｓ１０６）  クロック制御部１０６は、上記クロック制御信号に応じて、ＣＰＵ１０３、ＨＷＥ１０４、およびＳＲＡＭ１０５に出力するクロック信号の周波数を切り替え、命令割り当て制御部１０２は、上記割り当て制御信号に応じて、命令コードをＣＰＵ１０３またはＨＷＥ１０４に転送し、命令の実行がなされる。
【０１４６】
上記のようにプロセッサの割り当て、およびクロック周波数の制御がなされることにより、やはり、処理能力の低下を招くことなく消費電力を低減することができる。しかも、プロセッサの割り当ては割り当て制御フラグに基づいて行われるので、命令解析部６０２はクロック周波数の決定に必要な実行タイミングの制約等を解析するだけでよく、また、クロック周波数決定部５１２は１組のプロセッサの割り当ての組み合わせに対してクロック周波数を決定するだけでよいので、実施形態３のプロセッサシステムに比べて、命令解析部６０２およびクロック周波数決定部５１２の回路規模を小さく抑えることができる。
【０１４７】
《発明の実施形態５》
上記実施形態４のような、各プロセッサの割り当てを制御するためのフラグだけが付加された命令コードは、例えば図２０に示すような命令列最適化装置によって生成することができる。
【０１４８】
すなわち、実施形態２の変形例（図１０）の命令列最適化装置に対して、割り当て制御フラグの付加に必要な機能だけを持たせたもので、フラグ付加部７０６は、割り当て決定部３１１の決定に応じて割り当て制御フラグだけを命令コードに付加するようになっている。
【０１４９】
この命令列最適化装置の動作は、図２１に示すように、実施形態２の変形例（図１１）と比べて、クロック周波数を決定するための動作（Ｓ１００３）（Ｓ１１０４）が実行されない点と、（Ｓ１５０５）（Ｓ１５０６）で割り当て制御フラグの付加だけが行われる点のみ異なる。
【０１５０】
なお、本実施形態においても、実施形態２の変形例で説明したのと同様、図２０、２１に破線で示すように、処理比率設定情報などに基づいて各プロセッサによる処理量の比率を所定の範囲に制限するようにしたり、一連の全体の実行時間が最も短くなるようにプロセッサを割り当てるようにしたり、また、命令の実行順序を並べ替えるようにしたりしてもよい。
【０１５１】
《発明の実施形態６》
上記のようにクロック周波数が制御されるとともに、さらに、ＣＰＵ１０３等に供給される電源電圧が制御されるプロセッサシステムの例について説明する。すなわち、クロック周波数が低くなると、回路の遅延マージンが大きくなるため、回路の遅延時間を長くすることができ、したがって、電源電圧を低くすることができる。そして、消費電力は電源電圧の２乗に比例するので、大幅な低消費電力化が可能になる。
【０１５２】
具体的には、本実施形態のプロセッサシステムでは、例えば図２２に示すように、実施形態１（図１）の構成に加えて、電源電圧制御部７０１（電圧制御手段）が設けられている。上記電源電圧制御部７０１は、フラグ検出部１０１から出力されるクロック制御信号に応じて、あらかじめクロック周波数と対応させて設定された電源電圧、すなわち、クロック周波数が低いほど、定格電圧よりも低い電源電圧をＣＰＵ１０３、ＨＷＥ１０４、およびＳＲＡＭ１０５に供給するようになっている。電源電圧制御部７０１は、より詳しくは、例えば図２３に示すように、フラグ検出部１０１から出力されるクロック制御信号を電源電圧制御信号として保持する電源電圧制御レジスタ７０１ａと、例えばＤＣ−ＤＣコンバータや電源ＩＣにより構成され、ＣＰＵ１０３、ＨＷＥ１０４、およびＳＲＡＭ１０５に、それぞれ上記電源電圧制御レジスタ７０１ａの保持内容に応じた電圧を出力する電源７０１ｂとを備えている。
【０１５３】
このプロセッサシステムの動作は、クロック制御部１０６によりクロック周波数が切り替えられるのに応じて、電源電圧制御部７０１から出力される電源電圧が切り替えられる点を除いて、実施形態１（図５）と同じである。このようにクロック周波数を低くするとともに電源電圧を低くすることにより、プロセッサシステムの動作や処理能力に影響を与えることなく、一層、消費電力を小さくすることができる。
【０１５４】
なお、上記のようにしてＣＰＵ１０３等に供給される電源電圧は、同じクロック周波数に対して互いに同一である必要はなく、各回路特性等に応じて設定するようにしてもよい。
【０１５５】
また、電源電圧を高く切り替えるタイミングは、クロック周波数を高く切り替えるタイミングよりも早くなるようにして、クロック周波数切り替え時の回路遅延マージンが十分に確保されるようにしてもよい。
【０１５６】
また、実施形態１で説明したように、クロック信号の供給を停止してＣＰＵ１０３またはＨＷＥ１０４の動作を停止させる際には、電源電圧の供給も停止させる（接地電圧を供給する）ようにして、リーク電流による待機電力が完全に抑えられるようにしてもよいし、例えばＨＷＥ１０４に対してだけ、そのような電源電圧の供給停止がなされるようにしてもよい。また、停止された電源電圧の供給が開始されるタイミングも、クロック信号の供給開始タイミングよりも早くなるようにしてもよい。さらに、プロセッサシステム全体への電源投入時やリセット時などに、最初の命令コードがプリフェッチされてフラグの検出がなされるまでの間は、定格電圧が供給されるようにして、上記最初の命令コードを実行するプロセッサの確実な動作を容易に確保できるようにしてもよい。
【０１５７】
さらに、例えば図２４、図２５に示すように、電源電圧制御レジスタ７０１ａに保持されたクロック信号供給の有無を示す信号をスタンバイ／アクティブ制御信号としてＣＰＵ１０３およびＨＷＥ１０４に出力し、クロック信号の供給を停止する際に電源電圧の供給を停止するのとともに、または電源電圧の供給を停止するのに代えて、ＣＰＵ１０３やＨＷＥ１０４をスタンバイ状態（バス１０７から切り離されて待機状態になり、内部状態は固定される。）にするようにしてもよい。さらに、クロック信号の供給は常に行われる一方、電源電圧の供給だけが停止されるようにしてもよい。
【０１５８】
《発明の実施形態７》
上記のように電源電圧を制御するのに代えて、ＣＰＵ１０３等が形成される半導体基板の基板電圧を制御するようにしてもよい。すなわち、半導体基板上に形成されたトランジスタの閾値電圧が高くなるように基板電圧を制御すると、回路の遅延時間は長くなる一方、トランジスタのリーク電流が小さくなる。そこで、クロック周波数が低くなって回路の遅延マージンが大きくなる際には、これに応じて閾値電圧が高くなるように基板電圧を制御することによって消費電力を低減することができる。
【０１５９】
具体的には、本実施形態のプロセッサシステムでは、例えば図２６に示すように、実施形態１（図１）の構成に加えて、基板電圧制御部８０１（電圧制御手段）が設けられている。上記基板電圧制御部８０１は、フラグ検出部１０１から出力されるクロック制御信号に応じて、あらかじめクロック周波数と対応させて設定された基板電圧、すなわち、クロック周波数が低いほど、閾値電圧が高くなるような基板電圧（逆バイアス電圧）をＣＰＵ１０３等に供給するようになっている。
【０１６０】
このプロセッサシステムの動作は、クロック制御部１０６によりクロック周波数が切り替えられるのに応じて、基板電圧制御部８０１から出力される基板電圧が切り替えられる点を除いて、実施形態１（図５）と同じである。
【０１６１】
上記のようにクロック周波数を低くするとともに基板電圧を制御することにより、やはり、プロセッサシステムの動作や処理能力に影響を与えることなく、一層、消費電力を小さくすることができる。
【０１６２】
なお、上記基板電圧に関しても、実施形態６で電源電圧について説明したのと同様に、ＣＰＵ１０３等に供給される基板電圧を互いに異ならせるようにしたりしてもよい。また、クロック信号の供給が停止される際には、例えば電源電圧と同レベルの電圧を基板電圧として印加するなどしてもよい。
【０１６３】
《発明の実施形態８》
また、例えば図２７に示すように、電源電圧制御部７０１と基板電圧制御部８０１とを両方とも設けて、電源電圧および基板電圧を共にクロック周波数に応じて制御するようにしてもよい。この場合、電源電圧制御部７０１および基板電圧制御部８０１にクロック周波数と対応して設定される電源電圧と基板電圧との組み合わせを半導体集積回路の特性等に応じて最適化することができる。
【０１６４】
具体的には、例えば、クロック周波数が標準クロック周波数よりも低い場合に、リーク電流が比較的大きい場合には、クロック周波数に応じて許容される遅延時間の範囲内で電源電圧を低くするとともに閾値電圧が高くなるように基板に逆バイアス電圧を印加して（何れも遅延時間は長くなり、消費電力は小さくなる）、両者による消費電力の低減効果が得られるようにしてもよい。一方、リーク電流が比較的小さい場合には、電源電圧を大幅に低くする（遅延時間は長くなり、消費電力は小さくなる）一方、閾値電圧は低くなるように基板に順バイアス電圧を印加して（遅延時間は短くなり、リーク電流は大きくなる）、総じてクロック周波数に応じて許容される遅延時間を満足し、かつ、電源電圧を低くすることによる消費電力の低減効果が大きく得られるようにしてもよい。
【０１６５】
なお、本実施形態においても、実施形態６、７で説明したように、ＣＰＵ１０３等に供給される電源電圧や基板電圧をそれぞれ互いに異ならせるようにしたりしてもよい。また、クロック信号の供給が停止されても電源電圧は供給される場合には、例えば電源電圧と同レベルの電圧を基板電圧として印加するなどしてもよい。さらに、クロック信号の供給が停止されて電源電圧の供給も停止される際には基板電圧の供給も停止されるようにしたりしてもよい。
【０１６６】
《発明の実施形態９》
上記のようにクロック周波数が決定されると、消費電力およびプロセッサシステムの発熱量もほぼ定まることになる。そこで、例えば、図２８に示すように半導体集積回路９００を冷却する冷却ファンなどを有するクーリング装置９０１（冷却手段、冷却制御手段）をクロック制御信号に基づいて制御するようにしてもよい。より詳しくは、上記クーリング装置９０１は、例えばクロック周波数と対応させて所定の制御値が登録されたテーブルを参照して、冷却ファンの回転速度を制御することにより、クロック周波数、電源電圧（これは上記のようにクロック周波数に応じて決定される。）、およびリーク電流（これはクロック周波数に応じて決定された基板電圧によって定まる。）に応じた冷却能力で半導体集積回路９００を冷却するようになっている。これにより、半導体集積回路９００の熱暴走を確実に防止し、かつ、冷却のために要する消費電力を小さく抑えることができる。
【０１６７】
《発明の実施形態１０》
上記の例では、複数のプロセッサ（ＣＰＵ１０３およびＨＷＥ１０４）のうちの何れかを例えば最高クロック周波数で動作させる一方、他を上記最高クロック周波数よりも低いクロック周波数で動作させることによって、処理能力を低下させることなく消費電力を低減する例を示したが、複数のプロセッサに最高クロック周波数よりも低い周波数のクロック信号、および定格電圧よりも低い電源電圧を供給して並列に動作させることにより、やはり消費電力を低減するとともに、処理能力と消費電力との関係を柔軟に設定することができる。
【０１６８】
図２９は、本実施形態のプロセッサシステムの要部の構成を示すブロック図である。この例では、前記実施形態６（図２２）のフラグ検出部１０１および命令割り当て制御部１０２に代えて、ＣＰＵ９１０が設けられている。また、ＣＰＵ１０３およびＨＷＥ１０４に代えて（またはこれらと伴に）、４つのプロセッサである処理エンジン９１１〜９１４が設けられている。さらに、クロック制御部１０６および電源電圧制御部７０１に代えて、クロック制御部９１６および電源電圧制御部９１７が設けられている。
【０１６９】
上記ＣＰＵ９１０は、上位プロセッサとしてシステム全体を制御するとともに、各命令コードに付加された、動作モードを示すモード設定情報（例えば図３０に示すようなプロセッサの割り当てと電源電圧とクロック周波数との組み合わせを示す情報）を検出し、電源電圧制御信号、およびクロック制御信号を出力するようになっている。なお、モード設定情報を検出するのに代えて、前記実施形態１で説明したのと同じように、プロセッサの割り当て、電源電圧、およびクロック周波数をそれぞれ示す情報を検出するようにしてもよい。また、プロセッサの割り当てに代えて並列数を示す情報を検出し、これに基づいてプロセッサの割り当てを行うようにしてもよい。さらに、クロック周波数と電源電圧とが常に対応している場合には、何れか一方を示す情報を検出するだけでもよい。
【０１７０】
処理エンジン９１１〜９１４は、説明の簡単化のために互いに同じ機能（例えば積和演算機能）を有しているとして説明する。上記ＣＰＵ９１０または記憶部１００と、処理エンジン９１１〜９１４との間での命令コードの転送は、バス１０７を介して行われるようになっている（なお、実施形態１と同様にＣＰＵ９１０等から直接転送されるようにしてもよい。）。
【０１７１】
クロック制御部９１６は、例えば図３１に示すように、実施形態１（図４）のクロック制御部１０６と比べて、分周器１０６ｂが１つだけ設けられている点と、セレクタ１０６ｄに代えて、周波数制御レジスタ１０６ｃの保持内容に応じた周波数のクロック信号を各処理エンジン９１１〜９１４に共通に出力するセレクタ９１６ｄを備えている点が異なっている。上記周波数制御レジスタ１０６ｃは、例えば図３２に示すように周波数制御ビット１０６ｃ０に０または１の値がセットされることにより、セレクタ９１６ｄに周波数がｆまたはｆ／２のクロック信号を選択させるようになっている。
【０１７２】
また、電源電圧制御部９１７は、例えば図３３に示すように、実施形態６（図２３）の電源電圧制御部７０１と同様の電源電圧制御レジスタ７０１ａと電源７０１ｂとを備えているが、電源７０１ｂが、電源電圧制御レジスタ７０１ａの保持内容に応じた電圧を各処理エンジン９１１〜９１４に共通に出力するようになっている点と、電源電圧制御レジスタ７０１ａの保持内容に応じて、各処理エンジン９１１〜９１４に、それぞれスタンバイ／アクティブ制御信号を出力するようになっている点とが異なっている。より詳しくは、上記電源電圧制御レジスタ７０１ａは、例えば図３４に示すようにアクティブ制御ビット７０１ａ０〜７０１ａ３に０または１の値がセットされることにより、処理エンジン９１１〜９１４をそれぞれスタンバイ状態またはアクティブ状態にするスタンバイ／アクティブ制御信号を出力する一方、電源電圧制御ビット７０１ａ４に０または１の値がセットされることにより、電源７０１ｂに電圧がＶｄｄまたはＶｄｄ／２の電源電圧を出力させるようになっている。（なお、上記電源電圧制御レジスタ７０１ａに保持される値に基づいて、処理エンジン９１１〜９１４をスタンバイ状態またはアクティブ状態にするのに代えて、電源電圧の供給を停止し、リーク電流を完全に遮断し得るようにしてもよい。）
上記のように構成されたプロセッサシステムでは、ＣＰＵ９１０が命令コードに付加されたモード設定情報を検出し、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃに図３０に示すような値を設定することにより、動的に動作モードが変更され、各動作モードに応じた処理エンジン９１１〜９１４の割り当て、クロック周波数、および電源電圧で命令の実行がなされる。
【０１７３】
具体的には、例えば次のような４つの動作モードにそれぞれ対応した電源電圧およびクロック周波数に制御されて演算処理が行われる。ここで、以下では説明の簡単化のために、処理エンジン９１１〜９１４は、電源電圧＝Ｖｄｄの場合にはクロック周波数＝ｆで動作可能で、電源電圧＝Ｖｄｄ／２の場合にはクロック周波数＝ｆ／２で動作可能だとして説明する。すなわち、正確には、前記式（２）によれば電源電圧＝Ｖｄｄ／２、クロック周波数＝ｆ／２で動作可能になる（遅延時間ｔｄが電源電圧がＶｄｄのときの２倍になる）ためには、閾値電圧Ｖｔが０でなければならないことになるので、実際にはクロック周波数ｆ／２で動作させるための電源電圧はＶｄｄ／２よりも若干高くする必要があるが、この点を考慮に入れても、大幅な消費電力の低減を図ることは可能である。
【０１７４】
（１）Ｎｏｒｍａｌモード（シングルプロセッシング）では、処理エンジン９１１だけが、電源電圧Ｖｄｄ、クロック周波数ｆで動作し、他の処理エンジン９１２〜９１４は、ほとんど電力を消費しないスタンバイ状態となるように、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃが設定される。すなわち、複数のプロセッサで並列に実行させることができないような命令は、このＮｏｒｍａｌモードによって確実に実行させることができる。
【０１７５】
（２）低消費モードで（並列数２）は、２つの処理エンジン９１１・９１２が、電源電圧Ｖｄｄ／２、クロック周波数ｆ／２で動作するように、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃが設定される。この場合には、クロック周波数がｆ／２なので各処理エンジン９１１・９１２単独の処理能力はＮｏｒｍａｌモードの１／２になるが、２つの処理エンジン９１１・９１２が並列に動作することにより、全体としてＮｏｒｍａｌモードと同じ処理能力が得られる。一方、消費電力は、前記式（１）に示したように、電源電圧の２乗およびクロック周波数に比例し、また、動作するプロセッサの数に比例するので、Ｎｏｒｍａｌモードに比べて、（１／２）2×（１／２）×２＝１／４に抑えられる。すなわち、命令コードが２つの処理エンジン９１１・９１２によって並列に実行可能である場合には、処理能力を低下させることなく、消費電力を大幅に低減することができる。
【０１７６】
（３）Ｈｉｇｈパフォーマンスモード（並列数４）では、全ての処理エンジン９１１〜９１４が、電源電圧Ｖｄｄ／２、クロック周波数ｆ／２で動作するように、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃが設定される。この場合には、各処理エンジン９１１〜９１４単独の処理能力はＮｏｒｍａｌモードの１／２になるが、４つの処理エンジン９１１〜９１４が並列に動作することにより、全体としてＮｏｒｍａｌモードの２倍の処理能力が得られるとともに、消費電力は、Ｎｏｒｍａｌモードに比べて、（１／２）2×（１／２）×４＝１／２に抑えられる。すなわち、Ｎｏｒｍａｌモードよりも高い処理能力で、しかも消費電力は小さく抑えることができる。それゆえ、上記Ｈｉｇｈパフォーマンスモードは、例えば画像処理等、負荷の大きな処理を行わせるのに適している。
【０１７７】
（４）超低消費モード（シングルプロセッシング）では、処理エンジン９１１だけが、電源電圧Ｖｄｄ／２、クロック周波数ｆ／２で動作するように、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃが設定される。この場合には、処理能力はＮｏｒｍａｌモードの１／２になるが、消費電力は（１／２）2×（１／２）＝１／８にすることができる。すなわち、高い処理能力が必要とされないような場合には、大幅に消費電力を低減することができる。
【０１７８】
上記のように、低い電源電圧、クロック周波数で並列処理させることによって、Ｎｏｒｍａｌモードと同等またはそれ以上の処理能力で、かつ、消費電力を低減したり、Ｎｏｒｍａｌモードよりも低い処理能力だが消費電力を大幅に低減したりすることができる。しかも、並列数や、電源電圧、クロック周波数が動的に切り替えられることによって、例えば負荷の大きな処理やリアルタイム処理など高速な処理が必要な場合には高い処理能力を得るとともに消費電力を低減する一方、高速な処理が必要でない場合にはさらに大幅に消費電力を低減することができる。
【０１７９】
なお、上記のようなモード設定情報は、各命令コードごとに付加されるのに限らず、動作モードが変化する命令コード、またはその前後の命令コードなどに付加されるだけでもよい。
【０１８０】
また、ＣＰＵ９１０が命令コードに付加されたモード設定情報を検出する例を示したが、実施形態１のフラグ検出部と同様のハードウェアによって検出されるようにしてもよい。
【０１８１】
さらに、モード設定情報として、周波数制御レジスタ１０６ｃおよび電源電圧制御レジスタ７０１ａに所定の値を保持させる命令をプログラム中に含め、その命令がＣＰＵ９１０に実行されることによって動作モードが設定されるようにしてもよい。この場合でも、動作モード設定のための命令の実行が他の命令の実行と並列に行われるようにすれば、実質的な処理能力の低下は招かないようにすることができる。また、上記周波数制御レジスタ１０６ｃや電源電圧制御レジスタ７０１ａへの値の設定はバス１０７を介して行われるようにしてもよい。
【０１８２】
また、上記の例では、各処理エンジン９１１〜９１４に共通の電源電圧およびクロック信号が供給される例を示したが、前記実施形態１等のように個別に供給されるようにして、独立に電源電圧やクロック周波数を制御できるようにしてもよい。
【０１８３】
また、処理エンジン９１１〜９１４は４つに限らず、複数であればよく、また、必ずしも同じ機能を有するものでなくてもよい。
【０１８４】
さらに、実施形態７、８で説明したのと同様に、電源電圧の制御に代えて、または電源電圧の制御と伴に閾値電圧も制御されるようにしてもよい。すなわち、クロック周波数を低くすると遅延マージンが大きくなるのに対応して電源電圧を低くすることによる消費電力低減効果と閾値電圧を高くしてリーク電流を減少させることによる消費電力低減効果との合計で最も消費電力が小さくなるようにすることができる。
【０１８５】
《発明の実施形態１１》
上記実施形態１０で説明したようなモード設定情報が付加された命令コードの生成方法は特に限定されず、例えばプログラム設計者がソースプログラム中に並列演算命令や単一プロセッサ演算命令などのアセンブラ命令とともに動作モードを指示する情報を記述し、これに基づいてコンパイラ等が生成するようにしてもよいが、プログラム設計者が、プログラム全体や所定の単位のプログラムモジュール等ごとに、高い処理能力を優先させるか、または低消費電力を優先させるかを指定するだけで、その指定に基づいて生成されるようにしてもよい。以下、そのような命令コードを生成する命令列最適化装置について説明する。
【０１８６】
この命令列最適化装置は、実施形態２で説明したのと同様に、例えばコンパイラやオプティマイザなどと称されるプログラムが実行されるコンピュータによって構成され、ソースプログラムのコンパイルが行われる際などに、図３５および次のような動作によって、モード設定情報が付加された命令コードを生成するようになっている。
【０１８７】
（Ｓ１６００）  まず、ソースプログラム、またはこれがコンパイルされたオブジェクトプログラム等が解析され、処理エンジン９１１〜９１４によって実行されるべき各命令または一連の（例えば１０命令程度の）命令の組み合わせが並列処理可能かどうか、すなわち複数の処理エンジン９１１〜９１４に振り分けて同時に実行させことが可能かどうか、またはシングルプロセッシングだけが可能かが判別される。具体的には、例えば積和演算の繰り返しのような処理などが並列処理可能と判定される。
【０１８８】
（Ｓ１６０１）  上記解析の結果、並列処理が可能であれば、Ｈｉｇｈパフォーマンスモード、または低消費モードの何れで動作させるかを決定するために（Ｓ１６０２）に移行する一方、並列処理が可能でなければ、超低消費モード、またはＮｏｒｍａｌモードの何れで動作させるかを決定するために（Ｓ１６０５）に移行する。
【０１８９】
（Ｓ１６０２〜Ｓ１６０４）  並列処理が可能であれば、例えばコンパイル時のオプション指定などとして、処理速度を優先させる指示がなされているかどうかを判定し、処理速度優先指示がなされていれば、Ｈｉｇｈパフォーマンスモードで動作させることが決定される（Ｓ１６０３）一方、処理速度優先指示がなされていなければ、低消費モードで動作させることが決定される（Ｓ１６０４）。（さらに、並列数４で処理することが可能かどうかも判定して、可能でない場合には低消費モードが指定されるようにしてもよい。）
（Ｓ１６０５〜Ｓ１６０７）  また、上記（Ｓ１６０１）の判定で並列処理が可能でなければ、例えばコンパイル時のオプション指定などとして、低消費電力を優先させる指示がなされているかどうかを判定し、低消費電力指示がなされていれば、超低消費モードで動作させることが決定される（Ｓ１６０６）一方、低消費電力指示がなされていなければ、Ｎｏｒｍａｌモードで動作させることが決定される（Ｓ１６０７）。なお、上記処理速度優先指示と低消費電力指示とは、択一的に指示されるものなので、実際には例えば処理速度優先指示がなされることによって低消費電力指示はなされていないと判定したり、処理速度優先指示がなされていないことによって低消費電力指示はなされていると判定したりするようにしてもよい。さらに、例えば高負荷処理であることを示す情報（従って処理速度が優先されるべきことが示される）など、実質的に処理速度や消費電力に対応する指示に応じて、上記のような判定がなされればよい。また、プロセッサシステムの仕様等に応じて、通常は（特に指示がない場合には）低消費モードが指定されるようにしたりしてもよい。
【０１９０】
（Ｓ１６０８）  上記決定に応じたモード設定情報が命令コードに付加される。また、必要に応じて、１つまたは一連の命令コードが、並列演算命令に置き換えられる。なお、このような置き換えは、（Ｓ１６０１）で並列処理の可能なことが判別された後、何れの時点で行われるようにしてもよい。具体的には、例えば上記（Ｓ１６０３）等でモードが決定された時点で、各処理の動作モードを示すモード設定情報テーブルを作成し、解析が完了した後に、上記テーブルに基づいて、モード設定情報の付加や並列演算命令への置き換えが行われるようにしてもよい。また、実施形態１０の変形例で説明したようにＣＰＵ９１０による命令の実行によって周波数制御レジスタ１０６ｃおよび電源電圧制御レジスタ７０１ａに所定の値が保持されるようにするためには、そのような命令をプログラム中に追加するようにすればよい。
【０１９１】
（Ｓ１６０９）  ソースプログラムの全ての命令についての処理が終わるまで、上記（Ｓ１６００）〜（Ｓ１６０８）の処理が繰り返される。
【０１９２】
上記のようにしてモード設定情報の付加された命令コードが生成されることにより、プログラム設計者等が特に動作モードを意識することなく、処理速度と消費電力の何れを優先させるかを指定するだけで、高速な動作を行わせたり消費電力を大幅に低減したりするプログラムを得ることが容易にできる。
【０１９３】
《発明の実施形態１２》
前記実施形態３のプロセッサシステムと同様に、モード設定情報が付加されていない通常の命令コードを用いても、同様に消費電力を低減できるプロセッサシステムの例を説明する。
【０１９４】
このプロセッサシステムのハードウェア構成は、前記実施形態１０（図２９）と同じで、ＣＰＵ９１０によって実行されるプログラム（ＣＰＵ９１０による動作モード制御のための動作）が異なる。すなわち、ＣＰＵ９１０は、図３６に示すように、動作モードの制御に関しては実施形態１１の命令列最適化装置と似たような動作をするようになっている。
【０１９５】
（Ｓ１７００）  まず、ＣＰＵ９１０は、通常のＣＰＵが処理の高速化のために先読みするのと同様に、記憶部１００に記憶されている命令コードを数命令分に（例えば１０命令分程度）先読みし、各命令または一連の命令の組み合わせが並列処理可能かどうかが判別される。基本的な解析動作自体は、実施形態１１（図３５）の（Ｓ１６００）と同様である。ここで、先読みする命令数は特に限定されないが、多ければ、多少複雑な繰り返し処理などでも並列処理が可能になる一方、解析に要する時間が長くなったり、ハードウェアによって解析される場合には回路規模が大きくなったりするので、これらのバランスで設定されればよい。
【０１９６】
（Ｓ１６０１、Ｓ１６０７）  上記解析の結果、並列処理が可能かどうかを判定し、並列処理が可能でなければ、（Ｓ１６０７）に移行して、Ｎｏｒｍａｌモードで動作させることを決定する一方、並列処理が可能であれば、Ｈｉｇｈパフォーマンスモード、または低消費モードの何れで動作させるかを決定するために（Ｓ１７０２）に移行する。
【０１９７】
（Ｓ１７０２）  並列処理が可能であれば、命令コードによって示される処理が高負荷処理であるかどうかを判定する。具体的には、例えばループ処理（特に多重ループ）が含まれるかどうかや、ループ回数が所定以上であるかなどが判定される。
【０１９８】
（Ｓ１６０３、Ｓ１６０４）  上記（Ｓ１７０２）の判定に応じて、高負荷処理であれば、Ｈｉｇｈパフォーマンスモードで動作させることが決定される（Ｓ１６０３）一方、高負荷処理でなければ、低消費モードで動作させることが決定される（Ｓ１６０４）。
【０１９９】
（Ｓ１７０８）  上記決定に応じたクロック制御信号、および電源電圧制御信号がクロック制御部９１６および電源電圧制御部９１７に出力され、周波数制御レジスタ１０６ｃおよび電源電圧制御レジスタ７０１ａに保持されることによって、動作モードが設定されるとともに、必要に応じて、１つまたは一連の命令コードが、並列演算命令に置き換えられる。
【０２００】
（Ｓ１７０９）  設定された動作モードで命令の実行が行われ、以下、（Ｓ１７００）以降の動作が繰り返される。
【０２０１】
上記のように、モード設定情報が付加されていないプログラムであっても、実行時に処理負荷等に応じて自動的に動作モードが決定され、クロック周波数や電源電圧が設定されたり並列演算命令への置き換えがなされたりするので、一般的なコンパイラによって生成された命令コードを実行させる場合であっても、高速な動作を行わせたり消費電力を大幅に低減したりするなど、最適な動作モードで実行させることが容易にできる。
【０２０２】
なお、上記のようにプロセッサシステムによってだけ動作モードが決定されるのに限らず、（プログラム開発者の指示などに基づく）モード設定情報や、高処理能力と低消費電力との何れを優先させるかの指定が検出された場合には、これらに応じて動作モードが決定されるようにしたり、並列処理が可能かどうかだけはプロセッサシステムが判定して動作モードが決定されるようにしたりしてもよい。
【０２０３】
《発明の実施形態１３》
それぞれのプロセッサを構成するトランジスタの閾値が互いに異なるプロセッサシステムの例を説明する。このプロセッサシステムは、図３７に示すように、前記実施形態１０（図２９）の処理エンジン９１３・９１４に代えて、処理エンジン９２３・９２４を備えている。また、電源電圧制御部９１７に代えて、電源電圧制御部９２７を備えている。
【０２０４】
上記処理エンジン９２３・９２４は、処理エンジン９１１・９１２と同一の機能を有しているが、構成するトランジスタの閾値（例えば０．６Ｖ）が、処理エンジン９１１・９１２を構成するトランジスタの閾値（例えば０．３Ｖ）よりも高く設定されている。なお、このような閾値の設定は、例えば実施形態７で説明したように半導体基板電圧を制御することにより動的に行うこともできるが、ここでは、不純物濃度を設定することなどによって固定的に行われているとして説明する。また、各処理エンジン９１１・９１２・９２３・９２４は、それぞれ上記のような高閾値または低閾値のトランジスタだけによって構成されるようにしてもよいが、これに限るものではない。
【０２０５】
また、電源電圧制御部９２７は、各処理エンジン９１１・９１２・９２３・９２４への電源電圧供給の有無、および供給電圧を独立に制御し得るようになっている。具体的には、例えば図３８および図３９に示すように、電源７０１ｂが、電源電圧制御レジスタ７０１ａの電源遮断制御ビット７０１ａ０〜７０１ａ３に保持された値によって電源減圧供給の有無を制御され、電源電圧制御ビット７０１ａ４〜７０１ａ７に保持された値によって供給電圧を制御されるようになっている。
【０２０６】
上記電源電圧制御レジスタ７０１ａ、およびクロック制御部９１６の周波数制御レジスタ１０６ｃへの各動作モードに応じた値の設定は、前記実施形態１０、１２と同様に、命令コードに付加されたモード設定情報、または命令コードの解析結果に基づいたＣＰＵ９１０の動作によって行われる。そこで、これらのレジスタに例えば図４０に示すような値が設定されることにより、動的に動作モードが変更され、各動作モードに応じた処理エンジン９１１・９１２・９２３・９２４の割り当て、クロック周波数、および電源電圧で命令の実行がなされる。
【０２０７】
具体的には、例えば次のように、３つの動作モードにそれぞれ対応した電源電圧およびクロック周波数に制御されて演算処理が行われる。なお、実施形態１０と同様の超低消費モードでの動作も行われるようにしてもよい。（すなわち、どのような動作モードが決定され得るかは、プロセッサシステムに必要とされる消費電力や処理能力などに応じて設定されればよい。）ここで、以下では、上記高閾値のトランジスタ小よって構成されている処理エンジン９２３・９２４は、例えば電源電圧がＶｄｄのときにｆ／２のクロック周波数で動作が可能だとして説明する。
【０２０８】
（１）Ｎｏｒｍａｌモード（シングルプロセッシング）では、低閾値のトランジスタを用いた処理エンジン９１１だけが、電源電圧Ｖｄｄ、クロック周波数ｆで動作し、他の処理エンジン９１２・９２３・９２４は、電源電圧の供給が停止されるように、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃが設定される。これによって、処理エンジン９１２・９２３・９２４ではリーク電流による待機電力の消費は生じない。
【０２０９】
（２）低リークモードで（並列数２）は、高閾値のトランジスタを用いた２つの処理エンジン９２３・９２４が、電源電圧Ｖｄｄ、クロック周波数ｆ／２で動作するように、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃが設定される。この場合には、２つの処理エンジン９２３・９２４がｆ／２のクロック周波数で動作することにより、全体としてＮｏｒｍａｌモードと同じ処理能力が得られる。一方、消費電力は、リーク電流を考慮しなければ、２つの処理エンジン９２３・９２４がｆ／２のクロック周波数で動作するので、合計でＮｏｒｍａｌモードと同じになるが、これらの処理エンジン９２３・９２４の動作中のリーク電流（アクティブリーク電流）は、高閾値トランジスタが用いられていることによって、低閾値トランジスタが用いられる場合に比べ、各処理エンジン９２３・９２４あたり例えば２７％程度になり、その分、全体の消費電力が小さく抑えられる。
【０２１０】
（３）Ｈｉｇｈパフォーマンスモード（並列数４）では、処理エンジン９１１・９１２の電源電圧はＶｄｄ／２、処理エンジン９２３・９２４の電源電圧はＶｄｄ、クロック周波数は何れもｆ／２となるように、電源電圧制御レジスタ７０１ａおよび周波数制御レジスタ１０６ｃが設定される。この場合には、並列数が４、クロック周波数がｆ／２であることによって、全体でＮｏｒｍａｌモードの２倍の処理能力が得られる。一方、消費電力は、処理エンジン９１１・９１２については、Ｖｄｄ／２の電源電圧、ｆ／２のクロック周波数で並列に動作することによって、Ｎｏｒｍａｌモードに比べて、（１／２）2×（１／２）×２＝１／４になる。また、処理エンジン９２３・９２４については、上記低リークモードの場合と同じく、高閾値電圧のトランジスタが用いられるとともに、Ｖｄｄの電源電圧、ｆ／２のクロック周波数で並列に動作することによって、アクティブリーク電流が大幅に低減される。したがって、全体の消費電力が小さく抑えられる。
【０２１１】
上記のように、高閾値トランジスタを用いて構成された処理エンジン９２３・９２４を設け、低いクロック周波数で並列に動作させることによってアクティブリーク電流を小さくすることができるので、特に、アクティブリーク電流の影響が大きい場合には、大幅に消費電力を低減することが容易にできる。また、高負荷処理に対しては低閾値トランジスタを用いて構成された処理エンジン９１１・９１２も用い、電源電圧、周波数を下げることで消費電力を抑えつつ、性能を向上させることができる。しかも、並列処理ができない場合でも、処理エンジン９１１が低閾値トランジスタを用いて構成され、Ｖｄｄ、ｆの電源電圧、クロック周波数で動作することによって、処理性能を確保することができる。
【０２１２】
《発明の実施形態１４》
複数の処理エンジンのうちの何れかに故障がある場合でも、処理能力を確保するとともに消費電力を低減できるプロセッサシステムについて説明する。
【０２１３】
このプロセッサシステムは、図４１に示すように、実施形態１０（図２９）の電源電圧制御部９１７に代えて、実施形態１３（図３８）と同じ電源電圧制御部９２７を備え、処理エンジン９１１〜９１４への電源電圧供給の有無、および供給電圧を独立に制御し得るようになっている。また、クロック制御部９１６に代えて、クロック制御部９３６を備え、さらに、書き込み可能な不揮発性メモリであるフラッシュメモリ９３１（故障情報保持手段）を備えている。
【０２１４】
上記クロック制御部９３６は、電源電圧制御部９２７と同様に各処理エンジン９１１〜９１４に供給するクロック信号の周波数を独立に制御し得るようになっている。具体的には、例えば図４２、図４３に示すように、セレクタ９３６ｄが、周波数制御レジスタ１０６ｃの各周波数制御ビット１０６ｃ０〜１０６ｃ３に保持される値に応じた周波数のクロック信号を各処理エンジン９１１〜９１４に供給するようになっている。
【０２１５】
また、フラッシュメモリ９３１は、各処理エンジン９１１〜９１４が、それぞれ正常に動作（完動）するか、または故障があるかを示す故障情報を記憶するようになっている。すなわち、例えば製造時に、ＬＳＩテスタを用いた初期評価などによって各処理エンジン９１１〜９１４の動作が検査され、その結果が保持される。なお、フラッシュメモリに限らず、例えばＦｅＲＡＭなど、他の種々の不揮発性メモリを用いてもよい。
【０２１６】
このプロセッサシステムでは、前記実施形態１０、１２と同様に、命令コードに付加されたモード設定情報、または命令コードの解析結果に基づいたＣＰＵ９１０の動作により、電源電圧制御部９２７の電源電圧制御レジスタ７０１ａおよびクロック制御部９３６の周波数制御レジスタ１０６ｃに所定の値が設定されて動的に動作モードが変更され、各動作モードに応じた処理エンジン９１１〜９１４の割り当て、電源電圧、およびクロック周波数で命令の実行がなされる。ここで、上記処理エンジン９１１〜９１４の割り当てにあたっては、フラッシュメモリ９３１に保持された故障情報が参照され、故障している処理エンジンには割り当てられないようになっている。
【０２１７】
具体的には、例えば前記実施形態１０で説明したような４つの動作モードで動作する場合、処理エンジン９１１が故障していたとすると、Ｎｏｒｍａｌモードや超低消費モードにする際には、処理エンジン９１２〜９１４のうちの何れか１つに、電圧Ｖｄｄ、周波数ｆ、または電圧Ｖｄｄ／２、周波数ｆ／２の電源電圧およびクロック信号が供給され、他の処理エンジン（少なくとも処理エンジン９１１）への電源電圧の供給は停止される（故障したエンジンが切り離される）。また、低消費モードにする際には、同様に処理エンジン９１２〜９１４のうちの何れか２つに、電圧Ｖｄｄ／２、周波数ｆ／２の電源電圧およびクロック信号が供給され、やはり少なくとも処理エンジン９１１への電源電圧の供給は停止される。
【０２１８】
また、Ｈｉｇｈパフォーマンスモードにする際には、例えば処理エンジン９１２を電源電圧Ｖｄｄ、クロック周波数ｆで動作させ、処理エンジン９１３・９１４を電源電圧Ｖｄｄ／２、クロック周波数ｆ／２で動作させるとともに処理エンジン９１１への電源電圧の供給を停止させることにより、すなわち、電源電圧制御部９２７の電源電圧制御レジスタ７０１ａ、およびクロック制御部９３６の周波数制御レジスタ１０６ｃに、それぞれｂ’１１００１１１０またはｂ’１１００（「ｂ’」は続く値が２進表記であることを示す。）を設定することにより、消費電力はＮｏｒｍａｌモードの１．２５倍になるが、Ｎｏｒｍａｌモードの２倍の処理能力を保証することができる。（また、３つの処理エンジン９１２〜９１４を共に電源電圧Ｖｄｄ／２、クロック周波数ｆ／２で動作させて、処理能力は１．５倍になるが消費電力は０．７５倍に抑えられるようにする（低消費電力を優先させる）ことなどもできる。この場合には、必ずしも電源電圧やクロック信号周波数の制御を各処理エンジン９１１〜９１４で独立に制御できるようにしなくてもよい。）
上記のように、故障している処理エンジンがあっても、それを補償する並列動作を行わせることにより、プロセッサシステムの性能を保証するとともに消費電力をある程度低減することができ、製造歩留まりを向上させることができる。
【０２１９】
なお、上記の例では１つの処理エンジンだけが故障している場合の例を示したが、２つ故障している場合でも、Ｎｏｒｍａｌモードや超低消費モード、低消費モードに関しては、やはり同様に処理能力および低消費電力を確保することができる。また、Ｈｉｇｈパフォーマンスモードに関しては、正常に動作する２つの処理エンジンを電源電圧Ｖｄｄ、クロック周波数ｆで動作させて処理能力を確保するようにしても良いし、一方だけをＶｄｄ／２、ｆ／２にしたり、Ｈｉｇｈパフォーマンスモードを有しないプロセッサシステムとしたりしてもよい。
【０２２０】
また、故障している処理エンジンについては電源電圧を遮断する例を示したが、実施形態１０で説明したようにスタンバイ状態にするようにしてもよい。ただし、電源ラインがショートするような故障を考慮する場合には、電源電圧を遮断することがシステムの安定性などの点で好ましい。また、クロック信号ラインがショートするような故障も考慮して、クロック信号の供給も停止し得るようにしてもよい。
【０２２１】
《発明の実施形態１５》
上記のように製造時などにだけテストするのに限らず、電源がＯＮになるごとなどに、プロセッサシステム自体で処理エンジンの動作不良を検出して、故障している処理エンジンに演算処理が割り当てられないようにしてもよい。このプロセッサシステムには、例えば図４４に示すように、実施形態１４のフラッシュメモリ９３１に代えて故障レジスタ９４１（故障情報保持手段）が設けられるとともに、さらに、パターン発生器９４２と、比較回路９４３（故障検出手段）とが設けられている。
【０２２２】
上記故障レジスタ９４１は、実施形態１４のフラッシュメモリ９３１と同じく、各処理エンジン９１１〜９１４が、それぞれ正常に動作（完動）するか、または故障があるかを示す故障情報を記憶するものであるが、不揮発性メモリである必要はない。なお、この故障レジスタ９４１はバス１０７に接続されるのに限らず、ＣＰＵ９１０から読み出し得るようになっていれば、電源電圧制御部９２７やクロック制御部９３６の内部に設けられるなどしてもよい。上記故障レジスタ９４１は、具体的には、例えば図４５に示すように、各処理エンジン９１１〜９１４に対応する故障ビットを有し、それぞれの故障ビットに各処理エンジン９１１の故障の有無に応じた値が保持されるようになっている。
【０２２３】
パターン発生器９４２は、処理エンジン９１１〜９１４のテスト動作時に、ランダムテストパターン、すなわち、ビットパターンおよびその時間的変化がランダムな信号をバス１０７に出力するようになっている。
【０２２４】
比較回路９４３は、上記ランダムテストパターンが各処理エンジン９１１〜９１４に入力されたときに、各処理エンジン９１１〜９１４から出力される信号、例えば処理エンジン９１１〜９１４内部の所定のテストポイントの信号や、バス１０７またはＩ／Ｏバス等
に出力される信号などを比較し、これらが一致するかどうかにより故障している処理エンジン９１１〜９１４を検出して、故障情報を故障レジスタ９４１に保持させるようになっている。
【０２２５】
処理エンジン９１１〜９１４の検査は、具体的には、例えば電源が投入された直後の初期化時や、処理エンジン９１１〜９１４による演算処理が行われる合間の待機中にＯＳによるシステム処理が行われる際などに、以下のようにして行われる。すなわち、例えば電圧Ｖｄｄ、周波数ｆの電源電圧およびクロック信号が各処理エンジン９１１〜９１４に供給された状態でパターン発生器９４２がランダムテストパターンをバス１０７に出力する。比較回路９４３は、例えば、処理エンジン９１１・９１２、処理エンジン９１３・９１４、処理エンジン９１１・９１３、および処理エンジン９１２・９１４のそれぞれの組について出力信号を比較し、比較結果が一致する組と一致しない組との組み合わせによって、故障している処理エンジン９１１〜９１４を検出し、検出結果を故障レジスタ９４１に保持させる。ここで、処理エンジン９１１・９１４などについても比較して、２つ以上の故障を検出できるようにし、実施形態１４で説明したように２つ以上の処理エンジンが故障している場合にＨｉｇｈパフォーマンスモードを有しないプロセッサシステムが構成されるようにしたりしてもよい。さらに、クロック周波数ｆで動作しなくても、ｆ／２でなら動作するかなども検査するようにしてもよい。（例えば１つの処理エンジンがｆ／２でだけ動作可能な場合であれば、その処理エンジンをＮｏｒｍａｌモードにさえ割り当てなければ、Ｈｉｇｈパフォーマンスモードでの動作も、実施形態１０と同じように行わせることができる。）
なお、テストパターンはランダムに発生させるものに限らず、あらかじめ設定されたテストパターンと、そのテストパターンが処理エンジン９１１〜９１４に入力された場合に出力されるべき出力パターン（期待値）とをフラッシュメモリなどの不揮発性メモリに記憶させておき、上記期待値と実際の出力パターンとを比較して、故障している処理エンジン９１１〜９１４を検出するようにしてもよい。また、上記のようなランダムテストパターン等がプロセッサシステムの外部から与えられるようにするなどしてもよい。さらに、所定のテストプログラムを実行させて、その演算結果で動作不良を検出するなどしてもよい。
【０２２６】
上記のようにして得られた故障情報に基づく処理エンジン９１１〜９１４の割り当て、電源電圧、およびクロック周波数の制御は、前記実施形態１４で説明したのと同じである。このように、プロセッサシステム自体で処理エンジンの故障を検出できるようにすることによって、初期不良だけでなく経時変化による故障などに対してもシステムの安定性、信頼性を向上させて性能を保証することができる。
【０２２７】
なお、上記実施形態１〜９では、それぞれ１つずつのＣＰＵ１０３とＨＷＥ１０４とが設けられ、また、実施形態１０〜１５では同一の機能を有する処理エンジン９１１〜９１４が設けられる例を示したが、これらに限らず、それぞれ、同一のまたは異なる機能を有するプロセッサが複数設けられるなど、種々の複数のプロセッサが設けられる場合でも同様の効果を得ることができる。
【０２２８】
また、実施形態１等においては、命令コードにおけるプロセッサの割り当てやクロック周波数を示す情報として命令コードに付加されたフラグやモード設定情報が用いられる例を示したが、これに限らず、例えば、命令コード自体によってＣＰＵ１０３またはＨＷＥ１０４の何れで実行される命令かや動作モードなどが判別されるようにするなど、実質的にプロセッサの割り当て等を示す情報がプログラム中に含まれていればよい。
【０２２９】
また、上記実施形態６〜９ではクロック制御信号に基づいて直接電源電圧制御部７０１等が制御される例を示したが、これに限らず、クロック周波数に対応して電源電圧等を適切に設定し得る制御信号に基づいて制御されるように構成されていればよい。
【０２３０】
また、電源電圧やクロック周波数のレベルは上記のように２段階または３段階（供給を停止する場合も含めると３段階または４段階）に限らず、種々に設定することができ、段階を多くすれば、動作モードの組み合わせをより多くしたりして、より細かい動作条件の設定をすることができる。
【０２３１】
また、上記各実施形態で説明した各構成要素は、論理的に可能な範囲で種々組み合わせてもよい。具体的には、例えば、実施形態６〜１５で説明したような電源電圧や基板電圧を制御する構成や、冷却手段を制御する構成は、他の実施形態のプロセッサシステムに適用するなどしてもよい。また、例えば、実施形態１（図１）のフラグ検出部１０１と実施形態３（図１４）の命令解析部４０２等を共に設けて各実施形態の機能を併せ持つようにし、実行する命令のフラグ等の有無に係らず、プロセッサの割り当てやクロック周波数の制御を行えるようにしてもよい。
【産業上の利用可能性】
【０２３２】
本発明にかかるプロセッサシステム、命令列最適化装置、および命令列最適化プログラムは、プロセッサごとに、実行される命令に応じてクロック周波数を制御することにより、処理能力を低下させることなく、消費電力を低減することができ、さらに、上記クロック周波数の制御と対応させて、各プロセッサに供給される電源電圧や基板電圧を制御することにより、一層、消費電力を低減することができるという効果を有し、例えば中央処理装置（ＣＰＵ）や、ハードウェア演算エンジン（ＨＷＥ）、コプロセッサ、ＤＳＰ（digital signal processor）などと称される演算処理装置等の同種または異種の複数のプロセッサを備え、並列に演算処理が可能なプロセッサシステム等として有用である。
【図面の簡単な説明】
【０２３３】
【図１】実施形態１のプロセッサシステムの要部の構成を示すブロック図である。
【図２】命令コードの例を示す説明図である。
【図３】命令コードに付加されたクロック制御フラグの例を示す説明図である。
【図４】実施形態１のクロック制御部１０６の具体的な構成を示すブロック図である。
【図５】実施形態１のプロセッサシステムの動作を示すフローチャートである。
【図６】実施形態１のプロセッサシステムの動作状態を示す説明図である。
【図７】実施形態２の命令列最適化装置の構成を示すブロック図である。
【図８】図８（ａ）（ｂ）は、実施形態２の命令列最適化装置によるプロセッサへの命令への割り当てとクロック周波数と実行時間との関係の例を示す説明図である。
【図９】実施形態２の命令列最適化装置の動作を示すフローチャートである。
【図１０】実施形態２の変形例の命令列最適化装置の構成を示すブロック図である。
【図１１】実施形態２の変形例の命令列最適化装置の動作を示すフローチャートである。
【図１２】実施形態２の他の変形例の命令列最適化装置の動作を示すフローチャートである。
【図１３】図１２（ａ）〜（ｅ）は、命令の実行順序とクロック周波数と実行時間との関係の例を示す説明図である。
【図１４】実施形態３のプロセッサシステムの要部の構成を示すブロック図である。
【図１５】実施形態３のプロセッサシステムの動作を示すフローチャートである。
【図１６】実施形態３の変形例のプロセッサシステムの要部の構成を示すブロック図である。
【図１７】実施形態３の変形例のプロセッサシステムの動作を示すフローチャートである。
【図１８】実施形態４のプロセッサシステムの要部の構成を示すブロック図である。
【図１９】実施形態４のプロセッサシステムの動作を示すフローチャートである。
【図２０】実施形態５の命令列最適化装置の構成を示すブロック図である。
【図２１】実施形態５の命令列最適化装置の動作を示すフローチャートである。
【図２２】実施形態６のプロセッサシステムの要部の構成を示すブロック図である。
【図２３】実施形態６の電源電圧制御部７０１の具体的な構成を示すブロック図である。
【図２４】実施形態６の変形例のプロセッサシステムの要部の構成を示すブロック図である。
【図２５】実施形態６の変形例の電源電圧制御部７０１の具体的な構成を示すブロック図である。
【図２６】実施形態７のプロセッサシステムの要部の構成を示すブロック図である。
【図２７】実施形態８のプロセッサシステムの要部の構成を示すブロック図である。
【図２８】実施形態９のプロセッサシステムの要部の構成を示すブロック図である。
【図２９】実施形態１０のプロセッサシステムの要部の構成を示すブロック図である。
【図３０】実施形態１０の動作モードと、プロセッサの割り当て、電源電圧、およびクロック周波数との対応を示す説明図である。
【図３１】実施形態１０のクロック制御部９１６の具体的な構成を示すブロック図である。
【図３２】実施形態１０の周波数制御レジスタ１０６ｃの構成を示す説明図である。
【図３３】実施形態１０の電源電圧制御部９１７の具体的な構成を示すブロック図である。
【図３４】実施形態１０の電源電圧制御レジスタ７０１ａの構成を示す説明図である。
【図３５】実施形態１１の命令列最適化装置の動作を示すフローチャートである。
【図３６】実施形態１２のプロセッサシステムの動作を示すフローチャートである。
【図３７】実施形態１３のプロセッサシステムの要部の構成を示すブロック図である。
【図３８】実施形態１３の電源電圧制御部９２７の具体的な構成を示すブロック図である。
【図３９】実施形態１３の電源電圧制御レジスタ７０１ａの構成を示す説明図である。
【図４０】実施形態１３の動作モードと、プロセッサの割り当て、電源電圧、およびクロック周波数との対応を示す説明図である。
【図４１】実施形態１４のプロセッサシステムの要部の構成を示すブロック図である。
【図４２】実施形態１４のクロック制御部９３６の具体的な構成を示すブロック図である。
【図４３】実施形態１４の周波数制御レジスタ１０６ｃの構成を示す説明図である。
【図４４】実施形態１５のプロセッサシステムの要部の構成を示すブロック図である。
【図４５】実施形態１５の故障レジスタ９４１の構成を示す説明図である。
【符号の説明】
【０２３４】
１００      記憶部
１０１      フラグ検出部
１０２      命令割り当て制御部
１０３      ＣＰＵ
１０４      ＨＷＥ
１０５      ＳＲＡＭ
１０６      クロック制御部
１０６ａ    クロックジェネレータ
１０６ｂ    分周器
１０６ｃ    周波数制御レジスタ
１０６ｃ０〜１０６ｃ３    周波数制御ビット
１０６ｄ    セレクタ
１０７      バス
２０１      記憶装置
２０２      命令解析部
２０３      標準実行時間推定部
２０４      換算実行時間算出部
２０５      割り当て・クロック周波数決定部
２０６      フラグ付加部
３１１      割り当て決定部
３１２      クロック周波数決定部
４０２      命令解析部
４０３      標準実行時間推定部
４０４      換算実行時間算出部
４０５      割り当て・クロック周波数決定部
５１１      割り当て決定部
５１２      クロック周波数決定部
６０１      フラグ検出部
６０２      命令解析部
７０１      電源電圧制御部
７０１ａ    電源電圧制御レジスタ
７０１ａ０〜７０１ａ３    アクティブ制御ビット、電源遮断制御ビット
７０１ａ４〜７０１ａ７    電源電圧制御ビット
７０１ｂ    電源
７０６      フラグ付加部
８０１      基板電圧制御部
９００      半導体集積回路
９０１      クーリング装置
９１０      ＣＰＵ
９１１〜９１４    処理エンジン
９１６      クロック制御部
９１６ｄ    セレクタ
９１７      電源電圧制御部
９２３・９２４    処理エンジン
９２７      電源電圧制御部
９３１      フラッシュメモリ
９３６      クロック制御部
９３６ｄ    セレクタ
９４１      故障レジスタ
９４２      パターン発生器
９４３      比較回路
【図１】
2005128937.tif 000003
【図２】
2005128937.tif 000004
【図３】
2005128937.tif 000005
【図４】
2005128937.tif 000006
【図５】
2005128937.tif 000007
【図６】
2005128937.tif 000008
【図７】
2005128937.tif 000009
【図８】
2005128937.tif 000010
【図９】
2005128937.tif 000011
【図１０】
2005128937.tif 000012
【図１１】
2005128937.tif 000013
【図１２】
2005128937.tif 000014
【図１３】
2005128937.tif 000015
【図１４】
2005128937.tif 000016
【図１５】
2005128937.tif 000017
【図１６】
2005128937.tif 000018
【図１７】
2005128937.tif 000019
【図１８】
2005128937.tif 000020
【図１９】
2005128937.tif 000021
【図２０】
2005128937.tif 000022
【図２１】
2005128937.tif 000023
【図２２】
2005128937.tif 000024
【図２３】
2005128937.tif 000025
【図２４】
2005128937.tif 000026
【図２５】
2005128937.tif 000027
【図２６】
2005128937.tif 000028
【図２７】
2005128937.tif 000029
【図２８】
2005128937.tif 000030
【図２９】
2005128937.tif 000031
【図３０】
2005128937.tif 000032
【図３１】
2005128937.tif 000033
【図３２】
2005128937.tif 000034
【図３３】
2005128937.tif 000035
【図３４】
2005128937.tif 000036
【図３５】
2005128937.tif 000037
【図３６】
2005128937.tif 000038
【図３７】
2005128937.tif 000039
【図３８】
2005128937.tif 000040
【図３９】
2005128937.tif 000041
【図４０】
2005128937.tif 000042
【図４１】
2005128937.tif 000043
【図４２】
2005128937.tif 000044
【図４３】
2005128937.tif 000045
【図４４】
2005128937.tif 000046
【図４５】
2005128937.tif 000047