"プロセッサを備えた集積回路であって、前記プロセッサにおいて、1以上の命令からなるループを繰り返し実行するループ処理が実行されることを検出するループ検出部と、前記ループ処理において命令間の依存が実行回の異なる2つのループにまたがるループ伝搬依存を検出するループ伝搬依存解析部と、前記ループ検出部によって検出されたループ処理に、前記ループ伝搬依存解析部によってループ伝搬依存が検出されない場合に、前記ループ処理の実行による電力消費を低減させる省電力制御を行う電力制御部と、を備える集積回路。さらに、ループ処理の実行が終了したことを検出するループ終了検出部を備え、前記電力制御部は、省電力制御が行われている状態において、前記ループ終了検出部が、前記ループ処理の終了を検出した場合に省電力制御を終了させる、請求項1記載の集積回路。前記ループ伝搬依存解析部は、前記ループ処理において、第一のループで変数に書き込まれた値が、前記第一のループの後に実行される第二のループで前記変数から読み出されることをもって、ループ伝搬依存があると判定する、請求項2記載の集積回路。前記ループ検出部は、前記プロセッサにおいて、先行したアドレスに分岐する命令が実行されたことをもって、前記プロセッサがループ実行状態になったことを検出する、請求項3記載の集積回路。さらに、ループの範囲を記憶する、ループ範囲記憶部を有し、前記ループ検出部は、先行したアドレスに分岐する分岐命令を検出した場合に、前記ループ範囲記憶部にループの範囲を出力し、さらに、前記ループ伝搬依存解析部に依存関係解析を指示し、前記ループ伝搬依存解析部は、前記ループ範囲記憶部に記憶されたループの範囲の命令列についてループ伝搬依存の検出処理を行う、請求項4記載の集積回路。前記ループ終了検出部は、前記ループ範囲記憶部に記憶されたループの範囲外に分岐する分岐命令が実行されたこと、又は、前記ループの範囲の末尾に位置する条件分岐命令の実行結果が分岐不成立であることをもって、前記プロセッサにおけるループ処理の実行が終了したことを検出する、請求項5記載の集積回路。前記ループ範囲記憶部は、ループの先頭アドレスと、ループの末尾アドレスとを含む情報を記憶する、請求項5記載の集積回路。前記プロセッサは、フェッチされた命令列を保持する命令列保持部を備えており、前記ループ伝搬依存解析部は、前記命令列保持部に保持された前記ループの範囲の命令列についてループ伝搬依存の検出処理を行う、請求項5記載の集積回路。前記命令列保持部に記憶される命令列は、プリフェッチされた命令を含む、請求項8記載の集積回路。前記電力制御部は、省電力制御を行う場合に、前記プロセッサへ供給するクロックの周波数を減少させる制御を行い、省電力制御を終了する場合に、前記プロセッサへ供給するクロックの周波数を増加させる制御を行う、請求項2記載の集積回路。前記電力制御部は、省電力制御を行う場合に、前記プロセッサへ供給する電力の電圧を低下させる制御を行い、省電力制御を終了する場合に、前記プロセッサへ供給する電力の電圧を増大させる制御を行う、請求項2記載の集積回路。前記電力制御部は、省電力制御を行う場合に、前記プロセッサへ供給する電力の電圧を低下させるとともに前記プロセッサへ供給するクロックの周波数を減少させる制御を行い、省電力制御を終了する場合に、前記プロセッサへ供給する電力の電圧を増大させるとともに前記プロセッサへ供給するクロックの周波数を増加させる制御を行う、請求項2記載の集積回路。前記ループ伝搬依存解析部は、前記ループ処理において、一の命令の書き込み対象の変数と、読み出し対象の変数とが同じ場合に、ループ伝搬依存が存在すると判定する、請求項1記載の集積回路。前記プロセッサは、複数の実行ユニットを備え、前記電力制御部は、省電力制御を行う場合に、前記複数の実行ユニットの一部のものを停止させる制御を行い、省電力制御を終了する場合に、停止させた前記複数の実行ユニットの一部のものの実行を再開させる制御を行う、請求項2記載の集積回路。前記プロセッサは、複数のスレッドの各々に割り当てられるタイムスライスを管理する、スレッド管理部を有し、前記電力制御部は、省電力制御を行う場合に、ループ伝搬依存が検出されないループ処理を実行しているビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部に指示し、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示する、請求項2記載の集積回路。前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を減少させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を増加させる制御を行う、請求項15記載の集積回路。前記プロセッサは、複数の実行ユニットを備え、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記複数の実行ユニットのうちの一部を停止させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示するとともに、前記複数の実行ユニットの一部の実行を再開させる制御を行う、請求項15記載の集積回路。前記プロセッサは、複数の実行ユニットを備え、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を減少させ、前記複数の実行ユニットのうちの一部を停止させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を、前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を増加させ、前記複数の実行ユニットの一部の実行を再開させる制御を行う、請求項15記載の集積回路。前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を減少させ、前記プロセッサに供給する電力の電圧を低下させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を増加させ、前記プロセッサに供給する電力の電圧を増大させる制御を行う、請求項15記載の集積回路。前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に応じて、前記プロセッサに供給するクロックの周波数を減少させる、請求項16記載の集積回路。前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に応じて、前記複数の実行ユニットの稼働本数を減少させる、請求項17記載の集積回路。プロセッサを備えたコンピュータシステムの制御方法であって、前記プロセッサにおいて、1以上の命令からなるループを繰り返し実行するループ処理が実行されることを検出するループ検出ステップと、前記ループ処理において命令間の依存が実行回の異なる2つのループにまたがるループ伝搬依存を検出するループ伝搬依存検出ステップと、前記ループ検出ステップによって検出されたループ処理に、前記ループ伝搬依存解析ステップによってループ伝搬依存が検出されない場合に、前記ループ処理の実行による電力消費を低減させる省電力制御を行う電力制御ステップと、を備える制御方法。プロセッサを備えたコンピュータシステムであって、前記プロセッサにおいて、1以上の命令からなるループを繰り返し実行するループ処理が実行されることを検出するループ検出部と、前記ループ処理において命令間の依存が実行回の異なる2つのループにまたがるループ伝搬依存を検出するループ伝搬依存解析部と、前記ループ検出部によって検出されたループ処理に、前記ループ伝搬依存解析部によってループ伝搬依存が検出されない場合に、前記ループ処理の実行による電力消費を低減させる省電力制御を行う電力制御部と、を備えるコンピュータシステム。プロセッサを備えた集積回路であって、プロセッサ内のプログラムカウンタにおいてカウンタ値が一定のパターンで繰り返しているかを監視する第1監視部と、前記プロセッサが接続されたバスにおいて前記プロセッサによる読み出しに係るアドレスに変化がないかを監視する第2監視部と、前記第1監視部によって前記カウンタ値が一定のパターンで繰り返されていることが検出され、前記第2監視部によって前記プロセッサによる読み出しに係るアドレスに変化がないことが検出された場合に、前記プロセッサによる電力消費を低減させる省電力制御を行う電力制御部と、を備える集積回路。前記電力制御部は、省電力制御が行われている場合において、前記第1監視部によって前記カウンタ値が一定のパターンで繰り返さなくなったことが検出されると、前記省電力制御を終了させる、請求項24記載の集積回路。プロセッサを備えたコンピュータシステムの制御方法であって、プロセッサ内のプログラムカウンタにおいてカウンタ値が一定のパターンで繰り返しているかを監視する第1監視ステップと、前記プロセッサが接続されたバスにおいて前記プロセッサによる読み出しに係るアドレスに変化がないかを監視する第2監視ステップと、前記第1監視ステップによって前記カウンタ値が一定のパターンで繰り返されていることが検出され、前記第2監視ステップによって前記プロセッサによる読み出しに係るアドレスに変化がないことが検出された場合に、前記プロセッサによる電力消費を低減させる省電力制御を行う電力制御ステップと、を備える制御方法。プロセッサを備えたコンピュータシステムであって、プロセッサ内のプログラムカウンタにおいてカウンタ値が一定のパターンで繰り返しているかを監視する第1監視部と、前記プロセッサが接続されたバスにおいて前記プロセッサによる読み出しに係るアドレスに変化がないかを監視する第2監視部と、前記第1監視部によって前記カウンタ値が一定のパターンで繰り返されていることが検出され、前記第2監視部によって前記プロセッサによる読み出しに係るアドレスに変化がないことが検出された場合に、前記プロセッサによる電力消費を低減させる省電力制御を行う電力制御部と、を備えるコンピュータシステム。しかしながら、前記従来の構成では、スピンウェイト命令列記憶部1236に記憶された特定の命令列testandset等が実行されたことに基づいてビジーウェイトを検出しているため、上記特定の命令列と異なる命令列を用いたビジーウェイトを検出することができない。また、前記従来の構成によって多様な命令列を用いたビジーウェイトを検出しようとしても、スピンウェイト命令列記憶部1236に多種の命令列を記憶させ、多種の命令列の各々と実行済み命令列とを比較することには自ずと限界が生じる。すなわち、検出できるビジーウェイトが限られているため、電力消費の削減が可能な状況が限定的であるという課題がある。本発明は、前記従来の技術における課題を解決するもので、より多様なビジーウェイトの実行を検出し、プロセッサにおけるビジーウェイトの実行により浪費される電力を低減し得る、集積回路、コンピュータシステムおよび制御方法を提供することを目的とする。前記課題を解決するために、本発明に係る集積回路は、プロセッサを備えた集積回路であって、前記プロセッサにおいて、1以上の命令からなるループを繰り返し実行するループ処理が実行されることを検出するループ検出部と、前記ループ処理において命令間の依存が実行回の異なる2つのループにまたがるループ伝搬依存を検出するループ伝搬依存解析部と、前記ループ検出部によって検出されたループ処理に、前記ループ伝搬依存解析部によってループ伝搬依存が検出されない場合に、前記ループ処理の実行による電力消費を低減させる省電力制御を行う電力制御部と、を備える。本発明に係る集積回路は、ループ検出部によってループ処理を検出し、ループ伝搬依存解析部によってループ処理がビジーウェイト用であるか否かを判別することができる。そのため、特定の命令列例えば、インターロック用の命令列との比較なしにビジーウェイト用のループを検出することができる。よって、特定の命令列以外の命令列によって構成されるビジーウェイト用のループを容易に検出し、ビジーウェイト時に省電力制御を行うことができる。その結果、より多様なビジーウェイトの実行を検出し、ビジーウェイトの実行により浪費される電力を低減することができる。本発明の実施の形態について、図面を参照しながら説明する。[実施の形態1]<コンピュータシステム1300の構成>本発明の実施の形態1にかかる集積回路を備えたコンピュータシステムの構成を、図1を参照しながら説明する。図1は、コンピュータシステム1300の構成を模式的に示すブロック図である。コンピュータシステム1300は、プロセッサ1301、主記憶1302RAM、ROM等、I/Oデバイス1303入出力装置、電力供給デバイス1304、及びバス1305を備える。なお、プロセッサ1301は、集積回路内に形成されている。プロセッサ1301、主記憶1302、I/Oデバイス1303、電力供給デバイス1304は、バス1305を介して相互に接続されている。電力供給デバイス1304は、プロセッサ1301に対して電力1306およびクロック1307を供給する。電力供給デバイス1304は、レギュレータを備えており、プロセッサ1301に供給する電力1306の電圧を変更することができる。また、電力供給デバイス1304は、クロック発生回路及び分周回路を備えており、プロセッサ1301に供給するクロック1307の周波数を変更することができる。プロセッサ1301は、レジスタ群1310、レジスタ群1310に含まれるプログラムカウンタ1311、命令フェッチ/デコードユニット1320、発行ユニット1330、命令列保持部1340、実行ユニット1350、リタイアメントユニット1360、命令キャッシュ1370、データキャッシュ1380を備える。さらに、プロセッサ1301は、省電力制御装置図1における符号1701~1705、及び1900を備えており、その省電力制御装置によって、ビジーウェイトによるループ処理が実行されている場合に省電力制御を行う。この省電力制御装置については、後に説明する。<コンピュータシステム1300の基本的な動作>図2は、省電力制御装置の図示を省略し、コンピュータシステム1300を簡略化して示す。この図に基づいて、コンピュータシステム1300の基本的な動作を説明する。まず、命令フェッチ/デコードユニット1320は、プログラムカウンタ1311の値に基づき、プロセッサ1301が実行する可能性のある命令列を命令キャッシュ1370から読み出す。つまり、いわゆる命令のプリフェッチを行う。次に、命令フェッチ/デコードユニット1320は、読み出された命令列をデコードし、命令列保持部1340へ一時的に格納する。命令列保持部1340では、所定数の命令が保持されており、最も古い命令に新たな命令が上書きされる。すなわち、命令列保持部1340は、リングバッファによって構成されている。そのため、命令列保持部1340には、下記の発行ユニット1330によって発行された発行済み命令が残されている。発行ユニット1330は、命令列保持部1340へ格納された命令列の中から、実行の準備が整ったものを、実行ユニット1350へ送り込む。すなわち、命令が発行される。また、発行ユニット1330は、例えば、演算用の命令を発行する場合に、指定されたオペランドソースレジスタの値をレジスタ群1310から取出して、命令とともに実行ユニット1350へ送り込む。実行ユニット1350では各種の処理を行う。各種の処理には、レジスタ群1310に格納されている値の四則演算やビット演算のような演算処理、浮動小数点処理、データキャッシュ1380やバス1305を介したロードストア処理、分岐などが含まれる。実行ユニット1350が行った処理の実行結果は、リタイアメントユニット1360へ送られる。なお、本実施の形態において、プロセッサ1301に実行ユニット1350が複数設けられており、複数の実行ユニット1350で命令列が並列的に処理される。この場合は、発行ユニット1330が、複数の実行ユニット1350のうち、空いている実行ユニット1350に対して、命令列を順次送り込んでいく。リタイアメントユニット1360は、レジスタ群1310への書込みの準備が終わったことを確認した後に、実行ユニット1350の実行結果をレジスタ群1310へ書き込む。通常、リタイアメントユニット1360により、命令のアドレス順に実行結果がレジスタ群1310へ書き込まれる。命令キャッシュ1370と、データキャッシュ1380は、主記憶1302から読み込んだ情報や、主記憶1302へ書き込む予定の情報を一時的に保持する。<命令セット>プロセッサ1301の命令セットを、図3を参照しながら説明する。図3は、命令セットに含まれるアセンブラコードの命令1401と、各命令1401の概要1402及び演算内容1403とを例示する図である。命令セット1400には、加算を行うADD命令1411、減算を行うSUB命令1412、比較を行うCMP命令1413、移動を行うMOV命令1414、条件分岐を行うBNE命令1415、ジャンプを行うJMP命令1416、バス1305に接続された主記憶1302やI/Oデバイス1303および電力供給デバイス1304から情報の読込みを行うLDR命令1417、バス1305に接続された主記憶1302やI/Oデバイス1303および電力供給デバイス1304から情報の書込みを行うSTR命令1418、演算を行わずにプログラムカウンタのインクリメントを行うNOP命令1419が含まれる。ここで、演算内容1403において、<=記号は代入を意味する。代入記号の左側のレジスタ、すなわち代入先のレジスタをデスティネーションレジスタもしくはDSTレジスタと称する。また、代入記号の右側のレジスタ、すなわち代入元のレジスタをソースレジスタもしくはSRCレジスタと称する。DSTレジスタ及びSRCレジスタは、変数の具体例である。<レジスタセット>本実施の形態にかかるプロセッサのレジスタセット、つまり、レジスタ群1310の構成を、図4を参照しながら説明する。レジスタセット1500には、演算時に汎用的に使用される汎用レジスタ1511、プロセッサが実行している命令のアドレスを示すプログラムカウンタPC1512、条件分岐等の判定用に用いられる条件フラグレジスタCFR1513が含まれる。なお、前記命令セット1400ならびに前記レジスタセット1500は、説明に必要な部分を部分的にぬきだして例示したものである。本発明を実施するにあたっては、命令セットとレジスタセットは、他のものを用いてもよい。例えば、本発明は当業者に広く用いられているARM、MIPS、x86、mn10300命令セット等において実施されうる。<命令列保持部>命令列保持部1340に保持される命令列1600のデータ構造の一例を、図5を参照しながら説明する。命令列保持部1340には、命令が格納されていたアドレス1601と、命令1602とが対応付けられて格納される。<省電力制御装置>次に、省電力制御装置の構成を、図1を参照しながら説明する。省電力制御装置は、ループ検出部1701、ループ伝搬依存解析部1702、第一の電力制御部1703、ループ脱出検出部1704、第二の電力制御部1705を備えている。また、省電力制御装置は、レジスタ群1310に設けられたループ範囲記憶部1900を含む。省電力制御装置は、大別して、2つの構成要素に分けられる。第一の構成要素は、ビジーウェイトの実行状態を検出して、省電力制御を行い、コンピュータシステム1300を省電力の状態にする処理を行う。第二の構成要素は、ビジーウェイトの終了を検出して、省電力制御を終了させることで、コンピュータシステム1300を省電力制御が行われる以前の状態に戻す処理を行う。以下、第一の構成要素、第二の構成要素の順に説明する。1第一の構成要素まず、第一の構成要素は、ループ検出部1701と、ループ伝搬依存解析部1702と、第一の電力制御部1703とによって構成される。そして、ループ検出部1701によってループ処理の実行を検出し、ループ伝搬依存解析部1702によってビジーウェイト用のループ処理であるか演算用のループ処理等であるかを判定する。そして、ビジーウェイト用のループ処理である場合に、第一の電力制御部1703によって省電力制御を行う。以下、第一の構成要素の動作について、図面を参照しながら説明する。1-1ループ検出部ループ検出部1701の動作を、図6のフローチャートを参照しながら説明する。ループ検出部1701は、ステップS1801で、分岐命令の成立を判定する。ステップS1801の判定結果がYES分岐成立の場合は、ステップS1803へ進む。ステップS1801の判定結果がNO分岐不成立の場合は、ステップS1801の判定を再度行う。例えば、実行ユニット1350からリタイアメントユニット1360に送られた、ジャンプ命令JMP命令1416もしくは条件分岐命令BNE命令1415の実行結果及び条件フラグレジスタCFR1513の値に基づいて判定を行う。具体的には、ループ検出部1701は、上記実行結果が、プログラムカウンタ1311の値を所定のアドレスに書き換えるという実行内容であることをもって、分岐命令が成立したと判定する。以下、詳細に説明する。ループ検出部1701は、各種の分岐命令JMP命令、BNE命令等を保持する分岐命令記憶部と、リタイアメントユニット1360に格納された実行済み命令と前記各種の分岐命令とを比較する命令比較部とを備えている。そして、実行済みの分岐命令がリタイアメントユニット1360に格納されると、命令比較部によって分岐命令が検出される。さらに、分岐命令が条件分岐命令である場合は、ループ検出部1701は、レジスタ群1310のCFR1513の値を参照し、例えば、CFR1513の値が0でない場合に分岐が成立し、0である場合に分岐が不成立であると判定する。このCFR1513の値は、例えば、条件分岐命令に先行する比較命令CMPの実行結果がリタイアメントユニット1360によって書き込まれたものである。次に、ステップS1803で、ループ検出部1701は、分岐先のアドレスが、分岐命令に先行するアドレスか否かを判定する。ステップS1803の判定結果がYESの場合分岐先のアドレスが分岐命令に先行するアドレスである場合は、ステップS1805へ進む。ステップS1803の判定結果がNOの場合分岐先のアドレスが分岐命令に先行するアドレスでない場合は、ステップS1801に戻る。なお、実行ユニット1350からリタイアメントユニット1360に送られる実行結果には、分岐命令のアドレス、及び、分岐先のアドレスの情報が含まれており、それら2つのアドレスを比較することで上記判定が行われる。そして、分岐先のアドレスが分岐命令に先行するアドレス分岐命令のアドレスよりも値が小さいアドレスである場合に、ループ実行状態であると判定する。ここで、分岐先のアドレスと、分岐命令のアドレスとの差が設定値以上である場合、つまり、比較的命令数の多いループ処理は、ビジーウェイト用のループである可能性が非常に低いため、依存関係の解析を行うまでもなく、除外してもよい。なお、上記設定値は、例えば、10とすることができる。次に、ステップS1804において、ループ検出部1701は、ループの先頭アドレス1911と末尾アドレス1912を抽出する。まず、ループ検出部1701は、ループの先頭アドレス1911として、分岐が成立した分岐命令の分岐先のアドレスを抽出する。次に、ループ検出部1701は、ループの末尾アドレス1912として、分岐が成立した分岐命令が格納されているアドレスを抽出する。なお、ループ検出部1701によるループの先頭アドレス1911と末尾アドレス1912の抽出の具体例として、図5記載の命令列1600を例にとって説明する。ループの先頭アドレス1911は、分岐命令の分岐先のアドレスであるので、分岐命令BNE1004における1004、即ち、1004番地となる。次に、ループの末尾アドレス1912は、分岐命令が格納されているアドレスであるので、分岐命令BNE1004が格納されている1010番地となる。次に、ステップS1805において、ループ検出部1701は、ステップS1804で抽出したループの先頭アドレス1911とループの末尾アドレス1912を、ループ範囲記憶部1900へ出力する。ループ範囲記憶部1900のデータ構造の例を、図7を参照しながら説明する。ループ範囲記憶部1900は、先頭アドレス1911、及び末尾アドレス1912を記憶するレジスタメモリの一種によって構成される。続いて、ステップS1807で、ループ検出部1701は、ループ伝搬依存解析部1702に、依存関係解析の実行指示1711を出力する。なお、実行指示1711は、例えば、ループ検出部1701とループ伝搬依存解析部1702とを接続する信号線の電圧を高レベルにすることによりなされる。なお、ループ検出部1701は、プロセッサがループを実行していることを検出できるものであれば、ここで示した処理以外を用いるものであってもよい。例えば、プログラムカウンタ1311に保持されているアドレスの更新により、そのアドレスが減少した場合にループ実行状態であると判定するものであってもよい。1-2ループ伝搬依存解析部1702ここで、ループ伝搬依存解析部1702によって、ビジーウェイトに用いられるループと、ビジーウェイトでないループ例えば、演算用のループとが判別されることを、具体的な命令列を列挙しながら説明する。1-2-1ビジーウェイト用のループの解析例まず、ループ伝搬依存解析部1702の解析対象となるビジーウェイト用ループの命令列の例として、図8の命令列を挙げる。図8の命令列2100では、1008番地のLDR命令によって、R2レジスタの指すアドレスからR0レジスタへ値を読込む。次に、100c番地のCMP命令によってR0レジスタの値と、あらかじめ値が格納されたR1レジスタの値を比較する。値が一致した場合は、1010番地のBNE命令で、ループを脱出する。すなわち、分岐不成立により、ループ処理が終了する。一方、値が一致しなかった場合は、1010番地のBNE命令で、1004番地へ分岐する。すなわち、分岐が成立する。図8に示す命令列2100は、一定のアドレスR2レジスタの指すアドレスから値を繰り返し読み出しては比較する処理を行うものである。R2レジスタの指すアドレスに格納されている値が、ビジーウェイトの同期用変数に相当する。上記命令列2100は、キーの入力待ち等に用いられ、例えば、キーが押された場合同期用変数が書き換えられた場合に後続する処理が実行される。しかし、キーが押されない場合同期用変数が書き換えられない場合は、同期用変数R2レジスタの指すアドレスの値を確認する処理が繰り返し行われ、電力を浪費することとなる。よって、このようなループ処理命令列2100の実行による電力の消費を抑えることが望ましい。次に、ループ伝搬依存解析部1702の解析動作を、図9のフローチャートおよび図8の命令列2100を参照しながら説明する。ステップS2001で、ループ伝搬依存解析部1702は、ループ検出部1701から実行指示1711を受けたタイミングで解析処理を開始する。ステップS2003において、ループ伝搬依存解析部1702は、ループ範囲記憶部1900より、ループの先頭アドレス1911及び末尾アドレス1912を取得する。ここで、ループの先頭アドレス1911等の取得は、発行ユニット1330が所定のレジスタから値を取得する場合と同様に行われ、指定されるレジスタがループ範囲記憶部1900のレジスタとされる。ステップS2005において、ループ伝搬依存解析部1702は、命令列保持部1340からループ範囲内の命令列を取得する。前述のように、命令列保持部1340には、発行ユニット1330によって発行された発行済み命令が残されている。また、命令列保持部1340に格納される命令数は、ループ検出後であっても命令列保持部1340にループ範囲内の命令列が残るように多めにされている。なお、仮に命令列保持部1340にループ範囲内の命令列が無い場合でも、分岐命令実行後にプログラムカウンタ1311をループの先頭アドレスに書き換え、ループ範囲内の命令列を命令フェッチ/デコードユニット1320によって再度フェッチ/デコードし、命令列保持部1340に格納してもよい。ステップS2007において、ループ伝搬依存解析部1702は、取得した命令列2100を、ループ伝搬依存解析部1702に備えられた依存関係解析用バッファ2200に格納する。ここで、依存関係解析用バッファ2200のデータ構造を、図10を参照しながら説明する。依存関係解析用バッファ2200には、ループを構成する命令列2100がループ2回分並べて格納される。依存関係解析用バッファ2200には、ループに含まれる命令ごとにエントリが設けられる。エントリは、命令と、命令に対応付けられた情報を記憶するメモリである。依存関係解析用バッファ2200の各エントリに格納される情報は、当該命令のニモニック2201、当該命令のDSTレジスタデスティネーションレジスタ2202の識別子、当該命令のSRCレジスタソースレジスタ2203の識別子に加えて、依存関係解析に用いる中間的な情報として、当該命令の依存関係解析用バッファ2200における位置を識別するためのエントリ番号2204、当該命令が前段のループにあるか後段のループにあるかを判別するためのイテレーション番号2205、依存元命令のエントリ番号2206、当該命令と依存元命令とのイテレーションまたぎ判定結果2207を含む。ステップS2007では、依存関係解析用バッファ2200に各種の情報が格納される。上記情報は、ニモニック2201、DSTレジスタ2202の識別子、SRCレジスタ2203の識別子とする。ステップS2009から、ステップS2017までの間は、ループ伝搬依存解析部1702は、依存関係解析用バッファ2200の各エントリに対して、先頭から末尾のエントリに対して順番に以下の処理を繰り返し行う。まず、ステップS2011で、ループ伝搬依存解析部1702は、各エントリにエントリ番号2204を付与する。例えば、エントリ番号2204として使用する番号は、先頭のエントリを1とし、以下、2、3、4、5、6、7、8というように1つずつ増加する数値とする。なお、エントリ番号は、依存関係解析バッファ内のエントリを一意に識別できる情報であれば、他の番号や記号やビットを用いてもかまわない。次に、ステップS2013において、ループ伝搬依存解析部1702は、各エントリに、前段のループか、後段のループかを識別するための、イテレーション番号2205を付与する。ここでは、前段のループを示す識別子を1、後段のループを示す識別子を2とする。なお、イテレーション番号2205は、前段のループか、後段のループかを識別できる情報であれば、1、2以外の情報を用いてもかまわない。次に、ステップS2015において、ループ伝搬依存解析部1702は、依存元命令のエントリ番号2206を書き込む。依存元命令とは、当該命令のSRCレジスタをDSTレジスタとして用いる、最も直前の命令のことである。これにより、いわゆるフロー依存、真の依存、RAWReadafterWriteハザード等と呼称される依存関係が検出される。なお、SRCレジスタが存在しない命令の場合は、この項目に書き込みは行われず、初期値の0が保持される。また、依存元命令が依存関係解析用バッファ2200の中になく、ループの外にあると推定される場合は、ループの外に存在することを示す値として、エントリ番号にない値例えば、10を書き込んでもよいし、初期値の0にしておいてもかまわない。ここで、同一イテレーション番号2205の命令間の依存関係例えばフロー依存は、イテレーション番号の異なるループ間にまたがるものではなく、ループ伝搬依存の有無の判定に用いられない。よって、ステップS2015において、ループ内の依存の有無を調べることなく、ループ伝搬依存の有無だけを判定し得る情報を生成してもよい。具体的には、イテレーション番号2205が1の命令が、イテレーション番号2205が2の各エントリについて、依存元命令になるかどうかを判定するための情報を生成できればよい。ステップS2016では、ループ伝搬依存解析部1702は、ループ伝搬依存の有無を調べる。具体的には、依存元命令のエントリ番号2206を参照し、依存元命令が属するイテレーションの番号が1であり、他方で、当該命令のイテレーション番号2205が2であるか判定する。判定結果がYESであった場合は、ループ伝搬依存が存在しており、依存元命令とのイテレーションまたぎ判定結果2207にYESを書き込む実際は、値を1にする。判定結果がNOであった場合は、ループ伝搬依存はなく、依存元命令とのイテレーションまたぎ判定結果2207にNOを書き込む実際は、値を0にする。ステップS2017において、全てのエントリについて、ループ処理が完了した場合は、ループを終了し、ステップS2019へ進む。ここで、図10は、図8に示す命令列を、プロセッサ1301が実行した際の、ループ伝搬依存解析部1702のステップS2019の判定が行われる直前の依存関係解析用バッファ2200の状態が示されている。次に、ステップS2019において、ループ伝搬依存解析部1702は、依存元命令とのイテレーションまたぎ判定結果2207がYESであるエントリが存在するか判定する。ステップS2019の判定結果がYESの場合は、ビジーウェイト用のループではないため、ステップS2021へ進む。そして、ステップS2021では、ループ伝搬依存解析部1702は、第一の電力制御部1703へ実行指示1712を出力せずに、処理を終了する。よって、省電力制御は行われない。一方、ステップS2019の判定結果がNOの場合は、ビジーウェイト用のループであるため、ステップS2023に進む。そして、ステップS2023では、ループ伝搬依存解析部1702は、第一の電力制御部1703へ省電力制御実行の実行指示1712を出力し、処理を終了する。よって、省電力制御が行われる。なお、実行指示1712は、例えば、ループ伝搬依存解析部1702と第一の電力制御部1703とを接続する信号線の電圧を高レベルにすることによりなされる。ここで、上記ループ伝搬依存解析部1702の処理において、依存関係解析用バッファ2200に格納された情報が図10の例であった場合は、ループ伝搬依存はなく、ステップS2019の判定結果はNOとなる。つまり、エントリ番号が5番から8番までの各々のエントリには、依存元命令とのイテレーションまたぎ判定結果2207がYESであるものが存在しないのである。この場合、依存解析されたループ処理は、ビジーウェイト用のループ処理であり、省電力制御の対象となる。そのため、この例では、ステップS2023へ進み、その結果、第一の電力制御部1703へ実行指示1712が出力される。以上に述べた処理を行うことで、ループ伝搬依存解析部1702は、図9のフローチャートに示される解析処理を行い、後段のループに属する命令のソースレジスタが、前段のループに属する命令の実行によって書き込まれた値を読み出さないことをもってループ伝搬依存がないと判定する。言い換えると、ループ伝搬依存解析部1702は、後段のループに属する命令のソースレジスタが、前段のループに属する命令の実行によって書き込まれた値を読み出されることをもってループ伝搬依存があると判定する。1-2-2ビジーウェイト用ではないループの解析例次に、ループ伝搬依存解析部1702によって、ループ伝搬依存が検出されるループを構成する命令列の例として、図11の命令列2600を挙げる。図11の命令列2600では、2004番地のADD命令で、R2レジスタに4を加算した値を、R2レジスタに入力する。次に、2008番地のLDR命令によって、R2レジスタの指すアドレスからR0レジスタへ値を読込む。次に、200c番地のCMP命令によってR0レジスタの値と、予め設定値が格納されているR1レジスタの値を比較する。値が一致した場合は、2010番地のBNE命令で、ループを脱出する。値が一致しなかった場合は、2010番地のBNE命令で、2004番地へ分岐する。図11に示す命令列2600は、図9に示す命令列2100とは異なり、一定のアドレスから値を繰り返し読み出しては比較する処理を行うものではない。何故なら、2004番地のADD命令でR2レジスタの値が、毎回のループで加算されることで、LDR命令が用いるアドレスの値が毎回変わるためである。つまり、上記命令列2600は、複数のアドレスの中からR1レジスタと同じ値が格納されているアドレスを見つけ出す処理であり、ビジーウェイト用のループに用いる命令列ではない。よって、省電力制御の対象外とすべきループ処理である。次に、図12に、図11に示す命令列2600について、ループ伝搬依存解析部1702によって依存関係の解析が行われた場合の、依存関係解析用バッファ2700の状態を示す。なお、上記依存関係解析用バッファ2700の状態は、ステップS2019の判定が行われる直前の状態である。図12の依存関係解析用バッファ2700において、エントリ番号がNo.5のSRCレジスタ2203はR2レジスタであり、エントリ番号がNo.1のDSTレジスタ2202と同じである。そして、エントリ番号がNo.1とNo.5の間に、DSTレジスタ2202がR2レジスタであるものはない。すなわち、エントリ番号がNo.5のSRCレジスタ2203は、依存元命令とのイテレーションまたぎ判定結果2207がYESとなる。そのため、ループ伝搬依存解析部1702のステップS2019の判定結果はYESループ伝搬依存が存在するとなる。その結果、第一の電力制御部1703へ実行指示1712が出力されず、このタイミングでは、第一の電力制御部1703は、プロセッサ1301の省電力制御を行わない。1-2-3ループ伝搬依存解析のまとめ上記2つの例によって、ビジーウェイトに用いられるループ処理が省電力制御の対象として選択的に検出され、ビジーウェイト用ではないループ処理は選択的に検出されないことが理解される。したがって、ループ伝搬依存解析部1702を用いることで、ビジーウェイトのループが実行されているときは、省電力制御が行われ、逆に、ビジーウェイトのループが実行されていないときは、省電力制御が回避される。ここで、本発明の実施の形態1において、特に留意されたい点は、ループ伝搬依存解析部1702の処理において、ステップS2019の判定を行うことである。ステップS2019では、後段のループに属する命令のソースレジスタが、前段のループに属する命令の実行によって、書き込まれないことを判定している。これにより、ループに使用される変数が、ループの外部的な要因によって書き換えられることを判定する。例えば、図33の例では、第一プロセッサ側の設定部1101によって同期用変数が書き換えられた場合、ループの外部的な要因によって書き換えられたこととなる。このように、ビジーウェイトに用いられる同期用変数は、ループの外部的な要因によって書き換えられる性質があるため、この判定方法を用いることで、ビジーウェイトの検出を行うことが可能となる。例えば、図10のエントリ番号がNo.6のSRCレジスタ2203はR2レジスタであり、このR2レジスタの値がR0レジスタに読み込まれた後、R1レジスタの値と比較される。この場合、R2レジスタが上記同期用変数に相当する。そして、ループ内にはR2レジスタをDSTレジスタ2202とする命令が無く、同期用変数としてのR2レジスタはループの内部的な要因によって書き換えられないことが分かる。つまり、ビジーウェイト用のループであると判断することができる。これにより、プロセッサが実行するさまざまなループ処理の中から、ビジーウェイトに用いられるループ処理を選択的に検出し、ビジーウェイトに用いられているループが実行されているときに、選択的に省電力制御を行うことが可能となる。なお、実施の形態1では、ループ伝搬依存解析部1702の処理として、後続ループの命令のSRCレジスタ2203が、先行ループの命令のDSTレジスタ2202として使用されるか判定する手順を例に挙げた。しかしながら、ループ伝搬依存解析部1702は、後続ループで使用される変数の値が、先行ループの命令の実行によって、書き換えられないことを検出できるものであれば、他の処理を用いて実施されてもかまわない。ここで、図9のフローチャートの処理手順は、ループ伝搬依存の有無を解析するための処理手順を分かり易く解説するための一例であり、上記処理手順以外の方法によってループ伝搬依存の有無を判別してもよい具体例は後述する。また、依存関係解析用バッファ2200,2700に示された各種の項目のうち、例えば、ニモニック2201、エントリ番号2204、イテレーション番号2205、依存元命令のエントリ番号2206等の少なくとも1つを省略してもよい。1-3第一の電力制御部1703次に、第一の電力制御部1703の動作を、図13のフローチャートを参照しながら説明する。第一の電力制御部1703は、ステップS2301で、ループ伝搬依存解析部1702から実行指示1712を受け取るまで待機する。第一の電力制御部1703は、実行指示1712を受け取ると、ステップS2303で省電力制御を行う。具体的には、第一の電力制御部1703は、電力供給デバイス1304の電力供給モードを通常電力モードから省電力モードに移行させるための電力制御情報1731を、電力供給デバイス1304へ送信する。省電力制御の具体的な例として、電力供給デバイス1304がプロセッサ1301へ供給するクロック1307の周波数を低減させ、プロセッサ1301へ供給する電力1306の電圧を下げさせるというものを挙げる。例えば、クロックの周波数を最大周波数の12.5まで低減させ、電圧を最大電圧の70まで低減させる。ここで、電力供給デバイス1304は、電力供給モードを通常電力モードと省電力モードとに切り換え可能にされている。そして、電力供給デバイス1304は、通常電力モードでは、設定された周波数例えば、最大周波数のクロック1307をクロック発生回路によって発生させ、プロセッサ1301に供給する。また、電力供給デバイス1304は、設定された電圧例えば、最大電圧の電力1306をプロセッサ1301に供給する。一方、電力供給デバイス1304は、第一の電力制御部1703から電力制御情報1731を受け取ると、省電力モードにより、上記の例のように電圧及びクロック周波数を上記設定値よりも減少させて電力1306の供給及びクロック1307の供給を行う。なお、省電力モードを複数種類設け、複数種類の省電力モードで省電力の程度を異ならせてもよい。ステップS2305で、第一の電力制御部1703は、ループ脱出検出部1704へ、ループ脱出検出の実行指示1713を出力する。第一の電力制御部1703でかかる処理を行うことにより、ループ伝搬依存解析部1702でビジーウェイト実行中が検出されたときに、プロセッサ1301の電力制御を行うことが可能となる。2第二の構成要素省電力制御装置の第二の構成要素である、ループ脱出検出部1704ループ終了検出部の一例であると、第二の電力制御部1705とについて説明する。これらループ脱出検出部1704と、第二の電力制御部1705とは、それぞれ、プロセッサ1301がビジーウェイト用のループ処理から脱出したことを検出する処理、省電力制御を終了させる電力制御を行う。2-1ループ脱出検出部ループ脱出検出部1704の動作を、図14のフローチャートを参照しながら説明する。まず、ステップS2401において、ループ脱出検出部1704は、第一の電力制御部1703から、実行指示1713を受け取るまで待機する。ループ脱出検出部1704は、実行指示1713を受け取ると、ステップS2403で、ループ範囲記憶部1900から、ループの先頭アドレス1911と、ループの末尾アドレス1912を取得する。これら先頭アドレス1911及び末尾アドレス1912は、ループ脱出検出部1704が備えるメモリに格納される。なお、ループ検出部1701が取得した先頭アドレス1911及び末尾アドレス1912を上記メモリに保持していてもよい。次に、ステップS2405で、ループ脱出検出部1704は、分岐命令の実行結果及び条件フラグレジスタCFRの値に基づき、分岐が成立したか判定する。この判定は、ループ検出部1701がステップS1801で行った処理と同じである。また、ループ脱出検出部1704は、ループ検出部1701と同様に、分岐命令記憶部と命令比較部とを備えている。これら分岐命令記憶部と命令比較部とを、ループ検出部1701とループ脱出検出部1704とで共用してもよい。ステップS2405の判定結果がYES分岐成立の場合は、ステップS2407に進む。ステップS2405の判定結果がNO分岐不成立の場合は、ステップS2408へ進む。ステップS2407では、ループ脱出検出部1704は、ループの末尾に位置する分岐命令以外に条件分岐命令が含まれている場合に、その条件分岐命令によってループ範囲外に分岐するか否かを判定する。具体的には、ステップS2405で成立した分岐のジャンプ先のアドレスが、ループ範囲記憶部1900から取得したループの先頭アドレス1911とループの末尾アドレス1912の範囲を外れたか判定する。つまり、分岐先のアドレスが、先頭アドレス1911より小さい、又は、末尾アドレス1912よりも大きいことをもって、分岐先がループ範囲外であると判定する。ステップS2407の判定結果がYESの場合は、ループ処理が終了しているため、省電力制御を終了させるべくステップS2409に進む。一方、判定結果がNOの場合は、ループ処理が継続しており、検出処理を継続すべくステップS2405に戻る。上記ステップS2408では、ループ脱出検出部1704は、ループの末尾に位置する条件分岐命令の実行結果が分岐不成立であるか否かを判定する。具体的には、条件分岐命令のアドレスが、ループの末尾アドレス1912と同じであるか否かが判定される。ステップS2408の判定結果がYESの場合は、ループ処理が終了しており、ステップS2409に進む。ステップS2408の判定結果がNOの場合は、ループ処理が継続しており、ステップS2405に戻る。ステップS2409では、ループ脱出検出部1704は、省電力制御を終了させるべく、第二の電力制御部1705へ、省電力制御終了の実行指示1714を出力する。なお、実行指示1714は、例えば、ループ脱出検出部1704と第二の電力制御部1705とを接続する信号線の電圧を高レベルにすることによりなされる。なお、本実施の形態1では、ループ脱出検出部1704を、リタイアメントユニット1360内に配置し、分岐命令の実行結果に基づいてループ処理が終了したか否かを検出した。しかしながら、ループ処理が終了したことを検出できるほかの方法もしくは装置があれば、その方法もしくは装置を用いてもかまわない。代用可能な他の方法の例として、プログラムカウンタ1311の値がループ範囲外になったことをもって、ループ処理の終了を検出するという方法が挙げられる。この場合、ループ終了の検出処理の安定性を向上させるため、例えば、プログラムカウンタ1311の値が、ループの末尾アドレスに所定値を加えた値より大きくなった場合に、ループ処理が終了したと判定してもよい。2-2第二の電力制御部次に、第二の電力制御部1705の動作を、図15のフローチャートを参照しながら説明する。まず、ステップS2501で、第二の電力制御部1705は、ループ伝搬依存解析部1702からの実行指示1714を受け取るまで待機する。次に、第二の電力制御部1705は、実行指示1714を受け取ると、ステップS2503で、省電力制御を終了し、通常電力制御に戻す制御を行う。具体的には、第二の電力制御部1705は、電力供給デバイス1304の電力供給モードを省電力モードから通常電力モードに復帰させるための電力制御情報1751を、電力供給デバイス1304へ送信する。その結果、電力供給デバイス1304は、例えば、第一の電力制御部1703で低減させていた、プロセッサ1301に供給するクロック1307の周波数と電力1306の電圧を、それぞれ増加させる例えば、元の値に戻す。以上で、本発明の実施の形態1における省電力制御装置を構成するループ検出部1701、ループ伝搬依存解析部1702、第一の電力制御部1703、ループ脱出検出部1704、第二の電力制御部1705の動作について説明した。2-3本実施の形態において、第一の電力制御部1703と、第二の電力制御部1705とによって、前記電力制御部が構成されている。なお、前記電力制御部を、第一の電力制御部1703によって構成し、電力制御部に第二の電力制御部1705が含まれない態様としてもよい。<ループ伝搬依存解析部の構成例>ループ伝搬依存解析部1702は、例えば、図16、図17に示すデジタルの電子回路を用いてループ伝搬依存の有無を解析するものとすることができる。図16は、フロー依存を検出するフロー依存検出回路2851を示す図である。図17は、ループ伝搬依存を検出するために、予備的にフロー依存およびループ伝搬依存の両方を検出する予備的検出回路2853を示す図である。なお、上記図16、図17において、ループに含まれる命令が4つの例命令1~4を示しているが、4つ以外の命令間の依存関係、例えば、5つ以上の命令間の依存関係を検出する回路を構成してもよい。フロー依存検出回路2851は、ループに含まれる命令列を格納する命令バッファ2855と、命令バッファ2855に格納された命令間のDSTレジスタデスティネーションレジスタ2202とSRCレジスタソースレジスタ2203との値を比較する比較回路2857とを備えている。図において、最も上側に位置する命令がループの先頭である。なお、1つの命令で2つのSRCレジスタ2203a,2203bが用いられている場合、SRCレジスタ2203a,2203bの各々と、DSTレジスタ2202との値が比較される。命令バッファ2855には、命令列保持部1340からループ範囲内の命令列が格納される。なお、命令列保持部1340を命令バッファ2855として用いてもよい。比較回路2857は、DSTレジスタ2202とSRCレジスタ2203との値が等しい場合に1を出力し、値が異なる場合に0を出力する。つまり、比較回路2857は、依存関係がある場合に1を出力する。ここで、1つのSRCレジスタ2203は、複数のDSTレジスタ2202と比較される場合がある例えば、命令4のSRCレジスタ2203。その場合は、複数の比較回路2857のうちの1つでも1が出力されていれば、フロー依存がある1と判定される。一方、複数の比較回路2857の全てが0を出力している場合は、フロー依存がない0と判定される。ループの命令のうち、n番目の命令のSRCレジスタ2203a,2203bの判定結果をSna,Snbとする。例えば、命令2のSRCレジスタ2203a,2203bの判定結果は、それぞれS2a,S2bである。なお、命令1にはフロー依存が生じないため、判定結果の図示を省略している。図17に示す予備的検出回路2853には、ループに含まれる命令列を格納する3つの命令バッファ2861a,2861b,2861cと、2つの命令バッファ2861a,2861b間でDSTレジスタ2202とSRCレジスタ2203との値を比較する比較回路2857とが設けられている。命令バッファ2861cは、第i回目のループが実行される際にループ範囲内の命令列を格納する。そして、第i1回目のループが実行される際に、格納している命令列が命令バッファ2861aに移動させられる。これにより、第i1回目のループが実行される際に、2つの命令バッファ2861a,2861bにループの命令列が格納される。比較回路2857は、フロー依存検出回路2851の比較回路と同じものである。しかし、予備的検出回路2853において、DSTレジスタ2202とSRCレジスタ2203との接続の組み合わせがフロー依存検出回路2851と異なっている。具体的には、先行ループ命令が格納された命令バッファ2861aのDSTレジスタ2202と、後続ループ命令が格納された命令バッファ2861bのSRCレジスタ2203とが、全ての組み合わせで比較される。ここで、命令バッファ2861bのSRCレジスタ2203a,2203bの判定結果を、予備的検出回路2853と同様に、Rna、Rnbとする。そして、いずれかのSRCレジスタ2203について、予備的検出回路2853において依存があると判定され、かつ、フロー依存検出回路2851において依存がないと判定された場合に、ループ伝搬依存があると判定される。すなわち、ループ伝搬依存が検出される。図12の例では、エントリ番号が5番のSRCレジスタ2203は、予備的検出回路2853によりエントリ番号が1番のDSTレジスタ2202と依存すると判定される。また、エントリ番号が5番のSRCレジスタ2203は、ループ内においてフロー依存がないため、フロー依存検出回路2851では依存が検出されない。よって、エントリ番号が5番のSRCレジスタ2203については、予備的検出回路2853の判定結果R1aは1であり、フロー依存検出回路2851の判定結果S1aは0である。このような場合にループ伝搬依存が検出されるのである。なお、図16では上述したように命令1の判定結果S1aなどの図示を省略しているが、命令1にはフロー依存が生じないため、命令1の判定結果S1aなどは0になる。上記予備的検出回路2853とフロー依存検出回路2851とを組み合わせてループ伝搬依存解析部1702を構成することができる。ここで、図17の予備的検出回路2853は命令バッファ2861a,2861b,2861cを3つ備えていたが、1つでもよい。命令バッファ2861aに格納された命令については、DSTレジスタ2202のみが比較回路2857と接続され、SRCレジスタ2203は比較回路2857と接続されていない。逆に、命令バッファ2861bに格納された命令については、SRCレジスタ2203のみが比較回路2857と接続され、DSTレジスタ2202は比較回路2857と接続されていない。よって、例えば、命令バッファ2861bに格納された命令について、DSTレジスタ2202と、SRCレジスタ2203a,2203bとの全ての組み合わせを比較できるものであればよい。さらに、図18に、簡易的にループ伝搬依存を検出するために用いられる簡易ループ伝搬依存検出回路2871を示す。簡易ループ伝搬依存検出回路2871は、フロー依存検出回路2851と同様に、命令バッファ2855と比較回路2857とを備えている。そして、各比較回路2857は、1つの命令に対応するDSTレジスタ2202とSRCレジスタ2203とに接続されている。すなわち、簡易ループ伝搬依存検出回路2871は、1つの命令においてDSTレジスタ2202とSRCレジスタ2203とが同じであるか否かを判別し、判定結果QnaQnb図において、nは1~4を出力する回路である。この簡易ループ伝搬依存検出回路2871により、例えば、図11に例示したループを成す命令列2600を解析した場合、2004番地のADD命令のDSTレジスタ2202とSRCレジスタ2203とがR2レジスタで一致し、判定結果Q1aに1が出力され、ループ伝搬依存が検出される。このように、簡易ループ伝搬依存検出回路2871は、一般的な演算用のループでは、変数となるレジスタの値をインクリメントあるいはデクリメントする計算式が存在することに基づいて、簡易的にループ伝搬依存を検出している。以上に、電子回路を用いてループ伝搬依存解析部1702を構成する例を述べたが、ループ伝搬依存解析部1702の構成は、これに限られない。例えば、図9に示した処理を行うプログラムを実行するプロセッサによってループ伝搬依存解析部1702を構成してもよい。なお、上記プログラムを実行するプロセッサは、例えば、マイクロプログラムを実行するマイクロプログラム順序器のように簡易的なプロセッサとしてもよい。この場合は、プロセッサ1301内に簡易的なプロセッサを形成することができる。また、上記プログラムを実行するプロセッサは、前記プロセッサ1301と同一の集積回路内に形成された別個のプロセッサとしてもよいし、前記プロセッサ1301としてもよい。なお、前記プロセッサ1301と別個の上記プログラムを実行するプロセッサで実行されるループ処理は、検出及び依存解析の対象外とすることができる。さらには、ループ伝搬依存解析部1702以外の、省電力制御装置の各構成要素ループ検出部1701等を、それぞれ、電子回路によって構成してもよいし、各構成要素の処理を行うプログラムを実行するプロセッサによって構成してもよい。また、実施の形態1において、省電力制御及び省電力制御を終了して通常電力制御に戻す制御を、上記記載したものの他、例えば、次のようなものとしてもよい。省電力制御を、プロセッサ1301へ供給するクロック1307の周波数を低下させ、又は、プロセッサ1301へ供給する電力1306の電圧を低下させることによって行う。そして、省電力制御を終了して通常電力制御に戻す制御を、プロセッサ1301へ供給するクロック1307の周波数を増加させ、又は、プロセッサ1301へ供給する電力1306の電圧を増加させることによって行う。[変形例]<I/Oデバイス>なお、上記実施の形態1にかかるコンピュータシステムの変形例を、図19に示す。なお、図19において、図1と同じ構成要素については、同じ符号を用い、説明を省略する。図19に示すコンピュータシステム2800には、図1と同様に、プロセッサ1301、主記憶1302、I/Oデバイス群1303、電力供給デバイス1304が、バス1305を介して、相互に接続されている。また、電力供給デバイス1304からは、プロセッサ1301に向けて、電力1306とクロック1307が供給されている。図19は、I/Oデバイス群1303となりうるデバイスの例を具体的に示している。アンテナ2810は、放送波や、形態電話網の電波を受信するデバイスである。チューナ2811は、アンテナ2810が受信したアナログ電波をデジタル信号に変換するものである。デコーダ2812は、チューナが変換したデジタル信号を、デコードするものである。デコーダ2812がデコードするコーデックの例として、MPEG2、MPEG4-AVC、MPEG4-MVCなどが挙げられる。OSD生成器2813は、デコーダ2812でデコードされた映像データや、プロセッサ1301が生成した画面データなどを、映像データの形に合成する。映像表示器2814は、OSD生成器2813が合成した映像データを画面に表示する。映像表示器2814の例として、液晶ディスプレイ、プラズマディスプレイ、有機ELディスプレイ、LEDディスプレイなどが挙げられる。スピーカ2816は、デコーダ2812でデコードされた音声データの音声出力を行う。半導体メモリ読み書き装置2821、HDD2822ハードディスク記憶装置、光ディスク読み書き装置2823は、記憶デバイスとして使用されうる。また、ネットワーク通信器2825は、コンピュータシステム2800外部からの、ネットワーク信号を受信する。ネットワーク通信器2825の例としては、ethernetアダプタや、無線LANアダプタが挙げられる。リモコン受信器2826は、外部からの赤外線による制御信号などを受信する。なお、ここで説明したI/Oデバイス群1303となりうるデバイスを、コンピュータシステム2800に搭載するか否かは任意である。また、ここで説明したデバイスとは異なるデバイスを搭載してもよい。例えば、キーボード、マウス、タッチパネル等の入力装置も、I/Oデバイス群1303となりうる。I/Oデバイスを部分的に搭載したコンピュータシステム2800は、パーソナルコンピュータ、メインフレーム、テレビ、ビデオデッキ、HDDレコーダー、携帯電話、カーナビゲーションシステム、固定電話、コピー機、ネットワーク中継機器、タッチパネルつきモバイル端末等の一部分を構成しうる。また、第一の電力制御部1703と、第二の電力制御部1705の制御対象は、電力1306の電圧と、クロック1307の周波数に限らない。第一の電力制御部1703と、第二の電力制御部1705の制御対象は、プロセッサ1301もしくは、コンピュータシステム1300,2800に供給される電力を制御するものであればよい。[実施の形態2]実施の形態2におけるマルチスレッド対応のコンピュータシステム2900の構成を、図20を参照しながら説明する。なお、図20において、図1のコンピュータシステム1300と同じ構成要素については、同じ符号を用い、説明を省略する。本実施の形態2にかかるコンピュータシステム2900と、前記実施の形態1にかかるコンピュータシステム1300とでは、以下の点で異なる。iコンピュータシステム2900には、レジスタ群2910がスレッドの個数分だけ存在し、各レジスタ群2910にスレッド識別子レジスタ2912と、タイムスライスレジスタ2913が備えられている。iiコンピュータシステム2900には、プロセッサ2901において動作するスレッドを切り替えるスレッド切替え部2920が備えられている。iii第一の電力制御部、及び第二の電力制御部には、レジスタ群2910へタイムスライス設定情報を出力する機能と、実行ユニット1350の稼動本数を制御する機能とが備えられている。<レジスタ群、スレッド切替え部、その他>レジスタ群2910のデータ構造を、図21を参照しながら説明する。図21には、第一及び第二スレッドにそれぞれ対応する第一及び第二レジスタ群2910a,2910bが示されている。各レジスタ群2910には、それぞれ図4で説明したレジスタ群1310の構成要素に加えて、スレッド識別子レジスタ2912、タイムスライスレジスタ2913が備えられる。スレッド識別子レジスタ2912は、複数存在するスレッドの中から、特定のスレッドを識別するためのスレッド識別子を格納するレジスタである。例えば、第一スレッドに対応する第一レジスタ群2910aに属するスレッド識別子レジスタ2912aには1が書き込まれ、第二スレッドに対応する第二レジスタ群2910bに属するスレッド識別子レジスタ2912bには2が書き込まれる。タイムスライスレジスタ2913は、各スレッドに割り当てられる時間、つまり、タイムスライスが格納される。例えば、第一スレッドに100クロックサイクル、第二スレッドに100クロックサイクルの比率でタイムスライスを割り当てる場合は、第一スレッドに対応する第一レジスタ群2910aのタイムスライスレジスタ2913aに100が格納される。また、第二スレッドに対応する第二レジスタ群2910bのタイムスライスレジスタ2913bに100が格納される。スレッド切替え部2920は、各スレッドのタイムスライスレジスタ2913の値に応じて、プロセッサ2901の実行時間を各スレッドに時分割で割り当てる。ここで、スレッド切替え部2920について具体的に説明する。スレッド切替え部2920は、レジスタ群2910及び命令フェッチ/デコードユニット1320と直接に、あるいはバスを介して接続されている。そして、スレッド切替え部2920は、現在実行されているスレッドに対応するレジスタ群2910のプログラムカウンタ1311の値を読み出し、命令フェッチ/デコードユニット1320に転送する。また、スレッド切替え部2920は、プログラムカウンタ1311の値とともにスレッド識別子も転送する。例えば、第一スレッドが実行される場合は、スレッド切替え部2920は、スレッド識別子の値1と、第一レジスタ群2910aのプログラムカウンタ1311aの値を命令フェッチ/デコードユニット1320に転送する。これにより、第一スレッドを実行するプログラムの命令がフェッチ/デコードされる。なお、命令フェッチ/デコードユニット1320でフェッチした命令列には、スレッド識別子レジスタ2912の情報、つまり、スレッド識別子の値例えば1が付与される。ここで、スレッド切替えのタイミングは、プロセッサ2901外に設けられたタイマ/カウンタ図示省略によって通知される。以下、具体的に説明する。例えば、第一スレッドが開始される際には、タイマ/カウンタにタイムスライスレジスタ2913aに格納されたタイムスライスが設定され、タイマ/カウンタがスタートさせられる。タイマ/カウンタは、設定されたタイムスライスが経過すると、スレッド切替え部2920に通知する。その通知を受けたスレッド切替え部2920は、次のスレッドに対応するレジスタ群、例えば、第二レジスタ群2910bのスレッド識別子の値2とプログラムカウンタ1311bの値とを、命令フェッチ/デコードユニット1320に転送する。これにより、命令フェッチ/デコードユニット1320でフェッチされる命令のアドレスが、第二スレッドを実行するプログラムの命令のアドレスに変更される。その結果、第二スレッドを実行するプログラムの命令がフェッチ/デコードされ、動作するスレッドが切り替えられる。タイマ/カウンタは、設定時間経過後にリセットされ、次に実行されるスレッド、例えば、第二スレッドのタイムスライスが設定された後、スタートさせられる。このようにして、各スレッドに割り当てられたタイムスライスに応じて動作するスレッドが切り替えられる。なお、プロセッサ2901内にタイマ/カウンタを設けてもよい。本実施の形態において、タイムスライスレジスタ2913と、スレッド切替え部2920とによって、スレッド管理部が構成されている。また、スレッド管理部は、スレッド識別子レジスタ2912を含むものとしてもよい。発行ユニット1330は、演算等の命令を発行する場合に、複数存在するレジスタ群2910の中から、命令列に付与されたスレッド識別子に対応するレジスタ群2910の値を読み出す。リタイアメントユニット1360は、実行ユニット1350の実行結果を、複数存在するレジスタ群2910の中から、命令列に付与されたスレッド識別子に対応するレジスタ群2910へ書き戻す。ループ範囲記憶部1900は、ループ範囲にスレッド識別子を対応付けて格納する。また、複数のスレッドについて、ループ範囲及びスレッド識別子を格納できる。ループ検出部1701は、ループ処理を検出した場合に、ループ範囲記憶部1900にループ範囲とともにスレッド識別子を書き込む。ループ伝搬依存解析部1702は、ループ範囲記憶部1900からループ範囲とともにループ処理が検出されたスレッドのスレッド識別子を取得する。そして、ループ伝搬依存解析部1702は、対象となるスレッドのループ範囲の命令列についてループ伝搬依存の解析処理を行う。ループ伝搬依存が存在しなかった場合は、ループ伝搬依存解析部1702は、第一の電力制御部3013に実行指示1712を出力する。ここで、ループ伝搬依存解析部1702は、実行指示1712にスレッドを識別する情報を付与する。例えば、ループ伝搬依存解析部1702と第一の電力制御部3013とを接続する複数の信号線が、それぞれ複数のスレッドに対応しており、解析処理の対象となったスレッドに対応する信号線の電圧を高くすることでスレッドを識別する情報が付与される。ループ脱出検出部1704は、第一の電力制御部3013からスレッド識別子とともに実行指示1713を受ける。そして、ループ脱出検出部1704は、ループ範囲記憶部1900から前記スレッド識別子に対応するループ範囲を取得する。そして、対象となるスレッドの分岐命令の実行結果等に基づき、ループ処理の終了を検出する。なお、ループ脱出検出部1704は、複数のスレッドについてループ処理の終了を検出することができる。そして、いずれかのスレッドについてループ処理の終了を検出した場合は、第二の電力制御部3015に実行指示1714とともにスレッド識別子を送る。<電力制御部>第一の電力制御部3013及び第二の電力制御部3015は、リタイアメントユニット1360内に設けられる。これにより、リタイアメントユニット1360の機能を用いてレジスタ群2910への書き込み等を容易に行うことができる。第一の電力制御部3013は、電力供給デバイス1304へ電力制御情報1731を出力する機能に加え、レジスタ群2910へタイムスライス設定情報3103を出力する機能と、実行ユニット1350の稼動本数減少指示3107を出力する機能を有している。第二の電力制御部3015は、電力供給デバイス1304へ電力制御情報1751を出力する機能に加え、レジスタ群2910へタイムスライス設定情報3105を出力する機能と、実行ユニット1350の稼動本数増加指示3109を出力する機能を有している。1省電力制御1第一の電力制御部3013の動作のフローチャートを図22に示す。まず、ステップS3201で、第一の電力制御部3013は、ループ伝搬依存解析部1702から、実行指示1712を受け取ったか判定を行う。判定結果がYESの場合は、ステップS3203へ進む。判定結果がNOの場合は、ステップS3201の判定を再度実行する。なお、前述のように実行指示1712にはスレッドを識別する情報が含まれている。次に、ステップS3203において、第一の電力制御部3013は、レジスタ群2910のうち、実行指示1712によって指定されたスレッドに対応するレジスタ群2910へ現在動作中のスレッドに対応する、レジスタ群2910へ、当該スレッドに関する変更後のタイムスライスが変更前のタイムスライスより減少するような、タイムスライス設定情報3103を出力する。例えば、指定されたスレッド識別子が2であった場合は、第一の電力制御部3013は、スレッド識別子レジスタ2912が2である第二レジスタ群2910bのタイムスライスレジスタ2913bの値を、100から50に変更する。ステップS3205において、第一の電力制御部3013は、電力供給デバイス1304へ、電力制御情報1731を出力する。例えば、クロック1307の周波数を4分の3にするように指示する。ステップS3207において、第一の電力制御部3013は、ループ脱出検出部1704へ、指定されたスレッド識別子とともに実行指示1713を出力する。第二の電力制御部3015の動作のフローチャートを図23に示す。まず、ステップS3301で、第二の電力制御部3015は、ループ脱出検出部1704から、実行指示1714を受け取ったか判定を行う。判定結果がYESの場合は、ステップS3303へ進む。判定結果がNOの場合は、ステップS3301を再度実行する。なお、前述のように実行指示1714にはスレッド識別子が含まれている。次に、ステップS3303において、第二の電力制御部3015は、スレッド識別子が示すスレッドに対応するレジスタ群2910へ現在動作中のスレッドに対応する、レジスタ群2910へ、当該スレッドに関する変更後のタイムスライスが変更前のタイムスライスより増加するように例えば、第一の電力制御部3013により減少させられる前のタイムスライスに戻るように、タイムスライス設定情報3105を出力する。例えば、スレッド識別子が2であった場合は、第二の電力制御部3015は、複数存在するレジスタ群2910のうち、スレッド識別子レジスタ2912が2である第二レジスタ群2910bのタイムスライスレジスタ2913bの値を、50から100へ戻す。次に、ステップS3305において、第二の電力制御部3015は、電力供給デバイス1304へ、電力制御情報1751を出力する。その結果、電力供給デバイス1304は、例えば、第一の電力制御部3013で低減させていたプロセッサ2901に供給するクロック1307の周波数を増加させる元に戻す。ここで、省電力制御時において、ビジーウェイト状態のスレッド上記の例では第二スレッドと、ビジーウェイト状態ではないスレッド、つまり、通常の処理を行っているスレッド上記の例では第一スレッドとに割り当てられるプロセッサリソースプロセッサの処理能力について考察する。各スレッドに割り当てられるプロセッサリソースは、一般的には各スレッドのタイムスライス÷全スレッドのタイムスライスの総和×クロック1307の周波数の式で表すことができる。ここで説明した例では、省電力制御実行時のクロック1307の周波数は、第一、第二スレッドともに通常電力制御時のクロック1307の周波数の4分の3に減少する。一方、省電力制御実行時の各スレッドのタイムスライス÷全スレッドのタイムスライスの総和は、第一スレッドでは通常電力制御時の3分の4に増加する100÷200から、100÷150。また、第二スレッドでは通常電力制御時の3分の2に減少する100÷200から、50÷150。このため、この例では、ビジーウェイト状態ではない第一スレッドに割り当てられるプロセッサリソースは、クロック1307の周波数の減少割合の4分の3と、タイムスライスの割り当て比率の増加割合の3分の4とを乗じて1となる。すなわち、省電力制御が行われても、第一スレッドに割り当てられるプロセッサリソースは減少しない。一方、第二スレッドに割り当てられるプロセッサリソースは半減し、電力の浪費が抑制される。これにより、ビジーウェイトが実行されていないスレッドの処理速度を維持しながら、ビジーウェイト状態のスレッドに割り当てるプロセッサリソースを選択的に低減し、ビジーウェイトを実行することによってプロセッサ2901が消費する電力ならびに、コンピュータシステム2900が消費する電力を低減することが可能となる。上記の省電力制御は、以下のように考えることもできる。上記の例において、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に相当するプロセッサリソースは、上記計算式を用いて50÷200×周波数fとなる。つまり、上記タイムスライスの減少分は、通常電力制御時のプロセッサリソースの4分の1に相当する。そこで、上記4分の1のプロセッサリソースに応じて、クロック1307の周波数を4分の1だけ減少させれば、ビジーウェイト状態ではないスレッドのプロセッサリソースを減少させずに、プロセッサ2901の消費電力を低減させることができる。また、ビジーウェイト状態の特定スレッドが、ビジーウェイト状態を脱した時に、他のスレッドのプロセッサリソースを減少させることなく、前記特定スレッドに割り当てるプロセッサリソースを増加させることができる。このように、上記の省電力制御は、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に応じて、クロック1307の周波数を減少させるものである。2省電力制御2上記の例では、コンピュータシステム2900は、第一の電力制御部3013と、第二の電力制御部3015は、クロック1307の周波数を制御することで省電力制御を行い、コンピュータシステム2900で浪費される電力を抑制していた。それに対し、省電力制御を行う方法はほかにも存在する。例えば、クロック1307の周波数を制御するかわりに、あるいは周波数の制御とともに、実行ユニット1350の稼動本数を減少させることで、省電力制御を行ってもよい。実行ユニット1350の稼動本数を減少させることで省電力制御を行う、第一の電力制御部3013、及び第二の電力制御部3015の処理のフローチャートを説明する。まず、第一の電力制御部3013の処理を、図24のフローチャートを参照しながら説明する。まず、ステップS3401において、第一の電力制御部3013は、ループ伝搬依存解析部1702から、実行指示1712を受け取ったか判定を行う。判定結果がYESの場合は、ステップS3403へ進む。判定結果がNOの場合は、ステップS3401へ戻る。なお、前述のように実行指示1712にはスレッドを識別する情報が含まれている。次に、ステップS3403において、第一の電力制御部3013は、レジスタ群2910のうち、実行指示1712によって指定されたスレッドに対応するレジスタ群2910へ現在動作中のスレッドに対応する、レジスタ群2910へタイムスライス設定情報3103を出力する。例えば、現在実行中のスレッド識別子が2であった場合は、第一の電力制御部3013は、スレッド識別子レジスタ2912が2である第二レジスタ群2910bのタイムスライスレジスタ2913bの値を、100から50に変更する。次に、ステップS3405において、第一の電力制御部3013は、実行ユニット1350へ実行ユニット1350の稼働本数を減少させるための稼動本数減少指示3107を出力する。例えば、実行ユニット1350が4本存在した場合は、稼動本数を3本に削減するよう、実行ユニット1350へ指示する。ここで、稼動本数減少指示3107について説明する。図示を省略しているが、第一の電力制御部3013は、発行ユニット1330と信号線によって接続されている。そして、第一の電力制御部3013は、発行ユニット1330に複数の実行ユニット1350のうちの一部への命令の発行停止を指示する。この指示は、例えば、複数の実行ユニット1350の各々に対応する信号線のうち、停止させようとする実行ユニット1350に対応する信号線に信号を送信する。これにより、一部の実行ユニット1350への命令の発行が停止される。また、各実行ユニット1350に電力を供給する給電路には、トランジスタによって構成される電子スイッチが設けられている。そして、第一の電力制御部3013は、稼働停止対象の実行ユニット1350に対応する電子スイッチをオフにすることにより、実行ユニット1350への電力供給を遮断し、稼動本数を削減することができる。なお、実行ユニット1350への電力供給遮断は、発行ユニット1330への命令の発行停止を指示した後に行われる。ステップS3407において、第一の電力制御部3013は、ループ脱出検出部1704へ、実行指示1713を出力する。第二の電力制御部3015の処理を、図25のフローチャートを参照しながら説明する。まず、ステップS3501で、第二の電力制御部3015は、ループ脱出検出部1704から、実行指示1714を受け取ったか判定を行う。判定結果がYESの場合は、ステップS3503へ進む。判定結果がNOの場合は、ステップS3501の処理を再度実行する。なお、前述のように実行指示1714にはスレッド識別子が含まれている。次に、ステップS3503において、第二の電力制御部3015は、スレッド識別子が示すスレッドに対応するレジスタ群2910へ現在動作中のスレッドに対応する、レジスタ群2910へタイムスライス設定情報3105を出力する。例えば、スレッド識別子が2であった場合は、スレッド識別子レジスタ2912が2である第二レジスタ群2910bのタイムスライスレジスタ2913bの値を、50から100へ戻す。次に、ステップS3505において、第二の電力制御部3015は、実行ユニット1350へ実行ユニット1350の稼働本数を増加させるための稼動本数増加指示3109を出力する。例えば、実行ユニット1350の稼動本数を、第一の電力制御部3013で減少させられる前の本数である、4本に戻すよう指示する。なお、稼動本数増加指示3109は、前述の稼動本数減少指示3107と逆の順序で行われる。つまり、電子スイッチをオンにした後、発行ユニット1330への命令の発行再開が指示される。ここで、省電力制御時において、ビジーウェイトを実行しているスレッド上記の例では第二スレッドと、ビジーウェイトを実行していないスレッド、つまり、通常の処理を行っているスレッド上記の例では第一スレッドとに割り当てられるプロセッサリソースプロセッサの処理能力について考察する。各スレッドに割り当てられるプロセッサリソースは、一般的に、各スレッドのタイムスライス÷全スレッドのタイムスライスの総和×実行ユニット1350の稼動本数である。この例では、第一スレッドについて、省電力制御実行時における実行ユニット1350の稼動本数は、通常電力制御時の4分の3に減少するが、省電力制御実行時における各スレッドに割り当てられるタイムスライス÷全スレッドのタイムスライスの総和は、通常電力制御時の3分の4に増加する100÷200から、100÷150へ増加するため、両者の積は1となる。一方、第二スレッドについては、両者の積は2分の1となる。このため、この例では、ビジーループが実行されていないスレッド、すなわち、第一スレッドに割り当てられるプロセッサリソースは、省電力制御が実行されても減少しない。これにより、ビジーループが実行されていないスレッドの処理速度を維持しながら、ビジーループが実行されているスレッドに割り当てる処理能力を選択的に低減し、ビジーウェイトを実行することによってプロセッサ2901が消費する電力ならびに、コンピュータシステム2900が消費する電力を低減することが可能となる。上記の省電力制御は、以下のように考えることもできる。上記の例において、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に相当するプロセッサリソースは、上記計算式を用いて50÷200×実行ユニットの稼働本数となる。つまり、上記タイムスライスの減少分は、通常電力制御時のプロセッサリソースの4分の1に相当する。そこで、上記4分の1のプロセッサリソースに応じて、実行ユニット1350の稼動本数を4分の1だけ減少させれば、ビジーウェイト状態ではないスレッドのプロセッサリソースを減少させずに、プロセッサ2901の消費電力を低減させることができる。また、ビジーウェイト状態の特定スレッドがビジーウェイト状態を脱した時に、実行ユニット1350の稼動本数を増加させることにより、他のスレッドのプロセッサリソースを減少させることなく、前記特定スレッドに割り当てるプロセッサリソースを増加させることができる。このように、上記の省電力制御は、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に応じて、実行ユニットの稼働本数を減少させるものである。3省電力制御補足上記2種類の省電力制御を合わせると、各スレッドに割り当てられるプロセッサリソース処理能力は、各スレッドのタイムスライス÷全スレッドのタイムスライスの総和×クロック1307の周波数×実行ユニット1350の稼動本数となる。本実施の形態によれば、上記の計算に基づき、ビジーループが実行されていないスレッドのプロセッサリソースを減少させることなく、ビジーループが実行されているスレッドのプロセッサリソースを選択的に低減させることができる。また、省電力制御において、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に応じて、クロック1307の周波数及び実行ユニット1350の稼働本数の少なくとも一方を減少させることができる。なお、省電力制御時にビジーループが実行されていないスレッドのプロセッサリソースが増加してもよい。この場合であっても、ビジーループの実行により浪費される電力を低減することができる。なお、実施の形態2において、省電力制御及び省電力制御を終了して通常電力制御に戻す制御を、省電力制御1及び省電力制御2で記載したものの他、例えば、次のようなものとしてもよい。省電力制御を、プロセッサ2901へ供給する電力1306の電圧を低下させることによって、又は、プロセッサ2901へ供給する電力1306の電圧及びクロック1307の周波数を低下させることによって行う。そして、省電力制御を終了して通常電力制御に戻す制御を、プロセッサ2901へ供給する電力1306の電圧を増加させることによって、又は、プロセッサ2901へ供給する電力1306の電圧及びクロック1307の周波数を増加させることによって行う。また、省電力制御を、実行ユニット1350の稼働本数を減少させるとともにプロセッサ2901へ供給する電力1306の電圧を低下させることによって、又は、実行ユニット1350の稼働本数を減少させるとともにプロセッサ2901へ供給する電力1306の電圧及びクロック1307の周波数を低下させることによって行う。そして、省電力制御を終了して通常電力制御に戻す制御を、実行ユニット1350の稼働本数を増加させるとともにプロセッサ2901へ供給する電力1306の電圧を増加させることによって、又は、実行ユニット1350の稼働本数を増加させるとともにプロセッサ2901へ供給する電力1306の電圧及びクロック1307の周波数を増加させることによって行う。なお、第一の電力制御部3013と、第二の電力制御部3015の制御対象は、電力1306の電圧、クロック1307の周波数、実行ユニット1350の稼働本数に限らない。第一の電力制御部3013と、第二の電力制御部3015の制御対象は、プロセッサ2901もしくは、コンピュータシステム2900に供給される電力を制御するものであればよい。[実施の形態3]実施の形態3におけるコンピュータシステムの構成を、図26を参照しながら説明する。なお、図26において、図1のコンピュータシステム1300と同じ構成要素については、同じ符号を用い、説明を省略する。本実施の形態3に係るコンピュータシステム4000と、前記実施の形態1に係るコンピュータシステム1300とでは、以下の点で異なる。iコンピュータシステム4000には、ループ検出部1701とループ脱出検出部1704の代わりにプログラムカウンタ監視部4100が備えられている。iiコンピュータシステム4000には、ループ伝搬依存解析部1702の代わりにバス監視部4200が備えられている。<プロセッサ>集積回路4010内のプロセッサ4020は、実施の形態1のプロセッサ1301から、省電力制御装置ループ検出部1701、ループ伝搬依存解析部1702、第一の電力制御部1703、ループ脱出検出部1704、第二の電力制御部1705を取り除いた構成である。また、発行ユニット1330Aは、実施の形態1の発行ユニット1330から、ループ伝搬依存解析部1702を取り除いた構成であり、リタイアメントユニット1360Aは、実施の形態1のリタイアメントユニット1360からループ検出部1701、ループ脱出検出部1704を取り除いた構成である。<省電力制御装置>実施の形態3では、プログラムカウンタ監視部4100、バス監視部4200、第一の電力制御部1703、第二の電力制御部1705が、省電力制御装置を構成する。なお、プログラムカウンタ監視部4100、バス監視部4200、第一の電力制御部1703、第二の電力制御部1705の一部又は全部をプロセッサ内に設けるようにしてもよい。1-1プログラムカウンタ監視部4100省電力制御に関する動作プログラムカウンタ監視部4100の省電力制御に関する動作を、図27のフローチャートを参照しながら説明する。但し、図27のフローチャートは、プロセッサ4020がループ処理を実行する間、プログラムカウンタ1311の値は一定のパターンで繰り返されることに着目したものである。プログラムカウンタ監視部4100は、ステップS4501において、プログラムカウンタ1311の値が一定のパターンで繰り返しているかを監視する。そして、ステップS4501の判定結果がNOの場合プログラムカウンタ1311の値が一定のパターンで繰り返していない場合、ステップS4501に戻る。ステップS4501の判定結果がYESの場合プログラムカウンタ1311の値が一定のパターンで繰り返している場合、ステップS4503へ進む。プログラムカウンタ監視部4100は、ステップS4503において、バス監視実行の実行指示1711Aをバス監視部4200へ出力する。1-2バス監視部4200バス監視部4200の動作を、図28のフローチャートを参照しながら説明する。但し、図28のフローチャートは、プロセッサ4020がループ処理を実行し、そのループ間にループ伝搬依存関係がなければ読み出しに係るアドレスに変化が生じない場合があることに着目したものである。バス監視部4200は、ステップS4601で、プログラムカウンタ監視部4100から実行指示1711Aを受け取ったか判定する。ステップS4601の判定結果がYESの場合にはステップS4603へ進む。ステップS4601の判定結果がNOの場合には、ステップS4601の判定を再度実行する。バス監視部4200は、ステップS4603で、バス1305を監視して、読み出しに係るアドレスに変化があるかを判定する。ステップS4603の判定結果がYESの場合読み出しに係るアドレスに変化がある場合には、ステップS4605へ進む。ステップS4603の判定結果がNOの場合読み出しに係るアドレスに変化がない場合には、ステップS4607へ進む。バス監視部4200は、ステップS4605において、第一の電力制御部1703へ省電力制御実行の実行指示1712を出力しない。バス監視部4200は、ステップS4607において、第一の電力制御部1703へ省電力制御実行の実行指示1712を出力する。なお、第一の電力制御部1703は、バス監視部4200から実行指示1712を受けると、電力制御情報1731を電力供給デバイス1304へ送信するとともに、省電力制御終了検出のための実行指示1713Aをプログラムカウンタ4100へ出力する。なお、第一の電力制御部1703による省電力制御は、実施の形態1に記載した各省電力制御を利用できる。1-3プログラムカウンタ監視部4100省電力制御終了に関する動作プログラムカウンタ監視部4100の省電力制御終了に関する動作を、図29のフローチャートを参照しながら説明する。但し、図29のフローチャートは、プロセッサ4020がループ処理の実行終了後、プログラムカウンタ1311の値がループ処理の実行中の一定のパターンでの繰り返しから外れることに着目したものである。プログラムカウンタ監視部4100は、ステップS4701で、第一の電力制御部1703から実行指示1713Aを受け取ったか判定する。ステップS4701の判定結果がYESの場合にはステップS4703へ進む。ステップS4701の判定結果がNOの場合にはステップS4701の判定を再度実行する。プログラムカウンタ監視部4100は、ステップS4703で、プログラムカウンタ1311の値がステップS4501の判定時の一定のパターンと同じ一定のパターンで繰り返しているかを監視する。そして、ステップS4703の判定結果がYESの場合プログラムカウンタ1311の値が一定のパターンで繰り返している場合、プロセッサ4020がループ処理の実行を継続しているものとして、ステップS4703に戻る。ステップS4703の判定結果がNOの場合プログラムカウンタ1311の値が一定のパターンで繰り返していない場合、プロセッサ4020がループ処理の実行を終了したものとみなし、ステップS4703へ進む。プログラムカウンタ監視部4100は、ステップS4705において、第二の電力制御部1705へ省電力制御終了実行の実行指示1714を出力する。なお、第二の電力制御部1705は、プログラムカウンタ監視部4100から実行指示1714を受けると、電力制御情報1735を電力供給デバイス1304へ送信する。なお、第二の電力制御部1705による省電力制御を終了して通常電力制御に戻す制御は、実施の形態1に記載した各省電力制御を終了して通常電力制御に戻す制御を利用できる。[実施の形態4]実施の形態4におけるコンピュータシステムの構成を、図30を参照しながら説明する。なお、図30において、図20のコンピュータシステム2900又は図26のコンピュータシステム4000と同じ構成要素については、同じ符号を用い、説明を省略する。本実施の形態4に係るコンピュータシステム4500と、前記実施の形態2に係るコンピュータシステム2900とでは、以下の点で異なる。iコンピュータシステム4500には、ループ検出部1701とループ脱出検出部1704の代わりにプログラムカウンタ監視部4100が備えられている。iiコンピュータシステム4500には、ループ伝搬依存解析部1702の代わりにバス監視部4200が備えられている。<プロセッサ>集積回路4510内のプロセッサ4520は、実施の形態2のプロセッサ2901から、省電力制御装置ループ検出部1701、ループ伝搬依存解析部1702、第一の電力制御部3013、ループ脱出検出部1704、第二の電力制御部3015を取り除いた構成である。<省電力制御装置>実施の形態4では、プログラムカウンタ監視部4100、バス監視部4200、第一の電力制御部3013、第二の電力制御部3015が、省電力制御装置を構成する。なお、プログラムカウンタ監視部4100、バス監視部4200、第一の電力制御部3013、第二の電力制御部3105の一部又は全部をプロセッサ内に設けるようにしてもよい。1-1プログラムカウンタ監視部4100省電力制御に関する動作プログラムカウンタ監視部4100には、各スレッドのプログラムカウンタ1311の値が入力されるとともに、スレッド切替え部2920から現在動作中のスレッドを示す情報が入力される。プログラムカウンタ監視部4100は、プロセッサ4200がスレッドを切替えながら動作するものであることから、プログラムカウンタ1311をスレッド単位で監視する。そして、プログラムカウンタ監視部4100は、スレッド切替え部2920から受け取った情報に対応するスレッドのプログラムカウンタ1311の値が一定のパターンで繰り返していることを検出した場合に、バス監視実行の実行指示1711Aをバス監視部4200へ出力する。なお、この実行指示1711Aはプログラムカウンタ1311の値が一定のパターンで繰り返しているスレッドを示す情報を含むものとする。1-2バス監視部4200バス監視部4200には、スレッド切替え部2920から現在動作中のスレッドを示す情報が入力される。バス監視部4200は、プログラムカウンタ監視部4100から受け取った各実行指示1711Aに含まれる情報が示すスレッドについてバス1305を監視する。そして、バス監視部4200は、スレッド切替え部2920から受け取った現在動作中のスレッドの読み出しに係るアドレスに変化がないことを検出した場合に、第一の電力制御部3013へ省電力制御実行の実行指示1712を出力する。この実行指示1712には読み出しに係るアドレスに変化がないことが検出されたスレッドを示す情報を含むものとする。第一の電力制御部3013は、省電力制御終了検出のための実行指示1713Aをプログラムカウンタ4100へ出力する。なお、第一の電力制御部3013による省電力制御は、実施の形態2に記載した各省電力制御を利用できる。また、第一の電力制御部3013によるタイムスライス数の減少制御は、実施の形態2に記載した各タイムスライス数の減少制御を利用できる。1-3プログラムカウンタ監視部4100省電力制御終了に関する動作プログラムカウンタ監視部4100は、第一の電力制御部3013から受け取った各実行指示1713Aに含まれる情報が示すスレッドについてプログラムカウンタ1311を監視する。そして、プログラムカウンタ監視部4100は、スレッド切替え部2920から受け取った現在動作中のスレッドのプログラムカウンタ1311の値が一定のパターンで繰り返していないことを検出した場合に、第二の電力制御部3014へ省電力制御終了実行の実行指示1714を出力する。なお、この実行指示1714はプログラムカウンタ1311の値が一定のパターンで繰り返さなくなったスレッドを示す情報を含むものとする。なお、第二の電力制御部3015による省電力制御を終了して通常電力制御に戻す制御は、実施の形態2に記載した各省電力制御を終了して通常電力制御に戻す制御を利用できる。また、第二の電力制御部3015によるタイムスライス数の増加制御は、実施の形態2に記載した各タイムスライス数の増加制御を利用できる。その他1前記実施の形態および変形例の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。また、本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。2前記実施の形態1,2および変形例において、実行ユニットによって実行された後の分岐命令が検出され、命令列保持部1340に格納されたループ範囲の命令列についてループ伝搬依存の有無を解析する処理が行われていた。それに対し、命令キャッシュ1370に読み込まれた実行前の命令列に含まれる分岐命令をループ検出部によって検出し、検出されたループ処理について予めループ伝搬依存の有無を解析する処理を行うこともできる。そして、ビジーウェイト用のループが検出された場合、分岐命令のアドレス、あるいはループ範囲をバッファに格納しておくことができる。その結果、バッファに格納されたアドレスの命令が実行された場合、ビジーウェイト用のループが実行されることを検出することができる。この場合、ループ検出部はリタイアメントユニット1360以外の箇所に設けることができ、ループ伝搬依存解析部も発行ユニット1330以外の箇所に設けることができる。また、命令キャッシュから命令のフェッチ等を行うユニットを、命令フェッチ/デコードユニット1320と別個に設けてもよい。3前記実施の形態2,4において、省電力制御時に実行ユニットの稼働本数が減少させられていた。これと同様に、実施の形態1,3においても、省電力制御時に実行ユニットの稼働本数を減少させることができる。4前記実施の形態1,2及び変形例において、ループ検出部1704は分岐命令等の実行結果に基づいてループ処理の検出を行っている。ここで、リタイアメントユニット1360に、発行された命令と、その命令のアドレスとを格納するリオーダーバッファが設けられている場合がある。この場合、発行ユニット1330からリオーダーバッファに送られた分岐命令に基づいて、分岐命令の発行を検出しておくことができる。その後、分岐命令の実行結果がリタイアメントユニットに送られてきた場合、あるいは、分岐命令の実行結果がリタイアした場合プログラムカウンタが書き換えられた場合等に分岐命令の実行を検出することができる。5前記実施の形態1~4及び変形例において、電力供給デバイスは、プロセッサへ供給するクロックの周波数を記憶するクロック周波数記憶部を備え、プロセッサがクロック周波数記憶部からクロック周波数を読み取ることができるようにしてもよい。この場合の実装方法の例として第一の例と第二の例を挙げる。第一の例では、クロック周波数記憶部は、メモリマップされたレジスタとして実装される。クロック周波数記憶部は、バス上の特定のアドレスに割り当てられる。プロセッサは、バスを介して、クロック周波数記憶部からクロック周波数を読み取る。第二の例では、クロック周波数記憶部は、プロセッサが特定の命令を特定の命令を実行することにより、プロセッサによって取得される。プロセッサは、実行ユニットにおいて、特定の命令を実行した場合に、電力供給デバイスに存在するクロック周波数記憶部からクロック周波数を読み取る。図31に特定の命令を備える命令セット1400Aの例を示す。図31で示す命令セット1400Aは、図4で説明した命令セット1400に、READCLK命令1420が追加されたものであり、READCLK命令1420が、クロック周波数記憶部からクロック周波数を読み取るためにプロセッサで実行される特定の命令に該当する。6前記実施の形態2、4及び変形例において、タイムスライスは、プロセッサによって読み取ることができるようにしてもよい。例えば、タイムスライスは、プロセッサが特定の命令を特定の命令を実行することにより、プロセッサによって取得される。プロセッサは、実行ユニットにおいて、特定の命令を実行した場合に、タイムスライスを読み取る。図32に特定の命令を備える命令セット1400Bの例を示す。図32で示す命令セット1400Bは、図4で説明した命令セット1400に、READCLK命令1420とREADTS命令1421が追加されたものであり、READTS命令1421が、タイムスライスを読み取るためにプロセッサで実行される特定の命令に該当する。[補足]本発明の一態様における集積回路は、プロセッサを備えた集積回路であって、前記プロセッサにおいて、1以上の命令からなるループを繰り返し実行するループ処理が実行されることを検出するループ検出部と、前記ループ処理において命令間の依存が実行回の異なる2つのループにまたがるループ伝搬依存を検出するループ伝搬依存解析部と、前記ループ検出部によって検出されたループ処理に、前記ループ伝搬依存解析部によってループ伝搬依存が検出されない場合に、前記ループ処理の実行による電力消費を低減させる省電力制御を行う電力制御部と、を備える。本態様の集積回路は、ループ検出部によってループ処理を検出し、ループ伝搬依存解析部によってループ処理がビジーウェイト用であるか否かを判別することができる。そのため、特定の命令列例えば、インターロック用の命令列との比較なしにビジーウェイト用のループを検出することができる。よって、特定の命令列以外の命令列によって構成されるビジーウェイト用のループを容易に検出し、ビジーウェイト時に省電力制御を行うことができる。その結果、より多様なビジーウェイトの実行を検出し、ビジーウェイトの実行により浪費される電力を低減することができる。ここで、ループ伝搬依存は、ループ処理において、第i回目に実行されるループの命令と、第j回目j>iに実行されるループの命令との間に依存関係が生じることをいう。具体的には、例えば、第i回目のループ内のいずれかの命令によって特定の変数レジスタに書き込まれた値が、第j回目のループ内のいずれかの命令によって特定の変数レジスタから読み出される場合にループ伝搬依存が存在する。そして、ループ処理にループ伝搬依存が存在する場合、前記ループ処理はビジーウェイト用ではなく、演算等を実行するためのループ処理であると判断され、省電力制御の対象外となる。ここで、ループ伝搬依存が存在するループの例と、ループ伝搬依存が存在しないループの例を図を参照しながら説明する。まず、ループ伝播依存の存在するループ処理の例を、図11を参照しながら説明する。図11の命令列2600では、2004番地から2010番地の間でループが構成されている。2004番地のADD命令で、R2レジスタに4を加算した値を、R2レジスタに入力する。次に、2008番地のLDR命令によって、R2レジスタの指すアドレスからR0レジスタへ値を読込む。次に、200c番地のCMP命令によってR0レジスタの値と、予め設定値が格納されているR1レジスタの値を比較する。値が一致した場合は、2010番地のBNE命令で、ループを脱出する。値が一致しなかった場合は、2010番地のBNE命令で、2004番地へ分岐する。図11に示す命令列2600が構成するループでは、2004番地のADD命令で書き込まれたレジスタR2レジスタの値が、次の回の同じ命令2004番地のADD命令によって読み出される。したがって、図11に示す命令列2600が構成するループは、第i回目のループ内の命令によって特定のレジスタに書き込まれた値が、第j回目j>iのループ内の命令によって特定のレジスタから読み出されるループに該当する。ゆえに、図11に示す命令列2600が構成するループには、ループ伝播依存が存在する。ループ伝播依存の存在するループは、ビジーウェイト用ではないと判断され、省電力制御の対象外となる。次に、ループ伝播依存が存在しないループの例を、図8を参照しながら説明する。図8の命令列2100では、1004番地から1010番地の間でループが構成されている。1008番地のLDR命令によって、R2レジスタの指すアドレスからR0レジスタへ値を読込む。次に、100c番地のCMP命令によってR0レジスタの値と、あらかじめ値が格納されたR1レジスタの値を比較する。値が一致した場合は、1010番地のBNE命令で、ループを脱出する。すなわち、分岐不成立により、ループ処理が終了する。一方、値が一致しなかった場合は、1010番地のBNE命令で、1004番地へ分岐する。すなわち、分岐が成立する。図8に示す命令列2100は、前段のループで書き込まれたレジスタの値は、後段のループで読み出されないことに留意されたい。ループ内において書き込みが行われるレジスタはR0のみであるが、前段のループにてR0レジスタに書き込まれた値は後段のループでは読み込まれない。したがって、図8に示す命令列2100が構成するループは、第i回目のループ内の命令によってレジスタに書き込まれた特定の値が、第j回目j>iのループ内の命令によって読み出されないループである。ゆえに、図8に示す命令列が構成するループには、ループ伝播依存が存在しない。ループ伝播依存の存在しないループは、ビジーウェイト用であると判断され、省電力制御の対象となる。ループ処理の検出は、例えば、ループに含まれる命令の実行後に行ってもよいし、実行前に行ってもよい。さらに、命令キャッシュに格納された命令列からループ処理を検出してもよい。また、ループ伝搬依存の検出処理は、ループ検出処理の後であれば、ループに含まれる命令の実行前に行ってもよいし、実行後に行ってもよい。本発明の一態様における制御方法は、プロセッサを備えたコンピュータシステムの制御方法であって、前記プロセッサにおいて、1以上の命令からなるループを繰り返し実行するループ処理が実行されることを検出するループ検出ステップと、前記ループ処理において命令間の依存が実行回の異なる2つのループにまたがるループ伝搬依存を検出するループ伝搬依存検出ステップと、前記ループ検出ステップによって検出されたループ処理に、前記ループ伝搬依存解析ステップによってループ伝搬依存が検出されない場合に、前記ループ処理の実行による電力消費を低減させる省電力制御を行う電力制御ステップと、を備える。本発明の一態様におけるコンピュータシステムは、プロセッサを備えたコンピュータシステムであって、前記プロセッサにおいて、1以上の命令からなるループを繰り返し実行するループ処理が実行されることを検出するループ検出部と、前記ループ処理において命令間の依存が実行回の異なる2つのループにまたがるループ伝搬依存を検出するループ伝搬依存解析部と、前記ループ検出部によって検出されたループ処理に、前記ループ伝搬依存解析部によってループ伝搬依存が検出されない場合に、前記ループ処理の実行による電力消費を低減させる省電力制御を行う電力制御部と、を備える。本態様の制御方法及びコンピュータシステムの夫々は、上記の一態様における集積回路と同様の効果を奏する。本発明の一態様における集積回路を、さらに、前記ループ処理の実行が終了したことを検出するループ終了検出部を備え、前記電力制御部は、省電力制御が行われている状態において、前記ループ終了検出部が、前記ループ処理の終了を検出した場合に省電力制御を終了させる、ものとすることができる。本発明の一態様における集積回路を、前記ループ伝搬依存解析部は、前記ループ処理において、第一のループで変数に書き込まれた値が、前記第一のループの後に実行される第二のループで前記変数から読み出されることをもって、ループ伝搬依存があると判定する、ものとすることができる。本発明の一態様における集積回路を、前記ループ検出部は、前記プロセッサにおいて、先行したアドレスに分岐する命令が実行されたことをもって、前記プロセッサがループ実行状態になったことを検出する、ものとすることができる。これにより、プロセッサにおいてプログラムが実行されている時に、分岐命令の実行に基づいて容易にループ処理を検出することができる。本発明の一態様における集積回路を、さらに、ループ範囲を記憶する、ループ範囲記憶部を有し、前記ループ検出部は、先行したアドレスに分岐する分岐命令を検出した場合に、前記ループ範囲記憶部にループの範囲を出力し、さらに、前記ループ伝搬依存解析部に依存関係解析を指示し、前記ループ伝搬依存解析部は、前記ループ範囲記憶部に記憶されたループの範囲の命令列についてループ伝搬依存の検出処理を行う、ものとすることができる。本発明の一態様における集積回路を、前記ループ終了検出部は、前記ループ範囲記憶部に記憶されたループの範囲外に分岐する分岐命令が実行されたこと、又は、前記ループの範囲の末尾に位置する条件分岐命令の実行結果が分岐不成立であることをもって、前記プロセッサにおけるループ処理の実行が終了したことを検出する、ものとすることができる。本発明の一態様における集積回路を、前記ループ範囲記憶部は、ループの先頭アドレスと、ループの末尾アドレスとを含む情報を記憶する、ものとすることができる。本発明の一態様における集積回路を、前記プロセッサは、フェッチされた命令列を保持する命令列保持部を備えており、前記ループ伝搬依存解析部は、前記命令列保持部に保持された前記ループの範囲の命令列についてループ伝搬依存の検出処理を行う、ものとすることができる。本発明の一態様における集積回路を、前記命令列保持部に記憶される命令列は、プリフェッチされた命令を含む、ものとすることができる。本発明の一態様における集積回路を、前記電力制御部は、省電力制御を行う場合に、前記プロセッサへ供給するクロックの周波数を減少させる制御を行い、省電力制御を終了する場合に、前記プロセッサへ供給するクロックの周波数を増加させる制御を行う、ものとすることができる。クロックの周波数を減少させることで、ビジーウェイトによる電力の浪費を低減し得る。本発明の一態様における集積回路を、前記電力制御部は、省電力制御を行う場合に、前記プロセッサへ供給する電力の電圧を低下させる制御を行い、省電力制御を終了する場合に、前記プロセッサへ供給する電力の電圧を増大させる制御を行う、ものとすることができる。電力の電圧を低下させることで、ビジーウェイトによる電力の浪費を低減し得る。本発明の一態様における集積回路を、前記電力制御部は、省電力制御を行う場合に、前記プロセッサへ供給する電力の電圧を低下させるとともに前記プロセッサへ供給するクロックの周波数を減少させる制御を行い、省電力制御を終了する場合に、前記プロセッサへ供給する電力の電圧を増大させるとともに前記プロセッサへ供給するクロックの周波数を増加させる制御を行う、ものとすることができる。クロックの周波数を減少させ、電力の電圧を低下させることで、ビジーウェイトによる電力の浪費を低減し得る。本発明の一態様における集積回路を、前記ループ伝搬依存解析部は、前記ループ処理において、一の命令の書き込み対象の変数と、読み出し対象の変数とが同じ場合に、ループ伝搬依存が存在すると判定する、ものとすることができる。本発明の一態様における集積回路を、前記プロセッサは、複数の実行ユニットを備え、前記電力制御部は、省電力制御を行う場合に、前記複数の実行ユニットの一部のものを停止させる制御を行い、省電力制御を終了する場合に、停止させた前記複数の実行ユニットの一部のものの実行を再開させる制御を行う、ものとすることができる。複数の実行ユニットの一部のものを停止させることで、ビジーウェイトによる電力の浪費を低減し得る。本発明の一態様における集積回路を、前記プロセッサは、複数のスレッドの各々に割り当てられるタイムスライスを管理する、スレッド管理部を有し、前記電力制御部は、省電力制御を行う場合に、ループ伝搬依存が検出されないループ処理を実行しているビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部に指示し、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示する、ものとすることができる。これにより、ビジーウェイト状態のスレッドに割り当てるタイムスライスを減少させることで、ビジーウェイトによる電力の浪費を低減し得る。本発明の一態様における集積回路を、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態の前記スレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を減少させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を増加させる制御を行う、ものとすることができる。これにより、ビジーウェイトによる電力の浪費を低減するとともに、プロセッサの消費電力を低減し得る。本発明の一態様における集積回路を、前記プロセッサは、複数の実行ユニットを備え、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態の前記スレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記複数の実行ユニットのうちの一部を停止させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示するとともに、前記複数の実行ユニットの一部の実行を再開させる制御を行う、ものとすることができる。これにより、ビジーウェイトによる電力の浪費を低減するとともに、プロセッサの消費電力を低減し得る。本発明の一態様における集積回路を、前記プロセッサは、複数の実行ユニットを備え、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を減少させ、前記複数の実行ユニットのうちの一部を停止させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を、前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を増加させ、前記複数の実行ユニットの一部の実行を再開させる制御を行う、ものとすることができる。これにより、ビジーウェイトによる電力の浪費を低減するとともに、プロセッサの消費電力を低減し得る。本発明の一態様における集積回路を、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を減少させ、前記プロセッサに供給する電力の電圧を低下させる制御を行い、省電力制御を終了する場合に、前記スレッドに割り当てるタイムスライスの増加を前記スレッド管理部へ指示するとともに、前記プロセッサに供給するクロックの周波数を増加させ、前記プロセッサに供給する電力の電圧を増大させる制御を行う、ものとすることができる。これにより、ビジーウェイトによる電力の浪費を低減するとともに、プロセッサの消費電力を低減し得る。これにより、ビジーウェイトによる電力の浪費を低減するとともに、プロセッサの消費電力を低減し得る。本発明の一態様における集積回路を、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に応じて、前記プロセッサに供給するクロックの周波数を減少させる、ものとすることができる。本発明の一態様における集積回路を、前記電力制御部は、省電力制御を行う場合に、ビジーウェイト状態のスレッドに割り当てるタイムスライスの減少分に応じて、前記複数の実行ユニットの稼働本数を減少させる、ものとすることができる。本発明の他の態様における集積回路は、プロセッサを備えた集積回路であって、プロセッサ内のプログラムカウンタにおいてカウンタ値が一定のパターンで繰り返しているかを監視する第1監視部と、前記プロセッサが接続されたバスにおいて前記プロセッサによる読み出しに係るアドレスに変化がないかを監視する第2監視部と、前記第1監視部によって前記カウンタ値が一定のパターンで繰り返されていることが検出され、前記第2監視部によって前記プロセッサによる読み出しに係るアドレスに変化がないことが検出された場合に、前記プロセッサによる電力消費を低減させる省電力制御を行う電力制御部と、を備える。本発明の他の態様における制御方法は、プロセッサを備えたコンピュータシステムの制御方法であって、プロセッサ内のプログラムカウンタにおいてカウンタ値が一定のパターンで繰り返しているかを監視する第1監視ステップと、前記プロセッサが接続されたバスにおいて前記プロセッサによる読み出しに係るアドレスに変化がないかを監視する第2監視ステップと、前記第1監視ステップによって前記カウンタ値が一定のパターンで繰り返されていることが検出され、前記第2監視ステップによって前記プロセッサによる読み出しに係るアドレスに変化がないことが検出された場合に、前記プロセッサによる電力消費を低減させる省電力制御を行う電力制御ステップと、を備える。本発明の他の態様におけるコンピュータシステムは、プロセッサを備えたコンピュータシステムであって、プロセッサ内のプログラムカウンタにおいてカウンタ値が一定のパターンで繰り返しているかを監視する第1監視部と、前記プロセッサが接続されたバスにおいて前記プロセッサによる読み出しに係るアドレスに変化がないかを監視する第2監視部と、前記第1監視部によって前記カウンタ値が一定のパターンで繰り返されていることが検出され、前記第2監視部によって前記プロセッサによる読み出しに係るアドレスに変化がないことが検出された場合に、前記プロセッサによる電力消費を低減させる省電力制御を行う電力制御部と、を備える。他の態様の集積回路、制御方法、コンピュータシステムの夫々によれば、多様なビジーウェイトの実行により浪費される電力を低減することができる。本発明の他の態様における集積回路を、前記電力制御部は、省電力制御が行われている場合において、前記第1監視部によって前記カウンタ値が一定のパターンで繰り返さなくなったことが検出されると、前記省電力制御を終了させる、ものとすることができる。"