(57)【要約】【課題】  性能バランスを保持しつつ、命令バッファのエントリの電力消費を動的に制御するということができない。【解決手段】  それぞれ複数のエントリを有する複数の命令バッファと、複数の命令バッファのそれぞれに対し、命令バッファ毎の全てのエントリが使用状態であるbuf-full時間を計時する時間計時部と、buf-full時間に基づいて削減後エントリ数を算出する時間解析部と、削減後エントリ数に基づいて複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する制御部とを有する。【選択図】      図１
2010073124.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ複数のエントリを有する複数の命令バッファと、
該複数の命令バッファのそれぞれに対し、当該命令バッファの全ての前記エントリが使用状態であるbuf-full時間を計時する時間計時部と、
前記buf-full時間に基づいて削減後エントリ数を算出する時間解析部と、
前記削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する制御部と、
を有することを特徴とする命令制御回路。
【請求項２】
前記時間解析部は、前記複数の命令バッファのそれぞれに対応する前記削減後エントリ数と前記buf-full時間とを乗じて前記命令バッファ毎のフル度値を算出し、
前記フル度値のうちの最大のフル度値に対する各前記フル度値の比を算出し、
各前記命令バッファに対応する最大エントリ数と各前記命令バッファに対応する各前記比とを乗じて各前記命令バッファに対応する新たな前記削減後エントリ数を算出する
ことを特徴とする請求項１記載の命令制御回路。
【請求項３】
前記buf-full時間に基づいて算出する前記削減後エントリ数に対する余裕度を保持する余裕度保持部を有し、
前記時間解析部は、前記余裕度に基づいて前記削減後エントリ数を調整することを特徴とする請求項１または２記載の命令制御回路。
【請求項４】
前記余裕度保持部の保持する前記余裕度は書き換え可能である
ことを特徴とする請求項３記載の命令制御回路。
【請求項５】
前記削減後エントリ数を算出する時間間隔を保持するBuf数更新間隔保持部を有し、
前記時間解析部は、前記時間間隔に基づいて前記削減後エントリ数を算出する
ことを特徴とする請求項１乃至４のいずれかに記載の命令制御回路。
【請求項６】
前記Buf数更新間隔保持部の保持する前記時間間隔は書き換え可能である
ことを特徴とする請求項５記載の命令制御回路。
【請求項７】
前記削減後エントリ数に基づいて、命令取得を延期する命令ディスパッチ制御回路
を有することを特徴とする請求項１乃至６のいずれかに記載の命令制御回路。
【請求項８】
それぞれ複数のエントリを有する複数の命令バッファそれぞれに対し、当該命令バッファの全ての前記エントリが使用状態であるbuf-full時間を計時し、
前記buf-full時間に基づいて削減後エントリ数を算出し、
前記削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する
ことを特徴とする命令制御方法。
【請求項９】
前記複数の命令バッファのそれぞれに対応する前記削減後エントリ数と前記buf-full時間とを乗じて前記命令バッファ毎のフル度値を算出し、
前記フル度値のうちの最大のフル度値に対する各前記フル度値の比を算出し、
各前記命令バッファに対応する最大エントリ数と各前記命令バッファに対応する各前記比とを乗じて各前記命令バッファに対応する新たな前記削減後エントリ数を算出する
ことを特徴とする請求項８記載の命令制御方法。
【請求項１０】
前記buf-full時間に基づいて算出する前記削減後エントリ数に対する余裕度に基づいて前記削減後エントリ数を調整する
ことを特徴とする請求項８または９記載の命令制御方法。
【請求項１１】
前記削減後エントリ数を算出する時間間隔に基づいて前記削減後エントリ数を算出する
ことを特徴とする請求項８乃至１０のいずれかに記載の命令制御方法。
【請求項１２】
前記削減後エントリ数に基づいて、命令取得を延期する
ことを特徴とする請求項８乃至１１のいずれかに記載の命令制御方法。
【請求項１３】
請求項１乃至７のいずれかに記載の命令制御回路を有する情報処理装置。
【請求項１４】
請求項８乃至１２のいずれかに記載の命令制御方法により命令のディスパッチ制御を行う情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は命令制御回路、命令制御方法、および情報処理装置に関し、特に低消費電力を実現する命令制御回路、命令制御方法、および情報処理装置に関する。
【背景技術】
【０００２】
消費電力制御の一例が特許文献１に記載されている。特許文献１のデータ処理装置は、データを格納するバッファとバッファにデータを供給するデータ供給部とデータ供給部の動作モードを制御するデータ供給制御部とを有し、データ供給制御部がバッファのデータ蓄積量に基づいてデータ供給部を低電力モードあるいは通常モードに移行させることで、データ処理装置自身の消費電力を制御する。
【０００３】
また、消費電力制御の他の一例が、特許文献２に記載されている。特許文献２のメモリ管理ユニットは、メモリ管理ユニット制御回路と複数のエントリよりなるアドレス変換バッファとエントリ選択部と電力制御部とを有し、電力制御部がエントリ選択部の出力情報とメモリ管理ユニットの出力情報とに基づいてアドレス変換バッファのエントリの電力を制御する。
【０００４】
さらに、消費電力制御の他の一例が、特許文献３に記載されている。特許文献３の並列演算処理プロセッサは、命令デコード部および複数の演算器を有する演算処理部と電力制御部とを有し、電力制御部が命令デコード部の出力するユニット選択信号および電力モード設定信号に基づいて各演算器に対するクロックおよび電源の供給を制御する。
【０００５】
【特許文献１】特開２００７−０９５０４０号公報
【特許文献２】ＷＯ２００４／１０４８４１号公報
【特許文献３】特開２００３−２６３３１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１〜３に記載されたような技術では、それぞれが複数のエントリを有する複数の命令バッファを構成した場合、動作可能な、即ち電力を消費する、命令バッファのエントリの数をアプリケーションの動的な特性に応じてきめ細かく制御することができないという問題があった。
【０００７】
以下に、例として、図４を参照してこの問題についてさらに説明する。図４は、命令キャッシュ１０、命令実行部６０および命令制御回路９００を有する一般的なプロセッサを示す。このようなプロセッサの構成と動作に関しては、以下の非特許文献１を参照することができる。
【０００８】
【非特許文献１】Ｄａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎ、Ｊｏｈｎ  Ｌ．Ｈｅｎｎｅｓｓｙ、成田光影訳、「コンピュータの構成と設計」第３版［下］６．９高度なパイプライン処理：将来のさらなる向上、２００６。
【０００９】
図４を参照すると、命令制御回路９００は、命令ディスパッチ制御部９２０と各々「32個」のエントリを有するバッファーＡ（以下、「Abuf」）９４１、バッファーＢ（以下、「Bbuf」）９４２およびバッファーＣ（以下、「Cbuf」）９４３とを有している。
【００１０】
命令ディスパッチ制御部９２０は、命令ディスパッチ制御回路９２４と、Abuf９４１、Bbuf９４２およびCbuf９４３において命令が登録されているエントリ個数を各々カウントするAbuf登録個数カウンタ２１、Bbuf登録個数カウンタ２２およびCbuf登録個数カウンタ２３と、命令キャッシュ１０からフェッチした命令を格納する命令レジスタdU９２５および命令レジスタdL９２６とを有する。
【００１１】
Abuf登録個数カウンタ９２１、Bbuf登録個数カウンタ９２２およびCbuf登録個数カウンタ９２３は、それぞれ命令登録指示信号である命令DSP（Dispatch）-Abuf、命令DSP-Bbufおよび命令DSP-Cbufを入力して「1」カウントアップし、それぞれエントリ解放信号であるErel-Abuf、Erel-BbufおよびErel-Cbufを入力して「1」カウントダウンする。更に、Abuf登録個数カウンタ９２１、Bbuf登録個数カウンタ９２２およびCbuf登録個数カウンタ９２３は、各々の登録個数カウンタが32となった場合にAbuf-full/Bbuf-full/Cbuf-fullというBusy信号を立てる。
【００１２】
命令ディスパッチ制御回路９２４は、Busy信号が立っている場合は、命令レジスタdU９２５および命令レジスタdL９２６をホールドし命令の取得を延期する。
【００１３】
命令制御回路９００においては、以上のようにして命令バッファの登録制御がおこなわれる。
【００１４】
図５は、上記の構成において、Abuf登録個数カウンタ９２１が「32」になったために命令ディスパッチ制御回路９２４が命令レジスタdU９２５および命令レジスタdL９２６をホールドして命令DSP-Abufが延期し、パイプラインの動きを止めてしまった状況を示している（TMG2〜TMG5）。この場合、Abuf９４１というリソースが枯渇して命令供給レートが悪化することは仕方が無いとしても、後続のBbuf入命令およびCbuf入命令まで止まってしまい、Bbuf９４２の未使用エントリ「17」およびCbuf９４３の未使用エントリ「25」は電力を消費した状態のままである。これは、電力あたりの性能という面で問題である
図５の例では、TMG6において命令DSP-Abufが発行され、続くTMG7、TMG8においてBbuf入命令とC-buf入命令が連続してディスパッチされる。仮に命令実行部６０がOut-of-order実行可能に構成してあれば、Bbuf/Cbuf入命令のディスパッチはもっと前のタイミングで実行されることになるが、Out-of-Order実行制御を可能にすることはアーキテクチャを複雑にし、消費電力の上昇を招くことになる。従って、電力あたりの性能向上という課題に対しての解決策としては有効ではない。
【００１５】
他方、使っていないBbuf９４２およびCbuf９４３に対して電力が供給されていることは、省電力という観点からは問題と言える。図５の例で言えば、Bbuf登録個数カウンタ２２およびCbuf登録個数カウンタ２３はそれぞれ「15」、「7」のままであるので、Bbuf９４２およびCbuf９４３のエントリの最大をそれぞれ「16」、「8」にしても性能には変化が無い。従って、Bbuf９４２およびCbuf９４３の使用しないそれぞれ「16」、「24」のエントリの電源やクロックを落とすことがプロセッサ全体の動きを踏まえた効率的な省電力制御のあり方である。ここで、Abuf９４１、Bbuf９４２およびCbuf９４３の使用度はアプリケーションに依存するものではあるが、コンパイラ時の静的な解析に基づいてバッファ容量を確定させる等の方法は効果を上げにくい。
【００１６】
即ち、特許文献１乃至３のいずれに記載された技術を用いても、性能バランスを保持しつつ、命令バッファのエントリの電力消費を動的に制御することができないという問題があった。
【００１７】
本発明の目的は、上述した課題を解決する命令制御回路、命令制御方法、および情報処理装置を提供することにある。
【課題を解決するための手段】
【００１８】
本発明の命令制御回路は、それぞれ複数のエントリを有する複数の命令バッファと、
該複数の命令バッファのぞれぞれに対し、に当該命令バッファ毎の全ての前記エントリが使用状態であるbuf-full時間を計時する時間計時部と、
前記buf-full時間に基づいて削減後エントリ数を算出する時間解析部と、
前記削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する制御部とを有する。
【００１９】
本発明の命令制御方法は、それぞれ複数のエントリを有する複数の命令バッファのそれぞれに対し、当該命令バッファ毎の全ての前記エントリが使用状態であるbuf-full時間を計時し、
前記buf-full時間に基づいて削減後エントリ数を算出し、
前記削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する。
【発明の効果】
【００２０】
本発明によれば、命令バッファのエントリのうち性能バランス保持に不要分のエントリの消費電力を、動的にきめ細かく削減することが可能になる。
【発明を実施するための最良の形態】
【００２１】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２２】
図１を参照すると、本発明の第１の実施の形態は、命令キャッシュ１０、命令実行部６０および命令制御回路２００から構成されている。
【００２３】
命令キャッシュ１０は、例えばキャッシュメモリであり、命令実行部６０で実行されるアプリケーションプログラムの命令１００を保持する。
【００２４】
命令実行部６０は、例えば複数命令発行方式のパイプラインであり、命令制御回路２００から取得した命令の各ステージ（命令デコード／実行、レジスタファイル読み出し／書き戻し、メモリのアクセス、など）を実行する。
【００２５】
命令制御回路２００は、以下に詳述する構成と動作により、命令キャッシュ１０から命令を取得し、取得した命令をディスパッチして命令実行部６０に渡す。命令制御回路２００は、命令ディスパッチ制御部２０、Abuf４１、Bbuf４２、Cbuf４３およびバッファフル時間解析制御部５０を含む。
【００２６】
命令ディスパッチ制御部２０は、Abuf登録個数カウンタ２１、Bbuf登録個数カウンタ２２、Cbuf登録個数カウンタ２３、命令ディスパッチ制御回路２４、命令レジスタdu２５、命令レジスタdL２６およびBuf数更新間隔REG２７を含む。なお、「命令ディスパッチ制御部２０」は一般的に「制御部」と呼ぶことができる。
【００２７】
Abuf登録個数カウンタ２１、Bbuf登録個数カウンタ２２およびCbuf登録個数カウンタ２３は、例えばカウンタ回路であり、それぞれAbuf４１、Bbuf４２およびCbuf４３において命令が登録されているエントリの個数（以下、登録エントリ数と呼ぶ）を保持する。Abuf登録個数カウンタ２１、Bbuf登録個数カウンタ２２およびCbuf登録個数カウンタ２３は、それぞれ命令DSP-Abuf信号、命令DSP-Bbuf信号および命令DSP-Cbuf信号を入力するとそれぞれの保持している登録エントリ数を「1」加算し、それぞれAbufエントリ解放信号、Bbufエントリ解放信号およびCbufエントリ解放信号を入力するとそれぞれの保持している登録エントリ数を「1」減算する。
【００２８】
命令ディスパッチ制御回路２４は、例えば論理回路であり、命令ディスパッチ制御部２０全体の動作を制御して、Abuf４１、Bbuf４２およびCbuf４３がオーバーフローしないようにそれぞれの登録エントリ数を監視しながら、Abuf４１、Bbuf４２およびCbuf４３への命令の登録制御を実行する。同時に、命令ディスパッチ制御回路２４は、後述する削減後エントリ数に基づいて、Abuf４１、Bbuf４２およびCbuf４３の各エントリの電力消費の停止あるいは低減を指示する。
【００２９】
具体的には、命令ディスパッチ制御回路２４は、命令フェッチdl信号を入力すると、命令１２６の分類に対応するAbuf４１、Bbuf４２またはCbuf４３のいずれか一つを選択し、選択したAbuf４１、Bbuf４２およびCbuf４３にそれぞれ対応する命令DSP-Abuf信号と命令DSP-Abuf信号、命令DSP-Bbuf信号と命令DSP-Bbuf信号および命令DSP-Cbuf信号と命令DSP-Cbuf信号とを出力する。尚、これらの各信号は、例えばパルス信号である。
【００３０】
上記の動作と並行して、命令ディスパッチ制御回路２４は、命令フェッチdl信号を入力すると、Abuf登録個数カウンタ２１の登録エントリ数とA-Buf削減後エントリ数REG５５の削減後エントリ数とを比較し、これらが等しくかつAbuf-full信号がオフである場合にAbuf４１がフル状態になったことを検出し、Abuf-full信号をオン状態にする。尚、Abuf-full信号は、例えばレベル信号であり、オン状態でAbuf４１に対応する登録エントリ数と削減後エントリ数が等しいことを、オフ状態でAbuf４１に対応する登録エントリ数が削減後エントリ数未満であることを示す。同様に、命令ディスパッチ制御回路２４は、Bbuf４２およびCbuf４３に対応する登録エントリ数と削減後エントリ数に基づいて、それぞれBbuf-full信号およびCbuf-full信号を制御する。
【００３１】
加えて、命令ディスパッチ制御回路２４は、Abuf-full信号、Bbuf-full信号またはCbuf-full信号のうちのいずれか１以上をオン状態にしている場合、同時にDLHLD信号をオン状態にする。尚、DLHLD信号は、例えばレベル信号である。
【００３２】
さらに、命令ディスパッチ制御回路２４は、命令フェッチdl信号を入力すると、A-Buf削減後エントリ数REG５５の削減後エントリ数（現削減後エントリ数と呼ぶ）と、前回の命令フェッチdl信号の入力時に読み出して記憶していた削減後エントリ数（先削減後エントリ数と呼ぶ）とを比較する。そして、命令ディスパッチ制御回路２４は、現削減後エントリ数と先削減後エントリ数が等しい場合には対応する動作として何もせず、現削減後エントリ数が先削減後エントリ数を超えている場合にはAbuf４１に対して現削減後エントリ数を示して電力消費の停止あるいは低減するエントリを指示する。また、命令ディスパッチ制御回路２４は、現削減後エントリ数が先削減後エントリ数未満の場合にはAbuf登録個数カウンタ２１の登録エントリ数が現削減後エントリ数以下になった時点で、Abuf４１に対して現削減後エントリ数を示して電力消費の停止あるいは低減するエントリを指示する。同様の動作により、命令ディスパッチ制御回路２４は、Bbuf４２およびCbuf４３に対して現削減後エントリ数を示して電力消費の停止あるいは低減するエントリを指示する。
【００３３】
命令レジスタdu２５は、例えばレジスタ回路であり、命令フェッチのタイミングにおいて、DLHLD信号がオフ状態の場合には命令キャッシュ１０から命令１００を取得して命令１２５として保持し、DLHLD信号がオン状態の場合には命令キャッシュ１０から命令１００を取得しない。
【００３４】
命令レジスタdL２６は、例えばレジスタ回路であり、命令フェッチのタイミングにおいて、DLHLD信号がオフ状態の場合には命令レジスタdu２５から命令１２５を取得して命令１２６として保持し、命令フェッチdl信号を出力し、DLHLD信号がオン状態の場合には命令レジスタdu２５から命令１２５を取得しない。尚、命令フェッチdl信号は、例えばパルス信号である。
【００３５】
Buf数更新間隔REG２７は、例えばプログラムによるアクセスが可能なレジスタ回路であり、後述する削減後エントリ数を算出する処理を実行する時間間隔を保持する。この時間間隔は、例えば、命令ディスパッチ制御部２０が実装されたコンピュータ上で動作するオペレーティングシステムにおけるプロセススイッチング処理の一部として実現される更新間隔設定手段（図示しない）から設定される。そして、設定される時間間隔の単位は、例えば命令実行部６０の動作クロック（図示しない）のクロック数である。あるいは、設定される時間間隔の単位は、専用の発信器（図示しない）または他の回路の動作クロック（図示しない）のクロック数であっても良い。なお、「Buf数更新間隔REG２７」は一般的に「Buf数更新間隔保持部」と呼ぶことができる。
【００３６】
Abuf４１、Bbuf４２およびCbuf４３は、例えばＦＩＦＯ（Ｆｉｒｓｔ Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）形式のバッファ回路であり、本実施の形態ではそれぞれ例えば32個のエントリを有し（最大エントリ数＝32）、例えば演算命令、メモリアクセス命令あるいは分岐命令というような命令の分類に対応して、格納するAbuf４１、Bbuf４２およびCbuf４３を割り当てる。尚、エントリ数は他の実施の形態において任意の個数を有するように構成しても良いし、また格納の割り当ては他の任意の命令の分類に対応しても良い。
【００３７】
Abuf４１、Bbuf４２およびCbuf４３は、それぞれ命令DSP-Abuf信号、命令DSP-Bbuf信号および命令DSP-Cbuf信号を入力すると、命令レジスタdl２６から命令１２６を取得しそれぞれのエントリに登録する。また、Abuf４１、Bbuf４２およびCbuf４３は、エントリに登録している命令１２６を命令実行部６０に出力した場合、それぞれAbufエントリ解放信号、Bbufエントリ解放信号およびCbufエントリ解放信号を出力する。尚、Abufエントリ解放信号、Bbufエントリ解放信号およびCbufエントリ解放信号は、例えばパルス信号である。
【００３８】
Abuf４１、Bbuf４２およびCbuf４３は、命令ディスパッチ制御回路２４からの電力消費の停止あるいは低減の指示に対応して、各エントリのクロックを停止、電源を停止あるいは低電力モードへ移行させる。尚、このような電力消費の停止あるいは低減の具体的な実現方法は、特許文献１、特許文献２および特許文献３などの記載を参照しても良い。なお、「Abuf４１」や、「Bbuf４２」、「Cbuf４３」は一般的に「命令バッファ」と呼ぶことができる。
【００３９】
バッファフル時間解析制御部５０は、Buf-full時間解析回路５１、Abuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３、Cbuf-full時間カウンタ５４、A-Buf削減後エントリ数REG５５、B-Buf削減後エントリ数REG５６およびC-Buf削減後エントリ数REG５７を含む。なお、「Abuf-full時間カウンタ５２」、「Bbuf-full時間カウンタ５３」および「Cbuf-full時間カウンタ５４」は一般的に「時間計時部」と呼ぶことができる。
【００４０】
Buf-full時間解析回路５１は、例えば論理回路であり、バッファフル時間解析制御部５０全体の動作を制御し、Abuf４１、Bbuf４２およびCbuf４３がバッファフル状態である時間に基づいて、アプリケーションプログラムの実行状態に合わせたAbuf４１、Bbuf４２およびCbuf４３の削減後エントリ数を算出する。なお、「Buf-full時間解析回路５１」は一般的に「時間解析部」と呼ぶことができる。
【００４１】
具体的には、Buf-full時間解析回路５１は、Buf数更新間隔REG２７から取得した時間間隔を計時し、この時間間隔ごとに以下の処理を実行する。
【００４２】
まず、Buf-full時間解析回路５１は、A-Buf削減後エントリ数REG５５、B-Buf削減後エントリ数REG５６およびC-Buf削減後エントリ数REG５７の保持する各削減後エントリ数にそれぞれAbuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３およびCbuf-full時間カウンタ５４の保持する各時間を乗じて、Abuf４１、Bbuf４２およびCbuf４３のフル度値を算出する。続けてBuf-full時間解析回路５１は、これらのフル度値の内最大のフル度値に対する各フル度値の比を算出し、これらの各フル度値の比に対応するAbuf４１、Bbuf４２およびCbuf４３の最大エントリ数を乗じて新たな削減後エントリ数を算出する。
【００４３】
次にBuf-full時間解析回路５１は、算出した削減後エントリ数をそれぞれA-Buf削減後エントリ数REG５５、B-Buf削減後エントリ数REG５６およびC-Buf削減後エントリ数REG５７に設定する。
【００４４】
また同時に、Buf-full時間解析回路５１は、カウントリセット信号を出力する。
【００４５】
Abuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３およびCbuf-full時間カウンタ５４は、例えばカウンタ回路であり、Abuf４１、Bbuf４２およびCbuf４３がフル状態にある時間を保持する。
【００４６】
具体的には、Abuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３およびCbuf-full時間カウンタ５４は、それぞれAbuf-full信号、Bbuf-full信号およびCbuf-full信号がオン状態の間カウンタをカウントアップする。尚、これらのカウンタ回路は、例えば命令ディスパッチ制御部２０の動作クロック（図示しない）あるいは命令実行部６０の動作クロック（図示しない）でカウントを実行する。また、Abuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３およびCbuf-full時間カウンタ５４は、カウントリセット信号を入力してカウンタを「0」クリアする。
【００４７】
A-Buf削減後エントリ数REG５５、B-Buf削減後エントリ数REG５６およびC-Buf削減後エントリ数REG５７は、例えばレジスタ回路であり、それぞれBuf-full時間解析回路５１が設定したAbuf４１、Bbuf４２およびCbuf４３の削減後エントリ数を保持する。尚、A-Buf削減後エントリ数REG５５、B-Buf削減後エントリ数REG５６およびC-Buf削減後エントリ数REG５７の初期設定値は、それぞれAbuf４１、Bbuf４２およびCbuf４３の最大エントリ数（本実施の形態では、「32」）である。
【００４８】
次に、Buf-full時間解析回路５１の削減後エントリ数算出の動作を、具体的な例を上げて説明する。
【００４９】
初期設定後、最初にBuf数更新間隔REG２７から取得した時間間隔（例えば、1,000,000クロック）を計時した期間のAbuf４１、Bbuf４２およびCbuf４３がフル状態であった時間がそれぞれ120,000クロック、60,000クロック、90,000クロックであったとする。
【００５０】
まず、Buf-full時間解析回路５１は、フル度値を以下のとおり算出する。
【００５１】
（Abuf４１のフル度値）＝（A-Buf削減後エントリ数REG５５の保持する削減後エントリ数）×（Abuf-full時間カウンタ５２の保持する時間）＝32×120,000＝3,840,000。
【００５２】
（Bbuf４２のフル度値）＝（B-Buf削減後エントリ数REG５６の保持する削減後エン数）×（Bbuf-full時間カウンタ５３の保持する時間）＝32×60,000＝1,920,000。
【００５３】
（Abuf４１のフル度値）＝（C-Buf削減後エントリ数REG５７の保持する削減後エントリ数）×（Cbuf-full時間カウンタ５４の保持する時間）＝32×90,000＝2,880,000。
【００５４】
続けてBuf-full時間解析回路５１は、これらのフル度値の内最大のフル度値（本例では、3,840,000）に対する各フル度値の比を算出する。
【００５５】
（Abuf４１のフル度値比）＝3,840,000÷3,840,000＝１。
【００５６】
（Bbuf４２のフル度値比）＝1,920,000÷3,840,000＝0.5。
【００５７】
（Cbuf４３のフル度値比）＝2,880,000÷3,840,000＝0.75。
【００５８】
続けて、Buf-full時間解析回路５１は、フル度値の比に対応するAbuf４１、Bbuf４２およびCbuf４３の最大エントリ数を乗じて（小数点以下は切り上げ）、新たな削減後エントリ数を算出する。
【００５９】
（Abuf４１の新たな削減後エントリ数）＝1×32＝32。
【００６０】
（Bbuf４２の新たな削減後エントリ数）＝0.5×32＝16。
【００６１】
（Cbuf４３の新たな削減後エントリ数）＝0.75×32＝24。
【００６２】
こうして算出した削減後エントリ数を設定後、再びBuf数更新間隔REG２７から取得した時間間隔を計時した期間のAbuf４１、Bbuf４２およびCbuf４３がフル状態であった時間がそれぞれ120,000クロック、130,000クロック、110,000クロックであったとする。
【００６３】
今回は、Buf-full時間解析回路５１は、フル度値を以下のとおり算出する。
【００６４】
（Abuf４１のフル度値）＝32×120,000＝3,840,000。
【００６５】
（Bbuf４２のフル度値）＝16×130,000＝2,080,000。
【００６６】
（Abuf４１のフル度値）＝24×110,000＝2,640,000。
【００６７】
続けてBuf-full時間解析回路５１は、これらのフル度値の内最大のフル度値（本例では、3,840,000）に対する各フル度値の比を算出する。
【００６８】
（Abuf４１のフル度値比）＝3,840,000÷3,840,000＝１。
【００６９】
（Bbuf４２のフル度値比）＝2,080,000÷3,840,000＝0.54。
【００７０】
（Cbuf４３のフル度値比）＝2,640,000÷3,840,000＝0.69。
【００７１】
続けて、Buf-full時間解析回路５１は、フル度値の比に対応するAbuf４１、Bbuf４２およびCbuf４３の最大エントリ数を乗じて、新たな削減後エントリ数を算出する。
【００７２】
（Abuf４１の新たな削減後エントリ数）＝1×32＝32。
【００７３】
（Bbuf４２の新たな削減後エントリ数）＝0.54×32＝18。
【００７４】
（Cbuf４３の新たな削減後エントリ数）＝0.69×32＝23。
【００７５】
以上が、具体的な例による、Buf-full時間解析回路５１の削減後エントリ数算出の動作の説明である。
【００７６】
図２は、本実施の形態の基本的な構成を示す。図２によれば、命令制御回路２０１は、Abuf４１、Bbuf４２、Cbuf４３、Abuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３およびCbuf-full時間カウンタ５４、buf-full時間解析回路５１および命令ディスパッチ制御部２０を有する。
【００７７】
Abuf４１、Bbuf４２およびCbuf４３は、それぞれ32個のエントリを有する。
【００７８】
Abuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３およびCbuf-full時間カウンタ５４は、Abuf４１、Bbuf４２およびCbuf４３毎にAbuf４１、Bbuf４２およびCbuf４３毎の32個の全てのエントリが使用状態であるbuf-full時間を計時する。
【００７９】
buf-full時間解析回路５１は、Abuf-full時間カウンタ５２、Bbuf-full時間カウンタ５３およびCbuf-full時間カウンタ５４が計時するbuf-full時間に基づいて削減後エントリ数を算出する。
【００８０】
命令ディスパッチ制御部２０は、buf-full時間解析回路５１が算出した削減後エントリ数に基づいてAbuf４１、Bbuf４２およびCbuf４３の各エントリの電力消費の停止あるいは低減を制御する。
【００８１】
上述した本実施の形態における第１の効果は、命令バッファのエントリのうち性能バランス保持に不要分のエントリの電力を動的にきめ細かく削減できる点である。その理由は、命令バッファフルによる時間のバランスに基づいて使用エントリ数を決定するようにしたからである。
【００８２】
上述した本実施の形態における第２の効果は、アプリケーションの動作が動的に著しく変化する場合であっても、第１の効果を得ることができる点である。その理由は、使用エントリ数を決定する間隔を変更可能にしたからである。
【００８３】
次に本発明の第２の実施の形態について図面を参照して詳細に説明する。図３を参照すると、第２の実施の形態の構成は、図１に示す第１の実施の形態の構成と比較して、命令ディスパッチ制御部２０に余裕度REG３２が追加されていることが異なる。また、第２の実施の形態は、第１の実施の形態と比較して、Buf-full時間解析回路５１の動作が異なる。
【００８４】
余裕度REG３２は、例えばプログラムによるアクセスが可能なレジスタ回路であり、Buf-full時間解析回路５１が削減後エントリ数を調整する場合に参照するための余裕度を保持する。設定される余裕度は、例えばbuf-full時間に基づいて算出された削減後エントリ数の増減値である。あるいは、余裕度は、削減後エントリ数を算出する基であるbuf-full時間の増減値であっても良い。なお、「余裕度REG３２」は一般的に「余裕度保持部」と呼ぶことができる。
【００８５】
Buf-full時間解析回路５１は、buf-full時間に基づいて算出した新たな削減後エントリ数を、余裕度REG３２から取得した余裕度に基づいて増加あるいは減少し、新たな削減後エントリ数を調整する。例えば、Buf-full時間解析回路５１は、buf-full時間に基づいて算出した新たな削減後エントリ数に、最大エントリ数を超えない範囲で余裕度の値を加算する。
【００８６】
次にBuf-full時間解析回路５１は、調整した削減後エントリ数をそれぞれA-Buf削減後エントリ数REG５５、B-Buf削減後エントリ数REG５６およびC-Buf削減後エントリ数REG５７に設定する。
【００８７】
例えば余裕度REG３２に「1」が設定されている場合の、Buf-full時間解析回路５１が削減後エントリ数を調整する動作ついて説明する。
【００８８】
まず、Buf-full時間解析回路５１は、第１の実施の形態で説明したように、新たな削減後エントリ数を以下の通り算出する。
【００８９】
（Abuf４１の新たな削減後エントリ数）＝1×32＝32。
【００９０】
（Bbuf４２の新たな削減後エントリ数）＝0.5×32＝16。
【００９１】
（Cbuf４３の新たな削減後エントリ数）＝0.75×32＝24。
【００９２】
次に、Buf-full時間解析回路５１は、余裕度「1」に基づいて新たな削減後エントリ数を以下の通り調整する。
【００９３】
（Abuf４１の新たな削減後エントリ数の調整結果）＝32。
【００９４】
（Bbuf４２の新たな削減後エントリ数の調整結果）＝16＋1＝17。
【００９５】
（Cbuf４３の新たな削減後エントリ数の調整結果）＝24＋1＝25。
【００９６】
余裕度は、例えば「-1」のような負の値であってもよく、この場合は削減後エントリ数が少なめに調整される。また、余裕度REG３２は、命令バッファ毎に対応して有するように構成しても良い。
【００９７】
上述した本実施の形態における効果は、第１の実施の形態における効果に比べて、性能または省電力をより重視することができる点である。その理由は、余裕度に基づいて新たな削減後エントリ数を調整するようにしたからである。
【００９８】
以上の各実施の形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個のモジュールとして実現されたり、ひとつの構成要素が複数のモジュールで実現されたり、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
【００９９】
さらに、以上説明した各実施の形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作の実行タイミングと他の動作の実行タイミングとの一部ないし全部が重複していたりしていてもよい。
【０１００】
さらに、以上説明した各実施の形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作のすべての関係を限定するものではない。このため、各実施の形態を実施するときには、その複数の動作の関係は内容的に支障しない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施の形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
【０１０１】
なお、以上説明した各実施の形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。
【０１０２】
また、各構成要素の物理的な構成は、以上の実施の形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。
【産業上の利用可能性】
【０１０３】
本発明は、性能低下のない省電力の実現を必要とする、例えばスーパーコンピュータなどに適用できる。
【図面の簡単な説明】
【０１０４】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の基本的な構成を示すブロック図である。
【図３】本発明の第２の実施の形態の構成を示すブロック図である。
【図４】関連する命令制御回路の構成を示すブロック図である。
【図５】関連する命令制御回路の動作を示すタイムチャートである。
【符号の説明】
【０１０５】
１０    命令キャッシュ
２０    命令ディスパッチ制御部
２１    Abuf登録個数カウンタ
２２    Bbuf登録個数カウンタ
２３    Cbuf登録個数カウンタ
２４    命令ディスパッチ制御回路
４１    Abuf
４２    Bbuf
４３    Cbuf
５０    バッファフル時間解析制御部
５１    時間解析回路
５２    Abuf-full時間カウンタ
５３    Bbuf-full時間カウンタ
５４    Cbuf-full時間カウンタ
６０    命令実行部
２００    命令制御回路
２０１    命令制御回路
９２０    命令ディスパッチ制御部
９２１    Abuf登録個数カウンタ
９２２    Bbuf登録個数カウンタ
９２３    Cbuf登録個数カウンタ
９２４    命令ディスパッチ制御回路
９４１    Abuf
９４２    Bbuf
９４３    Cbuf
【図１】
2010073124.tif 000003
【図２】
2010073124.tif 000004
【図３】
2010073124.tif 000005
【図４】
2010073124.tif 000006
【図５】
2010073124.tif 000007