(57)【要約】【課題】命令処理停止状態と演算実行状態との消費電力差に伴う電源ノイズの発生を防止できるようにする。【解決手段】クロックを出力するクロック生成回路と、命令を実行する命令実行状態と命令を停止する命令停止状態との間で状態遷移可能な命令実行回路と、第１のクロック抑止指示が入力された場合、内蔵する内部回路へのクロックの印加を抑止する第１の回路と、第２のクロック抑止指示が入力された場合、内蔵する内部回路へのクロックの印加を抑止する第２の回路と、制御回路とを有し、命令実行回路が命令実行状態から命令停止状態に遷移した場合、制御回路が、第１の回路に第１のクロック抑止指示を出力した後に第２の回路に第２のクロック抑止指示を出力するようにして、消費電力が急峻かつ大きく変化することを防止する。【選択図】図２
2013205905.tif 000002
【特許請求の範囲】
【請求項１】
クロックを出力するクロック生成回路と、
命令を実行する命令実行状態と前記命令を停止する命令停止状態との間で状態遷移可能な命令実行回路と、
第１のクロック抑止指示が入力された場合、内蔵する第１の内部回路へのクロックの印加を抑止する第１の回路と、
第２のクロック抑止指示が入力された場合、内蔵する第２の内部回路へのクロックの印加を抑止する第２の回路と、
前記命令実行回路が前記命令実行状態から前記命令停止状態に遷移した場合、前記第１の回路に前記第１のクロック抑止指示を出力した後に前記第２の回路に前記第２のクロック抑止指示を出力する制御回路とを有することを特徴とする演算処理装置。
【請求項２】
前記第１の回路はさらに、
第１のクロック継続指示が入力された場合、前記第１のクロック抑止指示に関わらず前記第１の内部回路へのクロックの印加を継続し、
前記第２の回路はさらに、
第２のクロック継続指示が入力された場合、前記第２のクロック抑止指示に関わらず前記第２の内部回路へのクロックの印加を継続し、
前記制御回路はさらに、
前記命令実行回路が前記命令停止状態から前記命令実行状態に遷移した場合、前記第２の回路に前記第２のクロック継続指示を出力した後に前記第１の回路に前記第１のクロック継続指示を出力することを特徴とする請求項１記載の演算処理装置。
【請求項３】
クロックを出力するクロック生成回路と、命令を実行する命令実行状態と前記命令を停止する命令停止状態との間で状態遷移可能な命令実行回路とを有する演算処理装置の制御方法において、
前記演算処理装置が有する制御回路が、前記命令実行回路が前記命令実行状態から前記命令停止状態に遷移した場合、第１のクロック抑止指示を第１の回路に出力して、前記第１の回路が内蔵する第１の内部回路へのクロックの印加を抑止し、
前記制御回路が、前記第１の回路に前記第１のクロック抑止指示を出力した後に、第２の回路に第２のクロック抑止指示を出力して、前記第２の回路が内蔵する第２の内部回路へのクロックの印加を抑止することを特徴とする演算処理装置の制御方法。
【請求項４】
前記第１の回路はさらに、
第１のクロック継続指示が入力された場合、前記第１のクロック抑止指示に関わらず前記第１の内部回路へのクロックの印加を継続し、
前記第２の回路はさらに、
第２のクロック継続指示が入力された場合、前記第２のクロック抑止指示に関わらず前記第２の内部回路へのクロックの印加を継続し、
前記制御回路はさらに、
前記命令実行回路が前記命令停止状態から前記命令実行状態に遷移した場合、前記第２の回路に前記第２のクロック継続指示を出力した後に前記第１の回路に前記第１のクロック継続指示を出力することを特徴とする請求項３記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
従来から、プロセッサ等の演算処理装置の分野においては、演算処理装置の内部の回路が消費する電力が急峻かつ大きく変化することによって電源電位が変化し、電源ノイズが発生するという問題がある。このような電源ノイズは回路の誤動作の原因となるため、電源ノイズの発生を防止するための技術が提案されている。
例えば、基本周波数の第１クロックパルスの発生回路と基本周波数より高い第２クロックパルスの発生回路を備えるフリップフロップ制御回路が提案されている（特許文献１参照）。フリップフロップの状態を決定する起動信号が発生してから所定時間が経過するまでは第１クロックパルスがフリップフロップに出力され、所定時間が経過した後には第２クロックパルスがフリップフロップに出力されるようにしている。このようにすることで、複数のフリップフロップに供給するクロックパルスを従来よりも低く抑え、電源ノイズの低減を図っている。
【０００３】
また、例えば、クロックのＯＮ／ＯＦＦを制御することで低消費電力モードを実現するＬＳＩ（Large Scale Integrated circuit）において、パワーマネジメント信号を受けてクロックを間引く回路を備えるクロック制御回路が提案されている（特許文献２参照）。低消費電力モードから通常動作モード、あるいはその逆へ移行する際、所定の時間をかけて段階的に周波数を変化させながらクロックを回路ブロックに供給することで、クロックのＯＮ／ＯＦＦに起因する急激な電源電流変化の抑止を図っている。
【０００４】
また、例えば、複数の回路ブロックと電力制御回路を備える半導体集積回路装置において、消費電力変動を小さくする技術が提案されている（特許文献３参照）。電力制御回路が複数の回路ブロックの動作状態（動作又は停止）を決定する際に参照する消費電力の許容値（上限）を記憶する記憶手段を備える。そして、消費電力の許容値を超えないように複数の回路ブロックの動作を決定し、許容値を段階的に変更することで一度に動作可能になる回路ブロック数を抑え、消費電力変動を小さくしている。
【０００５】
最近のプロセッサは、性能を向上させるために、コア（core）内に複数の演算器を備えて複数の命令を並列に実行し、さらにプロセッサ内に複数のコアを搭載してクロックの１サイクル当たりに並列に実行可能な命令数を増やすことができるような構成になっている。プロセッサ内に備える演算器の数やコアの数の増加によって、プロセッサ全体の消費電力は増加している。このようなプロセッサにおいては、プロセッサ内のレジスタファイルやＲＡＭ（Random Access Memory）や演算器等の個々の回路毎に、回路へのクロックの印加を抑止できるクロックゲーティング回路を設けて、従来よりも細かく省電力制御を行うことが一般的である。この省電力制御では、回路にアクセス（リードアクセスやライトアクセス）する必要があるときにのみ回路にクロックを供給し、それ以外のときにはクロックの供給を停止させる。各回路のアクセスタイミングは回路毎に異なるため、各回路が個別にクロック停止条件を制御することで電力の削減が図られている。
【０００６】
また、最近のプロセッサは、省電力のためにコアによる命令処理を一時的に停止状態にするサスペンド命令やスリープ命令を備える。サスペンド命令は、タイマー割込みや外部割り込み等の要因が発生するまでの比較的長い期間にわたって命令処理を停止させる命令である。また、スリープ命令は、他のコアとの同期待ち等の比較的短い期間だけ命令処理を停止させる命令である。サスペンド命令やスリープ命令による命令処理停止中は、演算器が停止状態になるため、演算器内の組み合わせ回路による電力消費がなくなり消費電力が下がる。さらに、命令処理停止中にはＲＡＭやレジスタファイルへのアクセスが行われないため、クロックゲーティングによってクロックの供給を停止され消費電力が下がる。
【０００７】
コアの数の増加及び省電力技術の改善に伴い、プロセッサが演算を実行している状態での消費電力と命令処理停止状態での消費電力との差は大きくなっている。つまり、演算実行状態から命令処理停止状態に遷移する場合、及び命令処理停止状態から演算実行状態に遷移する場合のプロセッサの消費電力の増減も大きくなっている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−１４２５５８号公報
【特許文献２】特開２００４−１３２８０号公報
【特許文献３】特開２００９−１２３２３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
１つの側面では、本発明は、個々に細粒度のクロックゲーティング回路を備える演算処理装置において、命令停止状態と命令実行状態との消費電力差に伴う電源ノイズの発生を防止できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
演算処理装置の一態様は、クロックを出力するクロック生成回路と、命令を実行する命令実行状態と命令を停止する命令停止状態との間で状態遷移可能な命令実行回路と、第１のクロック抑止指示が入力された場合、内蔵する第１の内部回路へのクロックの印加を抑止する第１の回路と、第２のクロック抑止指示が入力された場合、内蔵する第２の内部回路へのクロックの印加を抑止する第２の回路と、制御回路とを有する。制御回路は、命令実行回路が命令実行状態から命令停止状態に遷移した場合、第１の回路に第１のクロック抑止指示を出力した後に第２の回路に第２のクロック抑止指示を出力する。
【発明の効果】
【００１１】
開示の演算処理装置は、命令実行状態から命令停止状態に遷移する場合に、電源ノイズの発生を防止することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態におけるプロセッサの構成例を示す図である。
【図２】本実施形態におけるプロセッサのコアの構成例を示す図である。
【図３】本実施形態における電力制御回路の構成例を示す図である。
【図４】本実施形態におけるクロックゲーティング回路の構成例を示す図である。
【図５】本実施形態における命令制御装置の構成例を示す図である。
【図６】本実施形態における状態遷移時の消費電力の変化を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面に基づいて説明する。
【００１４】
図１は、本発明の一実施形態における演算処理装置としてのプロセッサの構成例を示す図である。本実施形態におけるプロセッサ１０は、複数のコア１１、及び二次キャッシュメモリ（L2（Level-2） cache）１２を有する。本実施形態におけるプロセッサ１０では、複数のコア１１が二次キャッシュメモリ１２を共有している。また、プロセッサ１０には、電源（power supply）１３から電力が供給される。図１においては、１つのプロセッサ１０に対して１つの電源１３を設けた例を示しているが、１つのプロセッサ１０に複数の電源１３、又は複数のプロセッサ１０に１つの電源１３を設ける構成でも良い。
【００１５】
図２は、本実施形態におけるコア１１の構成例を示す図である。コア１１は、電力制御回路（power control circuit）２１、命令制御装置（instruction control unit）２２、分岐履歴記憶部（branch history RAM）２３、一次命令キャッシュメモリ（L1I（Level-1 Instruction） cache RAM）２４、及び一次データキャッシュメモリ（L1D（Level-1 Data） cache RAM）２５を有する。また、コア１１は、レジスタファイル（register file）２６、浮動小数点演算器（floating point unit）２７、固定小数点演算器（fixed point unit）２８、及びアドレス生成器（address generation unit）２９を有する。
【００１６】
電力制御回路２１は、命令制御装置２２からサスペンド状態やスリープ状態への遷移信号Ｓ１を受け取り、分岐履歴記憶部２３、一次命令キャッシュメモリ２４、一次データキャッシュメモリ２５、及びレジスタファイル２６に電力削減抑制指示ＤＰＳ１〜ＤＰＳ４を出力する。また、電力制御回路２１は、命令制御装置２２からサスペンド状態やスリープ状態の解除信号Ｓ１を受け取り、命令制御装置２２に演算器の使用禁止指示Ｓ２を出力する。
【００１７】
命令制御装置２２は、一次命令キャッシュメモリ２４から読み出した命令列を順次実行する。命令制御装置２２は、サスペンド命令やスリープ命令を実行すると、命令に応じてサスペンド状態やスリープ状態に遷移して命令処理を停止し、それを信号Ｓ１により電力制御回路２１に通知する。また、命令制御装置２２は、サスペンド状態やスリープ状態の解除条件（時間又は外部割込み等）の成立を監視する。命令制御装置２２は、サスペンド状態やスリープ状態の解除条件が成立すると、サスペンド状態やスリープ状態を解除して命令処理を再開し、それを信号Ｓ１により電力制御回路２１に通知する。また、命令制御装置２２は、電力制御回路２１から演算器の使用禁止指示Ｓ２を受け取ると、禁止されていない演算器にのみ演算処理を発行するように命令制御を行う。
【００１８】
分岐履歴記憶部２３は、分岐履歴（過去に実行された分岐命令の分岐先アドレスや分岐成否等）を記録するＲＡＭである。分岐履歴記憶部２３は、内蔵する、分岐履歴を記憶するＲＡＭに対するＰＬＬ（Phase Locked Loop）回路（図示せず）からのクロックの印加を抑止するクロックゲーティング回路を備え、分岐履歴の参照や更新を行わない時には、クロックゲーティング回路により当該ＲＡＭへのクロックの供給を抑止することで消費電力を削減する。ただし、分岐履歴記憶部２３は、電力制御回路２１から電力削減抑制指示ＤＰＳ１を受けている間は、分岐履歴の参照や更新を行わないタイミングであってもＲＡＭへのクロックの供給を抑止せずに継続することで消費電力の削減を抑制する。
【００１９】
一次命令キャッシュメモリ２４は、実行する命令を格納するＲＡＭである。一次命令キャッシュメモリ２４は、内蔵する、命令を記憶するＲＡＭセルに対するＰＬＬ回路（図示せず）からのクロックの印加を抑止するクロックゲーティング回路を備え、命令制御装置２２からの命令の読み出し要求、及び、二次キャッシュメモリ１２からの命令の書き込み要求がない時にはＲＡＭへのクロックの供給を抑止することで消費電力を削減する。ただし、一次命令キャッシュメモリ２４は、電力制御回路２１から電力削減抑制指示ＤＰＳ２を受けている間は、一次命令キャッシュメモリ２４の参照や更新を行わないタイミングであってもＲＡＭへのクロックの供給を抑止せずに継続することで消費電力の削減を抑制する。
【００２０】
一次データキャッシュメモリ２５は、命令実行の際に使用するデータを格納するＲＡＭである。一次データキャッシュメモリ２５は、内蔵する、データを記憶するＲＡＭセルに対するＰＬＬ回路（図示せず）からのクロックの印加を抑止するクロックゲーティング回路を備え、命令制御装置２２からのデータの読み出し要求や書き込み要求、及び、二次キャッシュメモリ１２からの各要求（データ読み出し、書き込み、無効化等）がない時にはＲＡＭへのクロックの供給を抑止することで消費電力を削減する。ただし、一次データキャッシュメモリ２５は、電力制御回路２１から電力削減抑制指示ＤＰＳ３を受けている間は、一次データキャッシュメモリ２５の参照や更新を行わないタイミングであってもＲＡＭへのクロックの供給を抑止せずに継続することで消費電力の削減を抑制する。
【００２１】
レジスタファイル２６は、各種演算処理で使用されるデータを保持するレジスタ群である。レジスタファイル２６は、内蔵する、データを保持するフリップフロップに対するＰＬＬ回路（図示せず）からのクロックの印加を抑止するクロックゲーティング回路を備え、浮動小数点演算器２７、固定小数点演算器２８、アドレス生成器２９、一次データキャッシュメモリ２５からのレジスタの読み出し要求や書き込み要求がない時にはレジスタファイル２６へのクロックの供給を抑止することで消費電力を削減する。ただし、レジスタファイル２６は、電力制御回路２１から電力削減抑制指示ＤＰＳ４を受けている間は、レジスタファイル２６の参照や更新を行わないタイミングであってもレジスタファイル２６へのクロックの供給を抑止せずに継続することで消費電力の削減を抑制する。
【００２２】
浮動小数点演算器２７は、浮動小数点演算を行う演算器であり、２つの浮動小数点演算器ＦＬＡ、ＦＬＢを備える。浮動小数点演算器２７での演算において、使用するデータは、レジスタファイル２６から読み出され、演算結果はレジスタファイル２６に書き込まれる。浮動小数点演算器ＦＬＡ及びＦＬＢが完全に同等の機能を持つ必要はないが、浮動小数点演算器ＦＬＢで処理できる演算はすべて浮動小数点演算器ＦＬＡでも処理できるように構成される。電力制御回路２１から浮動小数点演算器ＦＬＡ以外の使用禁止指示Ｓ２（fla only）が出力されている間、命令制御装置２２は、浮動小数点演算器ＦＬＡにのみ浮動小数点演算処理を発行するようになる。したがって、ＦＬＡ以外の使用禁止指示Ｓ２（fla only）が出力されている間は、浮動小数点演算器ＦＬＢでは演算処理が実行されないために消費電力が削減される。
【００２３】
固定小数点演算器２８は、固定小数点演算を行う演算器であり、２つの固定小数点演算器ＥＸＡ、ＥＸＢを備える。固定小数点演算器２８での演算において、使用するデータは、レジスタファイル２６から読み出され、演算結果はレジスタファイル２６に書き込まれる。固定小数点演算器ＥＸＡ及びＥＸＢが完全に同等の機能を持つ必要はないが、固定小数点演算器ＥＸＢで処理できる演算はすべて固定小数点演算器ＥＸＡでも処理できるように構成される。電力制御回路２１から固定小数点演算器ＥＸＡ以外の使用禁止指示Ｓ２（exa only）が出力されている間、命令制御装置２２は、固定小数点演算器ＥＸＡにのみ固定小数点演算処理を発行するようになる。したがって、ＥＸＡ以外の使用禁止指示Ｓ２（exa only）が出力されている間は、固定小数点演算器ＥＸＢでは演算処理が実行されないために消費電力が削減される。
【００２４】
アドレス生成器２９は、ロード命令やストア命令についてロード対象やストア対象のメモリアクセスを行うデータのアドレス計算を行う回路であり、２つのアドレス生成器ＥＡＧＡ、ＥＡＧＢを備える。アドレス生成器２９でのアドレス計算において、使用するデータは、レジスタファイル２６から読み出され、アドレス生成器２９で生成されたアドレスが一次データキャッシュメモリ２５に通知される。ロード命令の実行時には一次データキャッシュメモリ２５から読み出されたデータがレジスタファイル２６に書き込まれ、ストア命令の実行時にはレジスタファイル２６から読み出されたデータが一次データキャッシュメモリ２５に書き込まれる。アドレス生成器ＥＡＧＡ２９Ａ及びＥＡＧＢ２９Ｂが完全に同等の機能を持つ必要はないが、アドレス生成器ＥＡＧＢ２９Ｂで処理できるロード／ストアはすべてアドレス生成器ＥＡＧＡ２９Ａでも処理できるように構成される。電力制御回路２１からアドレス生成器ＥＡＧＡ以外の使用禁止指示Ｓ２（eaga only）が出力されている間、命令制御装置２２は、アドレス生成器ＥＡＧＡ２９Ａにのみロード／ストア用のアドレス生成処理を発行するようになる。したがって、ＥＡＧＡ２９Ａ以外の使用禁止指示Ｓ２（eaga only）が出力されている間は、アドレス生成器ＥＡＧＢ２９Ｂではアドレス生成処理が実行されないために消費電力が削減される。
【００２５】
図３は、本実施形態における電力制御回路２１の構成例を示す図である。電力制御回路２１は、サスペンド状態やスリープ状態に遷移した後の時間を計測するタイマー回路Ａ（timerA）３１、サスペンド状態やスリープ状態解除後の時間を計測するタイマー回路Ｂ（timerB）３４、及びタイマー回路の値と閾値（threshold）３３、３６を比較する比較回路（comparator）３２、３５を備える。
【００２６】
タイマー回路Ａ３１は、サスペンド状態やスリープ状態以外の状態では保持する値が０になり、サスペンド状態やスリープ状態では保持する値をカウントアップする。タイマー回路Ａ３１の値と閾値３３との比較を行う比較回路３２は２つ以上を備える。図３に示す例では、比較回路３２−１〜３２−４の４つを備え、タイマー回路Ａ３１の値が閾値３３よりも小さい場合に、電力削減抑制指示ＤＰＳ１〜ＤＰＳ４を出力する。
【００２７】
タイマー回路Ｂ３４は、サスペンド状態やスリープ状態では保持する値が０になり、サスペンド状態やスリープ状態以外の状態では保持する値をカウントアップする。タイマー回路Ｂ３４の値と閾値３６との比較を行う比較回路３５は２つ以上を備える。図３に示す例では、比較回路３５−１〜３５−３の３つを備え、タイマー回路Ｂ３４の値が閾値３６よりも小さい間は、演算器の使用禁止指示Ｓ２−１（exa only）、Ｓ２−２（fla only）、Ｓ２−３（eaga only）を出力する。
【００２８】
タイマー回路Ａ３１、Ｂ３４は、ラップアラウンド（wrap around）は発生し、タイマーが保持する値が計数できる最大値を超えて０に戻ることがないように、タイマーの最大値になったらカウントアップを停止するか、或いは、複数存在する閾値の最大値を超えたらカウントアップを停止するようにする。ここで、閾値３３、３６は、０からタイマー最大値までの任意の値を設定できるようなレジスタで構成され、値の設定はＩ２Ｃ（Inter-Integrated Circuit）又はＪＴＡＧ（Joint Test Architecture Group）等によるスキャン制御を用いてハードウェア又はファームウェアから行えるようにする。
【００２９】
タイマー回路Ｂ３４の値と比較する閾値３６は、サスペンド状態の解除後の性能低下が少なくなるように、サスペンド状態の解除後に使用される可能性が高い演算器から順番に演算器の使用禁止指示が解除されるように、閾値の値を設定することが望ましい。サスペンド状態が解除された後は、タイマー割り込み又は外部割り込み処理用の命令列が実行され、この処理にはロード命令やストア命令と固定小数点演算命令が主に含まれる。一方、この処理には浮動小数点演算命令はほとんど含まれない。このため、演算器の使用禁止指示の解除順序が、例えばアドレス生成器ＥＡＧＡ→固定小数点演算器ＥＸＡ→浮動小数点演算器ＦＬＡとなるように、各閾値を閾値３６−３≦閾値３６−１≦閾値３６−２の関係が成立するように設定しておくことで処理性能の低下を避けることができる。例えば、タイマー回路Ｂ３４がサスペンド状態の解除から５０μｓを計測できるような構成の場合には、使用禁止指示Ｓ２−３（eaga only）の出力用の閾値３６−３を１０μｓ、使用禁止指示Ｓ２−１（exa only）の出力用の閾値３６−１を２０μｓ、使用禁止指示Ｓ２−２（fla only）の出力用の閾値３６−２を３０μｓと設定しておくことで処理性能低下をさけつつ電源ノイズを削減することができる。なお、演算器の使用禁止指示の解除順序を固定小数点演算器ＥＸＡ→アドレス生成器ＥＡＧＡ→浮動小数点演算器ＦＬＡとしても良い。また、演算器の使用禁止指示の解除順序は前述のような固定順序でも良いが、動的に順序を変更するように構成しても良い。例えば、サスペンド命令の実行直前に使用されていた演算器を記憶しておき、サスペンド状態の解除後には記憶されていた演算器から順番に使用禁止指示を解除するようにしても良い。
【００３０】
図４は、分岐履歴記憶部２３、一次命令キャッシュメモリ２４、一次データキャッシュメモリ２５、及びレジスタファイル２６が有する本実施形態におけるクロックゲーティング回路の構成例を示す図である。本実施形態におけるクロックゲーティング回路は、論理和演算回路（ＯＲ回路）４１及び論理積演算回路（ＡＮＤ回路）４２を有する。ＯＲ回路４１は、クロックの供給を許可するクロックイネーブル信号ＣＬＫＥＮ及び電力削減抑制指示信号ＤＰＳが入力され、その論理和演算結果を出力する。ＡＮＤ回路４２は、ＯＲ回路４１の論理和演算結果の出力及びＰＬＬ回路からクロックを伝播するクロックツリー（図示せず）を経由してクロック信号ＣＬＫが入力され、論理和演算結果が１である場合に論理積演算結果としてゲーテドクロック信号ＧＣＬＫを出力する。ゲーテドクロック信号ＧＣＬＫは、分岐履歴記憶部２３内部のＲＡＭ、一次命令キャッシュメモリ２４や一次データキャッシュメモリ２５内部のＲＡＭセルやレジスタファイル内部のフリップフロップに供給される。図４に示すクロックゲーティング回路では、電力削減抑制指示信号ＤＰＳが１のときには、クロックイネーブル信号ＣＬＫＥＮにかかわらずゲーテドクロックＧＣＬＫが抑止されないため、消費電力の削減が抑制される。なお、クロックイネーブル信号ＣＬＫＥＮは各ＲＡＭやレジスタファイルの参照や更新を行う時にのみイネーブル状態（例えば１の値）になるように制御される。
【００３１】
図５は、本実施形態における命令制御装置２２の構成例を示す図である。命令制御装置２２は、命令バッファ（instruction buffer）５１、命令デコーダ（instruction decoder）５２、固定小数点演算用リザベーションステーション（ＲＳＥ）５３、浮動小数点演算用リザベーションステーション（ＲＳＦ）５４、アドレス生成用リザベーションステーション（ＲＳＡ）５５を有する。命令バッファ５１は、一次命令キャッシュメモリ２４から読み出した命令を格納し、命令デコーダ５２に命令を供給する。
【００３２】
命令デコーダ５２は、命令バッファ５１から供給された命令をデコードし、命令種別に応じてＲＳＥ５３、ＲＳＦ５４、ＲＳＡ５５に命令を発行する。命令デコーダ５２は、電力制御回路２１から固定小数点演算器ＥＸＡ２８Ａ以外の使用禁止指示Ｓ２−１（exa only）を受けている状態で固定小数点演算命令をデコードした場合、ＲＳＥ５３にはＥＸＡ２８Ａ以外の使用禁止指示Ｓ５１を付けて命令を発行する。また、命令デコーダ５２は、電力制御回路２１から浮動小数点演算器ＦＬＡ２７Ａ以外の使用禁止指示Ｓ２−２（fla only）を受けている状態で浮動小数点演算命令をデコードした場合、ＲＳＦ５４にはＦＬＡ２７Ａ以外の使用禁止指示Ｓ５２を付けて命令を発行する。また、命令デコーダ５２は、電力制御回路２１からアドレス生成器ＥＡＧＡ２９Ａ以外の使用禁止指示Ｓ２−３（eaga only）を受けている状態でロード命令やストア命令をデコードした場合、ＲＳＡ５５にはＥＡＧＡ２９Ａ以外の使用禁止指示Ｓ５３を付けて命令を発行する。
【００３３】
ＲＳＥ５３は、命令デコーダ５２から固定小数点演算命令を受け取り、演算処理に必要なデータが揃うのを待ち合わせてから、固定小数点演算器ＥＸＡ２８Ａ、ＥＸＢ２８Ｂの何れかに命令及びデータを投入する。ＥＸＡ２８Ａ以外の使用禁止指示Ｓ５１付きの命令である場合には、ＲＳＥ５３は、固定小数点演算器ＥＸＡ２８Ａにのみ命令及びデータを投入する。
【００３４】
ＲＳＦ５４は、命令デコーダ５２から浮動小数点演算命令を受け取り、演算処理に必要なデータが揃うのを待ち合わせてから、浮動小数点演算器ＦＬＡ２７Ａ、ＦＬＢ２７Ｂの何れかに命令及びデータを投入する。ＦＬＡ２７Ａ以外の使用禁止指示Ｓ５２付きの命令である場合には、ＲＳＦ５４は、浮動小数点演算器ＦＬＡ２７Ａにのみ命令及びデータを投入する。
【００３５】
ＲＳＡ５５は、命令デコーダ５２からロード命令やストア命令を受け取り、ロードアドレス計算やストアアドレス計算に必要なデータが揃うのを待ち合わせてから、アドレス生成器ＥＡＧＡ２９Ａ、ＥＡＧＢ２９Ｂの何れかに命令及びデータを投入する。ＥＡＧＡ２９Ａ以外の使用禁止指示Ｓ５３付きの命令である場合には、ＲＳＡ５５は、アドレス生成器ＥＡＧＡ２９Ａにのみ命令及びデータを投入する。
【００３６】
本実施形態におけるプロセッサにおいて、演算実行状態から命令処理停止状態に遷移し、その後に命令処理停止状態から演算実行状態に遷移したときの消費電力の変化を図６に示す。なお、図６においては、分岐履歴記憶部２３→一次命令キャッシュメモリ２４→一次データキャッシュメモリ２５→レジスタファイル２６の順に電力削減抑制指示を解除し、アドレス生成器２９→固定小数点演算器２８→浮動小数点演算器２７の順に使用禁止指示を解除する例を示している。
【００３７】
時刻ｔ１において、サスペンド命令やスリープ命令によりプロセッサ１０が演算実行状態から命令処理停止状態に移行すると、まず分岐履歴記憶部２３、一次命令キャッシュメモリ２４、一次データキャッシュメモリ２５、レジスタファイル２６以外の電力削減可能な回路ブロックでのクロックの供給が停止され消費電力が減少する（時刻ｔ１〜ｔ２）。次に、時刻ｔ３において、電力削減抑制指示ＤＰＳ１が解除されると、分岐履歴記憶部２３でのＲＡＭへのクロックの供給が抑止される。次に、時刻ｔ４において、電力削減抑制指示ＤＰＳ２が解除されると、一次命令キャッシュメモリ２４内部のＲＡＭセルへのクロックの供給が抑止される。次に、時刻ｔ５において、電力削減抑制指示ＤＰＳ３が解除されると、一次データキャッシュメモリ２５内部のＲＡＭセルへのクロックの供給が抑止される。次に、時刻ｔ６において、電力削減抑制指示ＤＰＳ４が解除されると、レジスタファイル２６でのクロックの供給が抑止される。このようにして、演算実行状態から命令処理停止状態に遷移する場合には、分岐履歴記憶部２３→一次命令キャッシュメモリ２４→一次データキャッシュメモリ２５→レジスタファイル２６の順にクロックの供給を停止することで、消費電力が急峻かつ大きく変化することを防止し、電源ノイズの発生を防止することができる。
【００３８】
また、時刻ｔ７において、プロセッサ１０が命令処理停止状態から演算実行状態に移行すると、アドレス生成器２９ではアドレス生成器ＥＡＧＡ２９Ａ、固定小数点演算器２８では固定小数点演算器ＥＸＡ２８Ａ、浮動小数点演算器２７では浮動小数点演算器ＦＬＡ２７Ａ以外の演算器の使用が禁止される。次に、時刻ｔ８において、ＥＡＧＡ２９Ａ以外の使用禁止指示Ｓ２−３が解除されると、アドレス生成器２９のすべてアドレス生成器の使用が可能になる。次に、時刻ｔ９において、ＥＸＡ２８Ａ以外の使用禁止指示Ｓ２−１が解除されると、固定小数点演算器２８のすべて演算器の使用が可能になる。次に、時刻ｔ１０において、ＦＬＡ２７Ａ以外の使用禁止指示Ｓ２−２が解除されると、浮動小数点演算器２７のすべて演算器の使用が可能になる。このようにして、命令処理停止状態から演算実行状態に遷移する場合には、順に各演算器の使用を可能にすることで、消費電力が急峻かつ大きく変化することを防止し、電源ノイズの発生を防止することができる。
【００３９】
以上のように、本実施形態によれば、演算実行状態から命令処理停止状態に遷移する場合は、電力制御回路２１から電力削減抑制指示ＤＰＳ１〜ＤＰＳ４が出力され、これが１になっている間はレジスタやＲＡＭに対するクロックゲーティングが抑止されてレジスタやＲＡＭにクロックが供給されるため、消費電力の低下幅を従来よりも小さくすることができる。また、タイマー回路Ａ３１の値と閾値３３の比較によって電力削減抑制指示ＤＰＳ１〜ＤＰＳ４を出す対象を段階的に削減することで、大幅な電力変動を伴わずに段階的に電力低下を行うことができる。すべての電力削減抑制指示ＤＰＳ１〜ＤＰＳ４が出なくなると消費電力が最少の状態になるため、最少の消費電力は従来と同等にすることができる。
【００４０】
また、命令処理停止状態から演算実行状態に遷移する場合には、電力制御回路２１から一部の演算器に対する使用禁止指示Ｓ２を出力することで、消費電力の大きい演算器の一部が使用されない状態になる。そのため、プロセッサの消費電力が最大になることはなく、消費電力の上昇幅を従来よりも小さくすることができる。タイマー回路Ｂ３４の値と閾値３６の比較によって、命令処理停止状態後に使用される可能性が高い演算器から順番に使用禁止指示を段階的に解除することで、性能低下を避けながら大幅な電力変動を伴わずに段階的に電力上昇を行うことができる。演算器に対する使用禁止指示Ｓ２がすべて出力されなくなるとすべての演算器が使用可能になるため、最大性能は従来と同等にすることができる。
【００４１】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４２】
１０  プロセッサ
１１  コア
２１  電力制御回路
２２  命令制御装置
２３  分岐履歴記憶部
２４  一次命令キャッシュメモリ
２５  一次データキャッシュメモリ
２６  レジスタファイル
２７  浮動小数点演算器
２８  固定小数点演算器
２９  アドレス生成器
【図１】
2013205905.tif 000003
【図２】
2013205905.tif 000004
【図３】
2013205905.tif 000005
【図４】
2013205905.tif 000006
【図５】
2013205905.tif 000007
【図６】
2013205905.tif 000008