(57)【特許請求の範囲】
【請求項１】
通常状態と低消費電力状態との２種類の動作モードで動作する演算器を複数有し、当該複数の演算器を含む演算器群と当該演算器により実行される命令を格納するリザベーションステーションとを対応付けて有する演算処理装置であって、
命令を実行するために必要なデータが揃っている場合にその命令が実行可能であることを示す第１の情報を生成し、揃っていない場合にその命令が実行可能でないことを示す第２の情報を生成し、生成した第１または第２の情報を、前記リザベーションステーションに格納された命令毎に設定する情報設定部と、
前記第１の情報が設定された命令の数を検出する命令検出処理部と、
前記命令検出処理部により検出された命令の数が０の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して低消費電力状態で動作するよう指示し、前記命令検出処理部により検出された命令の数が０以外の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して通常状態で動作するよう指示する動作状態切替指示処理部と
を備えたことを特徴とする演算処理装置。
【請求項２】
通常状態と低消費電力状態との２種類の動作モードで動作する演算器を複数有し、当該複数の演算器を含む演算器群と当該演算器により実行される命令を格納するリザベーションステーションとを対応付けて有する演算処理装置であって、
命令を実行するために必要なデータが揃っている場合にその命令が実行可能であることを示す第１の情報を生成し、揃っていない場合にその命令が実行可能でないことを示す第２の情報を生成し、生成した第１または第２の情報を、前記リザベーションステーションに格納された命令毎に設定する情報設定部と、
前記第１の情報が設定された命令の数を検出する命令検出処理部と、
前記命令検出処理部により検出された命令の数が０の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して低消費電力状態で動作するよう指示し、前記命令検出処理部により検出された命令の数が０以外の場合に、当該検出された命令の数に基づいて通常状態で動作させる演算器数を決定し、前記リザベーションステーションに対応付けられた前記演算器群の演算器のうち、当該演算器数に該当する数の演算器に対して通常状態で動作するよう指示する動作状態切替指示処理部と
を備えたことを特徴とする演算処理装置。
【請求項３】
前記第１の情報が設定された命令の数を示す格納命令数と通常状態で動作させる演算器の数を示す通常状態動作演算器数との関係を記憶する閾値管理テーブルをさらに備え、
前記動作状態切替指示処理部は、前記演算器数を決定する処理として、前記閾値管理テーブルから、前記格納命令数に該当する前記通常状態動作演算器数を取得し、前記リザベーションステーションに対応付けられた前記演算器群に対して当該通常状態動作演算器数に該当する数の演算器が通常状態で動作するよう指示することを特徴とする請求項２に記載の演算処理装置。
【請求項４】
通常状態と低消費電力状態との２種類の動作モードで動作する演算器を複数有し、当該複数の演算器を含む演算器群と当該演算器により実行される命令を格納するリザベーションステーションとを対応付けて有する演算処理装置における電力制御方法であって、
命令を実行するために必要なデータが揃っている場合にその命令が実行可能であることを示す第１の情報を生成し、揃っていない場合にその命令が実行可能でないことを示す第２の情報を生成し、生成した第１または第２の情報を、前記リザベーションステーションに格納された命令毎に設定し、
前記第１の情報が設定された命令の数を検出し、
前記検出された命令の数が０の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して低消費電力状態で動作するよう指示し、
前記検出された命令の数が０以外の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して通常状態で動作するよう指示する、
ことを特徴とする電力制御方法。
【請求項５】
通常状態と低消費電力状態との２種類の動作モードで動作する演算器を複数有し、当該複数の演算器を含む演算器群と当該演算器により実行される命令を格納するリザベーションステーションとを対応付けて有する演算処理装置における電力制御方法であって、
命令を実行するために必要なデータが揃っている場合にその命令が実行可能であることを示す第１の情報を生成し、揃っていない場合にその命令が実行可能でないことを示す第２の情報を生成し、生成した第１または第２の情報を、前記リザベーションステーションに格納された命令毎に設定し、
前記第１の情報が設定された命令の数を検出し、
前記検出された命令の数が０の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して低消費電力状態で動作するよう指示し、
前記検出された命令の数が０以外の場合に、当該検出された命令の数に基づいて通常状態で動作させる演算器数を決定し、前記リザベーションステーションに対応付けられた前記演算器群の演算器のうち、当該演算器数に該当する数の演算器に対して通常状態で動作するよう指示する、
ことを特徴とする電力制御方法。
【請求項６】
前記演算処理装置が、前記第１の情報が設定された命令の数を示す格納命令数と通常状態で動作させる演算器の数を示す通常状態動作演算器数との関係を記憶する閾値管理テーブルをさらに備える場合に、
前記演算器数を決定する処理として、前記閾値管理テーブルから、前記格納命令数に該当する前記通常状態動作演算器数を取得し、
前記リザベーションステーションに対応付けられた前記演算器群に対して当該通常状態動作演算器数に該当する数の演算器が通常状態で動作するよう指示する、
ことを特徴とする請求項５に記載の電力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、省電力で動作するマイクロプロセッサに関し、特に、簡易な構成で消費電力を低減し、かつ動作中でも柔軟に電力供給を制御することができるマイクロプロセッサに関するものである。
【背景技術】
【０００２】
近年、マイクロプロセッサの回路の大規模化、クロック周波数の向上化に伴ってマイクロプロセッサの消費電力量が増大している。その対策として、マイクロプロセッサを省電力で動作させる様々な技術が提案されている。
【０００３】
例えば、特許文献１では、命令レジスタに記憶された命令をデコードする際に、命令を実行するために必要な機能ユニットを解析して、不要な機能ユニットに対して電源供給を停止する技術が開示されている。
【０００４】
また、特許文献２では、マイクロプロセッサに電力制御用レジスタを設け、各機能ユニットに対応するレジスタの定義値に基づいて各機能ユニットのクロック周波数や電源供給を制御することでマイクロプロセッサの消費電力を低減させる技術が開示されている。
【０００５】
【特許文献１】特開昭５４−１４６２４号公報
【特許文献２】特開平９−６２４１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１で開示されている技術は、命令を１つずつ逐次実行することを前提とした技術であるため、複数の命令を同時に実行するスーパスカラ型のマイクロプロセッサにそのまま適用することができないという問題がある。
【０００７】
また、上記特許文献２で開示されている技術では、予め設定した電力制御用レジスタの定義値に基づいて機能ユニットに供給する電力が一意に決定されるため、マイクロプロセッサの動作中に電力供給を柔軟に制御することができない。すなわち、マイクロプロセッサが処理する命令によって機能ユニットが必要とする電力量は変動するにも関わらず、上記特許文献２のように機能ユニット毎に供給する電力量を一意に決めてしまうと、大量の命令を処理する機能ユニットに対して十分に電力が供給されないという事態が発生するおそれがある。
【０００８】
なお、マイクロプロセッサの省電力化を図るには、回路構成が大規模になることを避ける必要がある。省電力化を図るために回路に複雑な機構を追加してしまうとかえって消費電力が増大してしまうからである。
【０００９】
以上のことから、現在主流となっているスーパスカラ型のマイクロプロセッサの消費電力をいかにして簡易な構成で低減し、かつマイクロプロセッサが動作中でもいかにして柔軟に電力供給を制御するかが重要な課題となっている。
【００１０】
本発明は、上記課題を解消するためになされたものであって、簡易な構成で消費電力を低減し、かつ動作中でも柔軟に電力供給を制御することができるマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する演算処理装置は、通常状態と低消費電力状態との２種類の動作モードで動作する演算器を複数有し、当該複数の演算器を含む演算器群と当該演算器により実行される命令を格納するリザベーションステーションとを対応付けて有する演算処理装置であって、命令を実行するために必要なデータが揃っている場合にその命令が実行可能であることを示す第１の情報を生成し、揃っていない場合にその命令が実行可能でないことを示す第２の情報を生成し、生成した第１または第２の情報を、前記リザベーションステーションに格納された命令毎に設定する情報設定部と、前記第１の情報が設定された命令の数を検出する命令検出処理部と、前記命令検出処理部により検出された命令の数が０の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して低消費電力状態で動作するよう指示し、前記命令検出処理部により検出された命令の数が０以外の場合に、前記リザベーションステーションに対応付けられた前記演算器群の演算器に対して通常状態で動作するよう指示する動作状態切替指示処理部とを備える。
【発明の効果】
【００１８】
本願の開示する演算処理装置の一つの態様によれば、リザベーションステーションに命令が格納されている場合であっても、その命令が実行可能でなければ対応する演算器が低消費電力状態で動作し、即座に命令を実行する演算器以外の演算器を低消費電力状態で動作させることができ、ひいては効率的に演算処理装置の消費電力を低減することができる。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、本発明にかかるマイクロプロセッサの好適な実施例を詳細に説明する。
【実施例１】
【００２２】
まず、本実施例１に係るマイクロプロセッサの概要について説明する。図１は、本実施例１に係るマイクロプロセッサの概要を説明するための説明図である。同図に示すように、マイクロプロセッサ１０は、アウトオブオーダで命令を実行するスーパスカラ型のマイクロプロセッサであり、リザベーションステーション１１と、演算器１２と、動作状態切替制御部１３とを有する。
【００２３】
リザベーションステーション１１は、演算器１２により実行される命令及びその命令の実行に必要な資源に関する情報を格納する記憶素子であり、エントリ１１ａ〜１１ｅを有し、エントリ１１ａ〜１１ｅは、命令等を１つずつ格納する。以下では、命令が格納されているエントリに斜線を付して図示することとする。例えば、図１に示したリザベーションステーション１１は、エントリ１１ａ〜１１ｃに命令が格納されている。
【００２４】
演算器１２は、リザベーションステーション１１に格納されている命令を実行する演算回路であり、「通常状態」と「低消費電力状態」との２種類の動作モードで動作する。ここで言う「通常状態」とは通常の電力が供給されている状態を示し、「低消費電力状態」とは微小の電力が供給されている状態を示す。以下では、「通常状態」で動作している演算器に斜線を付して図示することとする。例えば、図１の演算器１２は、「通常状態」で動作している。
【００２５】
なお、図１では、説明を簡単にするために、マイクロプロセッサ１０が１組のリザベーションステーション１１と演算器１２とを有する例を示したが、実際は、命令の系統毎にリザベーションステーション１１と演算器１２との組み合わせを複数有することもある。また、リザベーションステーション１１に対して複数の演算器１２を有することもある。
【００２６】
動作状態切替制御部１３は、本発明の特徴をなす制御部であり、リザベーションステーション１１に命令が格納されているか否かを検出し、命令が格納されている場合には、演算器１２に対して「通常状態」で動作するよう指示し、命令が格納されていない場合には、演算器１２に対して「低消費電力状態」で動作するよう指示する。
【００２７】
このように、リザベーションステーション１１を有するマイクロプロセッサ１０では、演算器１２がリザベーションステーション１１に格納されている命令を実行するため、リザベーションステーション１１に命令が格納されていない場合は、演算器１２を「低消費電力状態」で動作させても問題とならない。すなわち、リザベーションステーション１１に命令が格納された場合のみ演算器１２を「通常状態」で動作させることで、マイクロプロセッサ１０の消費電力を低減することができる。
【００２８】
例えば、事務処理系のプログラムでは、浮動小数点系の命令の実行頻度が低いことが知られている。このようなプログラムをマイクロプロセッサが処理する場合、浮動小数点系のリザベーションステーションに命令が格納されない期間が長くなり、その間は、浮動小数点系の演算器は「低消費電力状態」となるのでマイクロプロセッサの省電力化を実現できる。
【００２９】
以上のように、本実施例１に係るマイクロプロセッサ１０では、リザベーションステーション１１に命令が格納されているか否かを検出するだけで演算器１２の動作モードを制御するので、簡易な構成で消費電力を低減することができる。
【００３０】
次に、本実施例１に係るマイクロプロセッサの構成について説明する。図２は、本実施例１に係るマイクロプロセッサの構成を示す機能ブロック図である。同図に示すように、マイクロプロセッサ１００は、バスインタフェースユニット（以下、「ＢＩＵ」と言う）１１０と、命令キャッシュ１２０と、命令デコーダ１３０と、データキャッシュ１４０と、リザベーションステーション１５０と、機能ユニット１６０と、動作状態切替制御部１７０とを有する。
【００３１】
ＢＩＵ１１０は、図示しない主記憶装置等の外部デバイスと入出力処理を行うインタフェースである。命令キャッシュ１２０は、ＢＩＵ１１０を介して図示しない主記憶装置等から後述する機能ユニット１６０により実行される命令を取得して記憶する装置である。
【００３２】
命令デコーダ１３０は、命令キャッシュ１２０に記憶された命令をデコードして、デコードした命令をメモリアクセス系、算術論理演算系、浮動小数点演算系等の系統に分類し、リザベーションステーション１５０に記憶させる装置である。データキャッシュ１４０は、機能ユニット１６０が実行した命令の結果や機能ユニット１６０が命令を実行する際に必要となるデータを記憶する装置である。
【００３３】
リザベーションステーション１５０は、命令デコーダ１３０によりデコードされた命令を格納する記憶素子であり、メモリアクセスリザベーションステーション（以下、「ＲＳ−ＭＡＵ」と言う）１５１と、算術論理演算リザベーションステーション（以下、「ＲＳ−ＡＬＵ」と言う）１５２と、浮動小数点演算リザベーションステーション（以下、「ＲＳ−ＦＰＵ」と言う）１５３とを有する。
【００３４】
ＲＳ−ＭＡＵ１５１は、エントリ１５１ａ〜１５１ｅを有し、命令デコーダ１３０によりメモリアクセス系と分類された命令をエントリ１５１ａ〜１５１ｅに１つずつ格納する。また、ＲＳ−ＡＬＵ１５２は、エントリ１５２ａ〜１５２ｅを有し、命令デコーダ１３０により算術論理演算系と分類された命令をエントリ１５２ａ〜１５２ｅに１つずつ格納し、ＲＳ−ＦＰＵ１５３は、エントリ１５３ａ〜１５３ｅを有し、命令デコーダ１３０により浮動小数点演算系と分類された命令をエントリ１５３ａ〜１５３ｅに１つずつ格納する。
【００３５】
このように、リザベーションステーション１５０は、格納する命令の系統別に分かれて構成される。なお、本実施例１では、リザベーションステーション１５０がメモリアクセス系、算術論理演算系、浮動小数点演算系の命令を格納するＲＳ−ＭＡＵ１５１、ＲＳ−ＡＬＵ１５２、ＲＳ−ＦＰＵ１５３を有する場合を示したが、これ以外の分類に基づいて命令の系統を定め、その系統毎にリザベーションステーションを設けることとしてもよい。
【００３６】
機能ユニット１６０は、リザベーションステーション１５０に格納されている命令を実行する演算器の集まりであり、メモリアクセス群１６１と、算術論理演算器群１６２と、浮動小数点演算器群１６３とを有する。
【００３７】
メモリアクセス群１６１は、ＭＡＵ１６１ａ〜１６１ｃの３つの演算器及び実行フラグ１６１ｊから構成され、算術論理演算器群１６２はＡＬＵ１６２ａ〜１６２ｃの３つの演算器及び実行フラグ１６２ｊから構成され、浮動小数点演算器群１６３はＦＰＵ１６３ａ〜１６３ｃの３つの演算器及び実行フラグ１６３ｊから構成される。ＭＡＵ１６１ａ〜１６１ｃ、ＡＬＵ１６２ａ〜１６２ｃ及びＦＰＵ１６３ａ〜１６３ｃは、「通常状態」と「低消費電力状態」との２種類の動作モードで動作する。
【００３８】
なお、図２では、機能ユニット１６０がメモリアクセス群１６１、算術論理演算器群１６２及び浮動小数点演算器群１６３を有する場合を示したが、これ以外の分類に基づいて命令の系統を定め、その系統毎に演算器群を構成することとしてもよい。
【００３９】
ここで、リザベーションステーション１５０と機能ユニット１６０には対応関係がある。具体的には、ＲＳ−ＭＡＵ１５１はメモリアクセス群１６１に対応し、ＲＳ−ＡＬＵ１５２は算術論理演算器群１６２に対応し、ＲＳ−ＦＰＵ１５３は浮動小数点演算器群１６３に対応する。そして、メモリアクセス群１６１、算術論理演算器群１６２、浮動小数点演算器群１６３は、対応するリザベーションステーション１５０に格納されている命令だけを実行する。
【００４０】
例えば、メモリアクセス群１６１は、ＲＳ−ＭＡＵ１５１に格納されている命令を実行するが、ＲＳ−ＡＬＵ１５２及びＲＳ−ＦＰＵ１５３に格納されている命令を実行することはない。同様に、算術論理演算器群１６２はＲＳ−ＡＬＵ１５２に格納されている命令だけを実行し、浮動小数点演算器群１６３はＲＳ−ＦＰＵ１５３に格納されている命令だけを実行する。
【００４１】
実行フラグ１６１ｊは、メモリアクセス群１６１が命令を実行中であるか否かを示すデータであり、後述する動作状態切替指示処理部１７２によりメモリアクセス群１６１が命令を実行中であるか否かを判断する際に用いられる。
【００４２】
同様に、実行フラグ１６２ｊは算術論理演算器群１６２が命令を実行中であるか否かを示すデータであり、実行フラグ１６３ｊは浮動小数点演算器群１６３が命令を実行中であるか否かを示すデータである。以下では、演算器群が命令を実行中である場合には実行フラグ１６１ｊ、実行フラグ１６２ｊ、実行フラグ１６３ｊを「１」とし、演算器が命令を実行中でない場合には「０」とする。
【００４３】
動作状態切替制御部１７０は、機能ユニット１６０の動作モードを切り替える制御部であり、命令検出処理部１７１と、動作状態切替指示処理部１７２とを有する。命令検出処理部１７１は、ＲＳ−ＭＡＵ１５１、ＲＳ−ＡＬＵ１５２、ＲＳ−ＦＰＵ１５３に命令が格納されているか否かを検出し、検出結果を動作状態切替指示処理部１７２に出力する処理部である。
【００４４】
図２の例の場合、命令検出処理部１７１は、「ＲＳ−ＭＡＵ１５１は命令有、ＲＳ−ＡＬＵ１５２は命令無、ＲＳ−ＦＰＵ１５３は命令有」という検出結果を動作状態切替指示処理部１７２に出力する。このように、命令検出処理部１７１は、ＲＳ−ＭＡＵ１５１、ＲＳ−ＡＬＵ１５２、ＲＳ−ＦＰＵ１５３毎に命令が格納されているか否かを検出する。
【００４５】
動作状態切替指示処理部１７２は、命令検出処理部１７１から受信した検出結果と実行フラグ１６１ｊ、１６２ｊ、１６３ｊとに基づいて、メモリアクセス群１６１、算術論理演算器群１６２、浮動小数点演算器群１６３に対して動作モードを切り替えるよう指示する処理部である。
【００４６】
具体的には、ＲＳ−ＭＡＵ１５１に命令が格納されている場合には、メモリアクセス群１６１に対して「通常状態」で動作するよう指示し、ＲＳ−ＡＬＵ１５２に命令が格納されている場合には、算術論理演算器群１６２に対して「通常状態」で動作するよう指示し、ＲＳ−ＦＰＵ１５３に命令が格納されている場合には、浮動小数点演算器群１６３に対して「通常状態」で動作するよう指示する。
【００４７】
一方、ＲＳ−ＭＡＵ１５１に命令が格納されていない場合には、メモリアクセス群１６１の実行フラグ１６１ｊを取得し、実行フラグ１６１ｊが「０」の場合には、メモリアクセス群１６１に対して「低消費電力状態」で動作するよう指示し、実行フラグ１６１ｊが「１」の場合には、メモリアクセス群１６１に対して指示を行わない。
【００４８】
このように、実行フラグ１６１ｊを用いてメモリアクセス群１６１が実行中であるか否かを判断することで、命令を実行中のメモリアクセス群１６１に対して「低消費電力状態」で動作するよう指示してしまうことを防止することができる。
【００４９】
同様に、ＲＳ−ＡＬＵ１５２に命令が格納されておらず、かつ、算術論理演算器群１６２の実行フラグ１６２ｊが「０」の場合には、算術論理演算器群１６２に対して「低消費電力状態」で動作するよう指示し、ＲＳ−ＡＬＵ１５２に命令が格納されておらず、かつ、実行フラグ１６２ｊが「１」の場合には、算術論理演算器群１６２に対して指示を行わない。
【００５０】
また、ＲＳ−ＦＰＵ１５３に命令が格納されておらず、かつ、浮動小数点演算器群１６３の実行フラグ１６３ｊが「０」の場合には、浮動小数点演算器群１６３に対して「低消費電力状態」で動作するよう指示し、ＲＳ−ＦＰＵ１５３に命令が格納されておらず、かつ、実行フラグ１６３ｊが「１」の場合には、浮動小数点演算器群１６３に対して指示を行わない。
【００５１】
図２の例の場合、動作状態切替指示処理部１７２は、「ＲＳ−ＭＡＵ１５１は命令有、ＲＳ−ＡＬＵ１５２は命令無、ＲＳ−ＦＰＵ１５３は命令有」という検出結果を命令検出処理部１７１から受信するので、メモリアクセス群１６１に対して「通常状態」で動作するよう指示し、浮動小数点演算器群１６３に対して「通常状態」で動作するよう指示する。
【００５２】
一方、ＲＳ−ＡＬＵ１５２には命令が格納されていないため、動作状態切替指示処理部１７２は、算術論理演算器群１６２の実行フラグ１６２ｊを取得し、実行フラグ１６２ｊが「０」の場合には、算術論理演算器群１６２に対して「低消費電力状態」で動作するよう指示し、実行フラグ１６２ｊが「１」の場合には、算術論理演算器群１６２に対して指示を行わない。なお、図２の例は、実行フラグ１６２ｊが「０」であるとして、算術論理演算器群１６２に対して「低消費電力状態」で動作するよう指示した場合を示している。
【００５３】
次に、図２に示したマイクロプロセッサ１００による動作状態切替処理の手順について説明する。図３は、図２に示したマイクロプロセッサ１００による動作状態切替処理手順を示すフローチャートである。なお、この処理手順は、マイクロプロセッサ１００が動作している間、１サイクル毎に実行される。
【００５４】
図３に示すように、マイクロプロセッサ１００では、命令検出処理部１７１がＲＳ−ＭＡＵ１５１、ＲＳ−ＡＬＵ１５２、ＲＳ−ＦＰＵ１５３に命令が格納されているか否かを検出して、検出結果を動作状態切替指示処理部１７２に出力する。
【００５５】
検出結果を受信した動作状態切替指示処理部１７２は、検出結果を解析して、ＲＳ−ＭＡＵ１５１に命令が格納されている場合には（ステップＳ２０１肯定）、メモリアクセス群１６１に対して「通常状態」で動作するよう指示する（ステップＳ２０２）。
【００５６】
同様に、ＲＳ−ＡＬＵ１５２若しくはＲＳ−ＦＰＵ１５３に命令が格納されている場合には（ステップＳ２０１肯定）、算術論理演算器群１６２若しくは浮動小数点演算器群１６３に対して「通常状態」で動作するよう指示する（ステップＳ２０２）。
【００５７】
かかる指示を受け付けたメモリアクセス群１６１、算術論理演算器群１６２若しくは浮動小数点演算器群１６３は、「通常状態」で動作する（ステップＳ２０３）。なお、例えば、「通常状態」にしてから演算器が動作可能になるまでに３サイクルかかるのであれば、リザベーションステーションには３サイクル分以上のエントリがあることが好ましい。
【００５８】
一方、ＲＳ−ＭＡＵ１５１に命令が格納されていない場合には（ステップＳ２０１否定）、動作状態切替指示処理部１７２は、メモリアクセス群１６１の実行フラグ１６１ｊを取得し、実行フラグ１６１ｊが「０」の場合には（ステップＳ２０４否定）、メモリアクセス群１６１に対して「低消費電力状態」で動作するよう指示する（ステップＳ２０５）。
【００５９】
かかる指示を受け付けたメモリアクセス群１６１は、「低消費電力状態」で動作する（ステップＳ２０６）。また、実行フラグ１６１ｊが「１」の場合には（ステップＳ２０４肯定）、動作状態切替指示処理部１７２は、メモリアクセス群１６１に対して指示を行わない。
【００６０】
同様に、ＲＳ−ＡＬＵ１５２に命令が格納されておらず（ステップＳ２０１否定）、かつ、実行フラグ１６２ｊが「０」の場合には（ステップＳ２０４否定）、動作状態切替指示処理部１７２は、算術論理演算器群１６２に対して「低消費電力状態」で動作するよう指示する（ステップＳ２０５）。
【００６１】
かかる指示を受け付けた算術論理演算器群１６２は、「低消費電力状態」で動作する（ステップＳ２０６）。また、実行フラグ１６２ｊが「１」の場合には（ステップＳ２０４肯定）、動作状態切替指示処理部１７２は、算術論理演算器群１６２に対して指示を行わない。
【００６２】
また、ＲＳ−ＦＰＵ１５３に命令が格納されておらず（ステップＳ２０１否定）、かつ、１６３ｊが「０」の場合には（ステップＳ２０４否定）、動作状態切替指示処理部１７２は、浮動小数点演算器群１６３に対して「低消費電力状態」で動作するよう指示する（ステップＳ２０５）。
【００６３】
かかる指示を受け付けた浮動小数点演算器群１６３は、「低消費電力状態」で動作する（ステップＳ２０６）。また、実行フラグ１６３ｊが「１」の場合には（ステップＳ２０４肯定）、動作状態切替指示処理部１７２は、浮動小数点演算器群１６３に対して指示を行わない。
【００６４】
上述してきたように、本実施例１では、命令検出処理部１７１がＲＳ−ＭＡＵ１５１、ＲＳ−ＡＬＵ１５２、ＲＳ−ＦＰＵ１５３に命令が格納されているか否かを検出して、命令が格納されている場合には、動作状態切替指示処理部１７２がメモリアクセス群１６１、算術論理演算器群１６２若しくは浮動小数点演算器群１６３に対して「通常状態」で動作するよう指示し、命令が格納されていない場合には、命令を実行中でないメモリアクセス群１６１、算術論理演算器群１６２若しくは浮動小数点演算器群１６３に対して「低消費電力状態」で動作するよう指示する構成としたので、命令を実行する必要のない演算器が「低消費電力状態」で動作し、ひいてはマイクロプロセッサの消費電力を低減することができる。また、マイクロプロセッサが動作中であっても演算器毎に動作モードを変更するので、柔軟に電力供給を制御することができる。
【実施例２】
【００６５】
ところで、上記実施例１では、例えば、ＲＳ−ＭＡＵ１５１に１つでも命令が格納されていれば、ＭＡＵ１６１ａ〜ＭＡＵ１６１ｃをすべて「通常状態」で動作させる例を示したが、格納されている命令の数によってはＭＡＵ１６１ａ〜ＭＡＵ１６１ｃのすべてが必要になるとは限らない。また、ＲＳ−ＭＡＵ１５１に命令が格納されている場合であっても、命令を実行するために必要なデータが揃っていない場合もあり、ＲＳ−ＭＡＵ１５１に命令が格納されているからといってＭＡＵ１６１ａ〜ＭＡＵ１６１ｃがすぐに必要になるとは限らない。
【００６６】
そこで、本実施例２では、リザベーションステーションに格納されている命令の数に基づいて「通常状態」で動作させる演算器の数を制御し、かつ、格納されている命令を実行するために必要なデータが揃っているか否かを判断して各演算器の動作状態を切り替える例を示すこととする。
【００６７】
まず、本実施例２に係るマイクロプロセッサの構成について説明する。図４は、本実施例２に係るマイクロプロセッサの構成を示す機能ブロック図である。同図に示すように、マイクロプロセッサ３００は、ＢＩＵ１１０と、命令キャッシュ１２０と、命令デコーダ１３０と、データキャッシュ１４０と、リザベーションステーション３１０と、機能ユニット１６０と、記憶部３２０と、動作状態切替制御部３３０とを有する。なお、図２に示した構成部位と同様の機能を有する部位には同一符号を付すこととしてその詳細な説明を省略する。
【００６８】
リザベーションステーション３１０は、ＲＳ−ＭＡＵ３１１と、ＲＳ−ＡＬＵ３１２と、ＲＳ−ＦＰＵ３１３とを有する。ＲＳ−ＭＡＵ３１１はエントリ３１１ａ〜３１１ｅを有し、ＲＳ−ＡＬＵ３１２はエントリ３１２ａ〜３１２ｅを有し、ＲＳ−ＦＰＵ３１３はエントリ３１３ａ〜３１３ｅを有する。
【００６９】
エントリ３１１ａ〜３１１ｅは、格納されている命令を実行するために必要なデータが揃っているか否かを示す発行ビット３１１ｆ〜３１１ｊを有する。同様に、エントリ３１２ａ〜３１２ｅは発行ビット３１２ｆ〜３１２ｊを有し、エントリ３１３ａ〜３１３ｅは発行ビット３１３ｆ〜３１３ｊを有する。以下では、命令を実行するために必要なデータが揃っている場合には発行ビット３１１ｆ〜３１１ｊ、発行ビット３１２ｆ〜３１２ｊ及び発行ビット３１３ｆ〜３１３ｊを「１」とし、命令を実行するために必要なデータが揃っていない場合には「０」とする。
【００７０】
図４の例は、エントリ３１１ａ〜３１１ｅ及びエントリ３１２ａに命令が格納されており、命令を実行するために必要なデータがすべて揃っている状態を示している。また、エントリ３１２ｂ、３１２ｃに命令が格納されているが、命令を実行するために必要なデータが揃っていない状態を示している。また、エントリ３１２ｄ、３１２ｅ及びエントリ３１３ａ〜３１３ｅに命令が格納されていない状態を示している。なお、発行ビットの設定については、図６を用いて後に詳述する。
【００７１】
ＭＡＵ１６１ａ〜１６１ｃは、それぞれ実行フラグ１６１ｄ〜１６１ｆを有する。実行フラグ１６１ｄは、ＭＡＵ１６１ａが命令を実行中であるか否かを示すデータであり、実行フラグ１６１ｅは、ＭＡＵ１６１ｂが命令を実行中であるか否かを示すデータであり、実行フラグ１６１ｆは、ＭＡＵ１６１ｃが命令を実行中であるか否かを示すデータである。
【００７２】
同様に、ＡＬＵ１６２ａ〜１６２ｃは、それぞれ実行フラグ１６２ｄ〜１６２ｆを有する。実行フラグ１６２ｄ〜１６２ｆは、それぞれ対応するＡＬＵ１６２ａ〜１６２ｃが命令を実行中であるか否かを示すデータである。同様に、ＦＰＵ１６３ａ〜１６３ｃは、それぞれ実行フラグ１６３ｄ〜１６３ｆを有する。実行フラグ１６３ｄ〜１６３ｆは、それぞれ対応するＦＰＵ１６３ａ〜１６３ｃが命令を実行中であるか否かを示すデータである。以下では、演算器が命令を実行中である場合には実行フラグ１６１ｄ〜１６１ｆ、実行フラグ１６２ｄ〜１６２ｆ、実行フラグ１６３ｄ〜１６３ｆを「１」とし、演算器が命令を実行中でない場合には「０」とする。
【００７３】
記憶部３２０は、マイクロプロセッサ３００が有するレジスタ等の記憶素子であり、閾値管理テーブル３２１を記憶する。図５は、図４に示した閾値管理テーブル３２１の一例を示す図である。同図の例は、設定１の場合、１つの命令が格納されている場合には１つの演算器を「通常状態」で動作させ、３つの命令が格納されている場合には２つの演算器を「通常状態」で動作させ、５つの命令が格納されている場合には３つの演算器を「通常状態」で動作させることを示している。
【００７４】
また、設定２の場合、１つの命令が格納されている場合には１つの演算器を「通常状態」で動作させ、２つの命令が格納されている場合には２つの演算器を「通常状態」で動作させ、３つの命令が格納されている場合には３つの演算器を「通常状態」で動作させることを示している。
【００７５】
なお、閾値管理テーブル３２１の設定値は、利用者等により任意に設定させる値であり、マイクロプロセッサ３００を低消費電力で動作させるレベルを示している。例えば、図５に示すように、同じ命令数が格納されても「通常状態」で動作する演算器数は設定２より設定１の方が少ないので、利用者がマイクロプロセッサ３００をより低消費電力で動作させることを望む場合には設定１をマイクロプロセッサ３００に対して設定することになる。
【００７６】
動作状態切替制御部３３０は、機能ユニット１６０の動作モードを切り替える制御部であり、命令検出処理部３３１と、動作状態切替指示処理部３３２とを有する。命令検出処理部３３１は、発行ビット３１１ｆ〜３１１ｊ、発行ビット３１２ｆ〜３１２ｊ及び発行ビット３１３ｆ〜３１３ｊを取得し、ＲＳ−ＭＡＵ３１１、ＲＳ−ＡＬＵ３１２、ＲＳ−ＦＰＵ３１３について、それぞれが有する発行ビット３１１ｆ〜３１１ｊ、発行ビット３１２ｆ〜３１２ｊ、発行ビット３１３ｆ〜３１３ｊが「１」となっている合計数（以下、「実行可能命令数」と言う）を算出し、算出した実行可能命令数を動作状態切替指示処理部３３２に出力する処理部である。
【００７７】
例えば、図４の例の場合、命令検出処理部３３１は、エントリ３１１ａ〜３１１ｅのすべての発行ビット３１１ｆ〜３１１ｊが「１」となっているのでＲＳ−ＭＡＵ３１１の実行可能命令数として「５」を算出する。同様に、ＲＳ−ＡＬＵ３１２の実行可能命令数として「１」を算出し、ＲＳ−ＦＰＵ３１３の実行可能命令数として「０」を算出して、算出した実行可能命令数を動作状態切替指示処理部３３２に出力する。
【００７８】
動作状態切替指示処理部３３２は、命令検出処理部３３１からＲＳ−ＭＡＵ３１１、ＲＳ−ＡＬＵ３１２及びＲＳ−ＦＰＵ３１３の実行可能命令数を受信した場合に、閾値管理テーブル３２１を参照して通常状態で動作させる演算器数を取得し、取得した演算器数に該当する数のＭＡＵ１６１ａ〜１６１ｃ、ＡＬＵ１６２ａ〜１６２ｃ若しくはＦＰＵ１６３ａ〜１６３ｃが「通常状態」で動作するよう指示する処理部である。
【００７９】
具体的には、ＲＳ−ＭＡＵ３１１の実行可能命令数が「０」でない場合には、動作状態切替指示処理部３３２は、閾値管理テーブル３２１から実行可能命令数に該当する通常状態で動作させる演算器数を取得する。そして、取得した演算器数に該当する数のＭＡＵ１６１ａ〜１６１ｃが「通常状態」で動作するようメモリアクセス群１６１に対して指示する。
【００８０】
ここで、各演算器（ＭＡＵ１６１ａ〜１６１ｃ）の実行フラグ１６１ｄ〜１６１ｆが「１」であるか否かを判断し、閾値管理テーブル３２１から取得した演算器数より命令実行状態の演算器数が少ない場合にその差分だけ命令実行中でない演算器を新たに「通常状態」で動作するよう指示する。取得した演算器数より命令実行状態の演算器数が多い場合は新たに「通常状態」で動作する演算器はない。すなわち、実行フラグが「１」で命令実行中の演算器があれば実行が終了するまで取得した演算器数に更新しない。例えば、ＭＡＵ１６１ａとＭＡＵ１６１ｂが命令実行中であるが、取得した演算器数が「１」であるときには、その実行が終了するまで取得した演算器数に更新されることはない。
【００８１】
一方、ＲＳ−ＭＡＵ３１１の実行可能命令数が「０」の場合には、動作状態切替指示処理部３３２は、メモリアクセス群１６１の実行フラグ１６１ｄ〜１６１ｆを全て取得する。取得した実行フラグ１６１ｄ〜１６１ｆが全て「０」の場合には、メモリアクセス群１６１に対して「低消費電力状態」で動作するよう指示し、実行フラグ１６１ｄ〜１６１ｆが「１」の場合には、メモリアクセス群１６１に対して指示しない。
【００８２】
同様に、動作状態切替指示処理部３３２は、ＲＳ−ＡＬＵ３１２の実行可能命令数が「０」でない場合には、閾値管理テーブル３２１から通常状態で動作させる演算器数を取得し、取得した演算器数に該当する数のＡＬＵ１６２ａ〜１６２ｃが「通常状態」で動作するよう算術論理演算器群１６２に対して指示する。
【００８３】
ここで、各演算器（ＡＬＵ１６２ａ〜１６２ｃ）の実行フラグ１６２ｄ〜１６２ｆが「１」であるか否かを判断し、閾値管理テーブル３２１から取得した演算器数より命令実行状態の演算器数が少ない場合にその差分だけ命令実行中でない演算器を新たに「通常状態」で動作するよう指示する。取得した演算器数より命令実行状態の演算器数が多い場合は新たに「通常状態」で動作する演算器はない。
【００８４】
一方、ＲＳ−ＡＬＵ３１２の実行可能命令数が「０」であり、かつ、実行フラグ１６２ｄ〜１６２ｆが全て「０」の場合には、算術論理演算器群１６２に対して「低消費電力状態」で動作するよう指示する。
【００８５】
また、動作状態切替指示処理部３３２は、ＲＳ−ＦＰＵ３１３の実行可能命令数が「０」でない場合には、閾値管理テーブル３２１から通常状態で動作させる演算器数を取得し、取得した演算器数に該当する数のＦＰＵ１６３ａ〜１６３ｃが「通常状態」で動作するよう浮動小数点演算器群１６３に対して指示する。
【００８６】
ここで、各演算器（ＦＰＵ１６３ａ〜１６３ｃ）の実行フラグ１６３ｄ〜１６３ｆが「１」であるか否かを判断し、閾値管理テーブル３２１から取得した演算器数より命令実行状態の演算器数が少ない場合にその差分だけ命令実行中でない演算器を新たに「通常状態」で動作するよう指示する。取得した演算器数より命令実行状態の演算器数が多い場合は新たに「通常状態」で動作する演算器はない。
【００８７】
一方、ＲＳ−ＦＰＵ３１３の実行可能命令数が「０」であり、かつ、実行フラグ１６３ｄ〜１６３ｆが全て「０」の場合には、浮動小数点演算器群１６３に対して「低消費電力状態」で動作するよう指示する。
【００８８】
図４の例の場合、利用者により閾値管理テーブル３２１の設定値として「設定１」が選択されているとすると、動作状態切替指示処理部３３２は、ＲＳ−ＭＡＵ３１１の実行可能命令数が「５」なので、閾値管理テーブル３２１から通常状態で動作させる演算器数として「３」を取得する。そして、「３」つの演算器が「通常状態」で動作するようメモリアクセス群１６１に対して指示する。
【００８９】
同様に、ＲＳ−ＡＬＵ３１２の実行可能命令数が「１」なので、動作状態切替指示処理部３３２は、閾値管理テーブル３２１から通常状態で動作させる演算器数として「１」を取得し、「１」つの演算器が「通常状態」で動作するよう算術論理演算器群１６２に対して指示する。また、ＲＳ−ＦＰＵ３１３の実行可能命令数が「０」なので、動作状態切替指示処理部３３２は、浮動小数点演算器群１６３に対して、すべての演算器（ＦＰＵ１６３ａ〜ＦＰＵ１６３ｃ）が「低消費電力状態」で動作するよう指示する。
【００９０】
なお、閾値管理テーブル３２１に実行可能命令数が「０」の場合に動作させる演算器数を登録しておいて、実行可能命令数が「０」の場合も閾値管理テーブル３２１から通常状態で動作させる演算器数を取得するようにしてもよい。これにより、実行可能命令数が「０」の場合と「０」以外の場合とに分けて処理をする必要がなくなる。また、命令の系統毎に閾値管理テーブル３２１を分けて設けてもよい。これにより、演算器群毎に通常状態で動作させる演算器数を制御することができる。
【００９１】
次に、図４に示した発行ビット３１２ｆ〜３１２ｊの設定について説明する。図６は、図４に示した発行ビット３１２ｆ〜３１２ｊの設定について説明するための説明図である。同図では、説明を簡単にするために、エントリ３１２ａ〜３１２ｅが有する発行ビット３１２ｆ〜３１２ｊの設定についてのみ示す。
【００９２】
図６に示すように、マイクロプロセッサ３００は、レジスタｒ１〜ｒ９と、レジスタｒ１〜ｒ９に有効なデータが記憶されているか否かを示す有効ビットｙ１〜ｙ９とを有する。以下では、有効なデータが記憶されている場合には有効ビットｙ１〜ｙ９を「１」とし、有効なデータが記憶されていない場合には「０」とする。図６の例では、レジスタｒ１に有効なデータが記憶されているため、有効ビットｙ１は「１」となり、レジスタｒ３には有効なデータが記憶されていないため、有効ビットｙ３は「０」となる。
【００９３】
ここで、エントリ３１２ａに「ａｄｄ  ｒ３  ｒ１  ｒ２」という命令が格納されているものとする。この命令の内容は、「レジスタｒ１及びｒ２に記憶されたデータを加算し、加算結果をレジスタｒ３に記憶する」である。すなわち、命令を実行するためにはレジスタｒ１及びｒ２に記憶されたデータが必要となる。図６に示すように、レジスタｒ１及びｒ２に対応する有効ビットｙ１及びｙ２はそれぞれ「１」であるため、命令を実行するために必要なデータが揃っている。したがって、エントリ３１２ａの発行ビット３１２ｆは「１」となる。
【００９４】
一方、エントリ３１２ｂに格納された命令を実行するためには、レジスタｒ４及びｒ５に記憶されたデータが必要となるが、レジスタｒ５に対応する有効ビットｙ５が「０」であるため、エントリ３１２ｂの発行ビット３１２ｇは「０」となる。
【００９５】
次に、図４に示したマイクロプロセッサ３００による動作状態切替処理の手順について説明する。図７は、図４に示したマイクロプロセッサ３００による動作状態切替処理手順を示すフローチャートである。なお、この処理手順は、マイクロプロセッサ３００が動作している間、１サイクル毎に実行される。
【００９６】
図７に示すように、マイクロプロセッサ３００では、命令検出処理部３３１が発行ビット３１１ｆ〜３１１ｊ、発行ビット３１２ｆ〜３１２ｊ及び発行ビット３１３ｆ〜３１３ｊを取得し、ＲＳ−ＭＡＵ３１１、ＲＳ−ＡＬＵ３１２、ＲＳ−ＦＰＵ３１３について、実行可能命令数を算出し、算出した実行可能命令数を動作状態切替指示処理部３３２に出力する。
【００９７】
かかる実行可能命令数を受信した動作状態切替指示処理部３３２は、ＲＳ−ＭＡＵ３１１の実行可能命令数が「０」でない場合には（ステップＳ４０１肯定）、閾値管理テーブル３２１から実行可能命令数に該当する通常状態で動作させる演算器数を取得する（ステップＳ４０２）。
【００９８】
そして、実行フラグ１６１ｄ〜１６１ｆが「１」であるか否かを判断し、閾値管理テーブル３２１から取得した演算器数より命令実行状態の演算器数が少ない場合（ステップＳ４０３肯定）、その差分だけ命令実行中でない演算器を新たに「通常状態」で動作するようメモリアクセス群１６１に対して指示する（ステップＳ４０４）。かかる指示を受け付けたメモリアクセス群１６１は、指示された演算器を「通常状態」で動作させる（ステップＳ４０５）。
【００９９】
一方、取得した演算器数より命令実行状態の演算器数が多い場合（ステップＳ４０３否定）、新たに「通常状態」で動作する演算器はない。なお、次のサイクルで取得した演算器数より命令実行状態の演算器数が少なくなれば、その差分だけ命令実行中でない演算器を新たに「通常状態」で動作するよう指示することになる。
【０１００】
同様に、ＲＳ−ＡＬＵ３１２の実行可能命令数が「０」でない場合には（ステップＳ４０１肯定）、閾値管理テーブル３２１から実行可能命令数に該当する通常状態で動作させる演算器数を取得し（ステップＳ４０２）、実行フラグ１６２ｄ〜１６２ｆが「１」であるか否かを判断し、閾値管理テーブル３２１から取得した演算器数より命令実行状態の演算器数が少ない場合（ステップＳ４０３肯定）、その差分だけ命令実行中でない演算器を新たに「通常状態」で動作するよう算術論理演算器群１６２に対して指示する（ステップＳ４０４）。かかる指示を受け付けた算術論理演算器群１６２は、指示された演算器を「通常状態」で動作させる（ステップＳ４０５）。一方、取得した演算器数より命令実行状態の演算器数が多い場合（ステップＳ４０３否定）、新たに「通常状態」で動作する演算器はない。
【０１０１】
また、ＲＳ−ＦＰＵ３１３の実行可能命令数が「０」でない場合には（ステップＳ４０１肯定）、閾値管理テーブル３２１から実行可能命令数に該当する通常状態で動作させる演算器数を取得し（ステップＳ４０２）、実行フラグ１６３ｄ〜１６３ｆが「１」であるか否かを判断し、閾値管理テーブル３２１から取得した演算器数より命令実行状態の演算器数が少ない場合（ステップＳ４０３肯定）、その差分だけ命令実行中でない演算器を新たに「通常状態」で動作するよう浮動小数点演算器群１６３に対して指示する（ステップＳ４０４）。かかる指示を受け付けた浮動小数点演算器群１６３は、指示された演算器を「通常状態」で動作させる（ステップＳ４０５）。一方、取得した演算器数より命令実行状態の演算器数が多い場合（ステップＳ４０３否定）、新たに「通常状態」で動作する演算器はない。
【０１０２】
一方、ＲＳ−ＭＡＵ３１１の実行可能命令数が「０」の場合には（ステップＳ４０１否定）、動作状態切替指示処理部３３２は、メモリアクセス群１６１の実行フラグ１６１ｄ〜１６１ｆを取得する。取得した実行フラグ１６１ｄ〜１６１ｆが全て「０」の場合には（ステップＳ４０６否定）、メモリアクセス群１６１に対して「低消費電力状態」で動作するよう指示する（ステップＳ４０７）。
【０１０３】
かかる指示を受け付けたメモリアクセス群１６１は、「低消費電力状態」で動作する（ステップＳ４０８）。また、実行フラグ１６１ｄ〜１６１ｆが「１」の場合には（ステップＳ４０６肯定）、動作状態切替指示処理部３３２は、メモリアクセス群１６１に対して指示を行わない。
【０１０４】
同様に、ＲＳ−ＡＬＵ３１２若しくはＲＳ−ＦＰＵ３１３の実行可能命令数が「０」の場合には（ステップＳ４０１否定）、動作状態切替指示処理部３３２は、算術論理演算器群１６２の実行フラグ１６２ｄ〜１６２ｆ若しくは浮動小数点演算器群１６３の実行フラグ１６３ｄ〜１６３ｆを取得する。
【０１０５】
取得した実行フラグ１６２ｄ〜１６２ｆ若しくは実行フラグ１６３ｄ〜１６３ｆが全て「０」の場合には（ステップＳ４０６否定）、算術論理演算器群１６２若しくは浮動小数点演算器群１６３に対して「低消費電力状態」で動作するよう指示する（ステップＳ４０７）。
【０１０６】
かかる指示を受け付けた算術論理演算器群１６２若しくは浮動小数点演算器群１６３は、「低消費電力状態」で動作する（ステップＳ４０８）。また、実行フラグ１６２ｄ〜１６２ｆ若しくは実行フラグ１６３ｄ〜１６３ｆが「１」の場合には（ステップＳ４０６肯定）、動作状態切替指示処理部３３２は、算術論理演算器群１６２若しくは浮動小数点演算器群１６３に対して指示を行わない。
【０１０７】
上述してきたように、上記実施例２では、命令検出処理部３３１が発行ビット３１１ｆ〜３１１ｊ、発行ビット３１２ｆ〜３１２ｊ及び発行ビット３１３ｆ〜３１３ｊを取得して実行可能命令数を算出し、動作状態切替指示処理部３３２が算出された実行可能命令数を解析してメモリアクセス群１６１、算術論理演算器群１６２若しくは浮動小数点演算器群１６３の動作モードを変更指示する構成としたので、リザベーションステーションに命令が格納されている場合であっても、その命令が実行可能でなければ対応する演算器が低消費電力状態で動作し、即座に命令を実行する演算器以外の演算器を低消費電力状態で動作させることができ、ひいては効率的にマイクロプロセッサの消費電力を低減することができる。また、閾値管理テーブル３２１を参照して「通常状態」で動作させる演算器の数を変動させる構成としたので、閾値管理テーブル３２１の閾値を変更するだけで低消費電力状態で動作させる演算器数を簡易に変更することができる。
【０１０８】
なお、上記実施例１及び２では、リザベーションステーションに命令が格納されていない場合には、対応する演算器を「低消費電力状態」で動作させる場合を示したが、本発明はこれに限定されるものではなく、リザベーションステーションに命令が格納されていない場合には、対応する演算器に対して電力を供給しないように構成してもよい。これにより、動作しない演算器に対しては微小の電力も供給されないため、マイクロプロセッサの消費電力をより低減することができる。
【０１０９】
また、上記実施例１及び２では、例えば、ＲＳ−ＭＡＵ１５１に命令が格納されると、対応するメモリアクセス群１６１のみを「通常状態」で動作させる場合を示したが、本発明はこれに限定されるものではなく、リザベーションステーションに格納されたある系統の命令に後続して他の系統の命令が格納されることが前もって検出され、かつ、演算器が「通常状態」になってから動作可能になるまでに複数サイクルかかる場合には、最初の演算器が命令を実行している際に、次に命令を実行する演算器に対して「通常状態」で動作させるよう指示する構成としてもよい。これにより、演算器が「通常状態」になってから動作可能になるまでのレイテンシを緩和することができる。なお、この方式は、例えば、コンパイル時に後続する命令の系統に関する情報を先行する命令に設定しておくことにより実現することができる。
【０１１０】
また、本発明は、上記実施例１及び２を組み合わせて構成してもよい。例えば、リザベーションステーションに格納されている命令が実行可能であるか否かを検出し、実行可能な命令が１つでも格納されていれば、リザベーションステーションに対応する演算器群内の全ての演算器を「通常状態」で動作させるよう指示する。
【０１１１】
（付記１）通常状態と低消費電力状態との２種類の動作モードで動作する演算器と該演算器により実行される命令を格納するリザベーションステーションとを対応付けて有するマイクロプロセッサであって、
前記リザベーションステーションに命令が格納されているか否かを検出する命令検出手段と、
前記命令検出手段により前記リザベーションステーションに命令が格納されていないと検出された場合に該リザベーションステーションに対応する前記演算器に対して低消費電力状態で動作するよう指示し、前記命令検出手段により前記リザベーションステーションに命令が格納されていると検出された場合に該リザベーションステーションに対応する前記演算器に対して通常状態で動作するよう指示する動作状態切替指示手段と
を備えたことを特徴するマイクロプロセッサ。
【０１１２】
（付記２）前記動作状態切替指示手段は、前記命令検出手段により前記リザベーションステーションに命令が格納されていないと検出され、かつ、該リザベーションステーションに対応する前記演算器が命令を実行中でない場合に該演算器に対して低消費電力状態で動作するよう指示することを特徴とする付記１に記載のマイクロプロセッサ。
【０１１３】
（付記３）前記動作状態切替指示手段は、前記命令検出手段により前記リザベーションステーションに命令が格納されていないと検出された場合に該リザベーションステーションに対応する前記演算器に対して電力供給を停止するよう指示することを特徴する付記１に記載のマイクロプロセッサ。
【０１１４】
（付記４）前記命令検出手段は、前記リザベーションステーションに命令が格納されているか否かを検出するとともに該命令が実行可能であるか否かを検出し、
前記動作状態切替指示手段は、前記命令検出手段により前記リザベーションステーションに実行可能である命令が格納されていないと検出された場合に該リザベーションステーションに対応する前記演算器に対して低消費電力状態で動作するよう指示し、前記命令検出手段により前記リザベーションステーションに実行可能である命令が格納されていると検出された場合に該リザベーションステーションに対応する前記演算器に対して通常状態で動作するよう指示することを特徴とする付記１に記載のマイクロプロセッサ。
【０１１５】
（付記５）前記リザベーションステーションは、格納される命令を実行するために必要なデータが揃っているか否かを示す発行ビットを有し、
前記命令検出手段は、前記発行ビットに基づいて命令が実行可能であるか否かを検出することを特徴とする付記４に記載のマイクロプロセッサ。
【０１１６】
（付記６）前記マイクロプロセッサは、前記リザベーションステーションと該リザベーションステーションに対応する複数の演算器から構成される演算器群とを対応付けて有し、
前記命令検出手段は、前記リザベーションステーションに格納されている命令数を検出し、
前記動作状態切替指示手段は、前記命令検出手段により検出された前記命令数に基づいて前記リザベーションステーションに対応する前記演算器群の中で通常状態で動作させる演算器数を算出し、該演算器群に対して該演算器数に該当する数の演算器が通常状態で動作するよう指示することを特徴とする付記１に記載のマイクロプロセッサ。
【０１１７】
（付記７）前記リザベーションステーションに格納されている命令数を示す格納命令数と通常状態で動作させる演算器の数を示す通常状態動作演算器数との関係を記憶する閾値管理テーブルをさらに備え、
前記動作状態切替指示手段は、前記閾値管理テーブルから前記命令数に該当する前記通常状態動作演算器数を取得し、前記リザベーションステーションに対応する前記演算器群に対して該通常状態動作演算器数に該当する数の演算器が通常状態で動作するよう指示することを特徴とする付記６に記載のマイクロプロセッサ。
【０１１８】
（付記８）前記閾値管理テーブルは、前記格納命令数と前記通常状態動作演算器数との関係を設定値毎に記憶し、
前記動作状態切替指示手段は、前記設定値に基づいて前記閾値管理テーブルから前記命令数に該当する前記通常状態動作演算器数を取得し、該リザベーションステーションに対応する演算器群に対して該通常状態動作演算器数に該当する数の演算器が通常状態で動作するよう指示することを特徴とする付記７に記載のマイクロプロセッサ。
【０１１９】
（付記９）前記マイクロプロセッサは、前記リザベーションステーションと該リザベーションステーションに対応する演算器との組み合わせを複数有し、
前記命令検出手段は、第１のリザベーションステーションに第１の命令が格納されているか否かを検出するとともに、該第１の命令に後続して第２のリザベーションステーションに第２の命令が格納されることを検出し、
前記動作状態切替指示手段は、前記命令検出手段により前記第１のリザベーションステーションに前記第１の命令が格納されていると検出された場合、該第１のリザベーションステーションに対応する第１の演算器により該第１の命令が実行されている際に前記第２のリザベーションステーションに対応する第２の演算器に対して通常状態で動作するよう指示することを特徴とする付記１に記載のマイクロプロセッサ。
【産業上の利用可能性】
【０１２０】
以上のように、本発明に係るマイクロプロセッサは、省電力で動作するマイクロプロセッサに有用であり、特に、簡易な構成で消費電力を低減し、かつ動作中でも柔軟に電力供給を制御する場合に適する。
【図面の簡単な説明】
【０１２１】
【図１】本実施例１に係るマイクロプロセッサの概要を説明するための説明図である。
【図２】本実施例１に係るマイクロプロセッサの構成を示す機能ブロック図である。
【図３】図２に示したマイクロプロセッサによる動作状態切替処理手順を示すフローチャートである。
【図４】本実施例２に係るマイクロプロセッサの構成を示す機能ブロック図である。
【図５】図４に示した閾値管理テーブルの一例を示す図である。
【図６】図４に示した発行ビットの設定について説明するための説明図である。
【図７】図４に示したマイクロプロセッサによる動作状態切替処理手順を示すフローチャートである。
【符号の説明】
【０１２２】
１０  マイクロプロセッサ
１１  リザベーションステーション
１１ａ〜１１ｅ  エントリ
１２  演算器
１３  動作状態切替制御部
１００、３００  マイクロプロセッサ
１１０  ＢＩＵ
１２０  命令キャッシュ
１３０  命令デコーダ
１４０  データキャッシュ
１５０、３１０  リザベーションステーション
１５１、３１１  ＲＳ−ＭＡＵ
１５１ａ〜１５１ｅ、３１１ａ〜３１１ｅ  エントリ
１５２、３１２  ＲＳ−ＡＬＵ
１５２ａ〜１５２ｅ、３１２ａ〜３１２ｅ  エントリ
１５３、３１３  ＲＳ−ＦＰＵ
１５３ａ〜１５３ｅ、３１３ａ〜３１３ｅ  エントリ
１６０  機能ユニット
１６１  メモリアクセス群
１６１ａ〜１６１ｃ  ＭＡＵ
１６２  算術論理演算器群
１６２ａ〜１６２ｃ  ＡＬＵ
１６３  浮動小数点演算器群
１６３ａ〜１６３ｃ  ＦＰＵ
１６１ｊ、１６２ｊ、１６３ｊ  実行フラグ
１６１ｄ〜１６１ｆ、１６２ｄ〜１６２ｆ、１６３ｄ〜１６３ｆ  実行フラグ
１７０、３３０  動作状態切替制御部
１７１、３３１  命令検出処理部
１７２、３３２  動作状態切替指示処理部
３１１ｆ〜３１１ｊ、３１２ｆ〜３１２ｊ、３１３ｆ〜３１３ｊ  発行ビット
３２０  記憶部
３２１  閾値管理テーブル
ｒ１〜ｒ９  レジスタ
ｙ１〜ｙ９  有効ビット
【図１】
0004978332.tif 000002
【図２】
0004978332.tif 000003
【図３】
0004978332.tif 000004
【図４】
0004978332.tif 000005
【図５】
0004978332.tif 000006
【図６】
0004978332.tif 000007
【図７】
0004978332.tif 000008