(57)【要約】【課題】  マイクロプロセッサの消費電力を効率的に管理する装置と方法を提供する。【解決手段】  マイクロプロセッサ１００は論理回路１１２、１２１、１２３を備えている。前記論理回路には選択装置１５０が接続されている。前記選択装置は被格納論理値に基づいて前記論理回路のオン／オフ状態のスイッチングを実現する。前記マイクロプロセッサの命令シーケンスに従い前記論理回路の被予測使用率に基づいて前記論理回路のオン／オフ状態を制御するように前記被格納論理値をセットするプログラム命令を備えている。
2005523510.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサであって、
少なくとも１つの論理回路と、
前記少なくとも１つの論理回路に接続された選択装置であって、前記選択装置は被格納論理値に基づいて前記少なくとも１つの論理回路のオン／オフ状態のスイッチングを実現する、選択装置と、
前記マイクロプロセッサの命令シーケンスに従い前記少なくとも１つの論理回路の被予測使用率に基づいて前記少なくとも１つの論理回路のオン／オフ状態を制御するように前記被格納論理値をセットするプログラム命令と
を備えた
マイクロプロセッサ。
【請求項２】
前記選択装置は電圧源からオン状態にある前記少なくとも１つの論理回路の電力線への接続を実現するスイッチを備えている、
請求項１に記載のマイクロプロセッサ。
【請求項３】
前記選択装置は接地からオン状態にある前記少なくとも１つの論理回路の電力線への接続を実現するスイッチを備えている、
請求項１に記載のマイクロプロセッサ。
【請求項４】
さらに、
前記被格納論理値を格納する、前記選択装置に接続されたレジスタ
を備えた、
請求項１に記載のマイクロプロセッサ。
【請求項５】
前記レジスタは数命令サイクルの後に更新される、
請求項４に記載のマイクロプロセッサ。
【請求項６】
さらに、
命令シーケンスと前記少なくとも１つの論理回路が必要とする付随リソースとを含む入力テーブル
を備え、
前記被予測使用率は前記入力テーブルに従って決められる、
請求項１に記載のマイクロプロセッサ。
【請求項７】
前記少なくとも１つの論理回路の前記被予測使用率は数命令サイクル後における前記少なくとも１つの論理装置の使用率を含んでいる、
請求項１に記載のマイクロプロセッサ。
【請求項８】
さらに、
前記少なくとも１つの論理装置の電力節減用オン／オフ状態に対応する論理状態を含む出力テーブル
を備え、
前記プログラム命令は前記電力節減用オン／オフ状態に従って前記少なくとも１つの論理回路を制御しうるように前記被格納論理値をセットする、
請求項１に記載のマイクロプロセッサ。
【請求項９】
機能グループ群に分割された複数の論理回路と、
前記機能グループ群の各々に接続された選択装置であって、各選択装置はレジスタに格納された論理値に基づいて対応する機能グループのオン／オフ状態のスイッチングを実現する、選択装置と、
前記機能グループ群のオン／オフ状態を制御する前記論理値を前記レジスタにセットするプログラム命令と、
前記機能グループ群の各々の使用率を予測する命令シーケンスに基づいて前記レジスタにセットすべき前記論理値を生成するコンパイラ・プログラムと
を備えた
マイクロプロセッサ。
【請求項１０】
前記選択装置は各々、電圧源からオン状態にある機能グループの電力線への接続を実現するスイッチを備えている、
請求項９に記載のマイクロプロセッサ。
【請求項１１】
前記選択装置は各々、接地からオン状態にある機能グループの電力線への接続を実現するスイッチを備えている、
請求項９に記載のマイクロプロセッサ。
【請求項１２】
前記レジスタは各機能グループごとに１つの記憶場所を備えている、
請求項９に記載のマイクロプロセッサ。
【請求項１３】
前記レジスタは数命令サイクルの後に更新される、
請求項９に記載のマイクロプロセッサ。
【請求項１４】
さらに、
前記コンパイラ・プログラムが生成するとともに、命令シーケンスと前記機能グループ群の各々が必要とする付随リソースとを含む入力テーブル
を備え、
前記機能グループ群の前記使用率は前記入力テーブルに従って決められる、
請求項９に記載のマイクロプロセッサ。
【請求項１５】
前記機能グループ群の前記使用率は数命令サイクル後における前記機能グループ群の使用率を含んでいる、
請求項９に記載のマイクロプロセッサ。
【請求項１６】
さらに、
前記機能グループ群の電力節減用オン／オフ状態に対応する論理状態を含む出力テーブル
を備えた、
請求項９に記載のマイクロプロセッサ。
【請求項１７】
マイクロプロセッサ中の論理回路への電力を管理する組み込み命令シーケンスを生成する方法であって、
前記マイクロプロセッサ用の機能プログラムを制御する命令シーケンスを生成するステップと、
前記命令シーケンスを解析して各命令サイクルにおいて前記論理回路のうちどれが活動状態にあるかを判断するステップと、
前記機能プログラムの各命令サイクルごとに、各論理回路が現在の命令サイクルの後に静止状態になる命令サイクルの数とある値とを比較するステップと、
比較する前記ステップに基づいて前記論理回路の各々をオンまたはオフにする命令シーケンスを挿入するステップと
を備えた
方法。
【請求項１８】
命令シーケンスを挿入する前記ステップが、
論理値群を用いてレジスタをプログラムするステップ
を含み、
前記論理値群に基づいて前記論理回路の各々をオンまたはオフにする、
請求項１７に記載の方法。
【請求項１９】
比較する前記ステップの前記値は前記論理回路におけるすべての電力節減を実現しうるように決められた数を含んでいる、
請求項１７に記載の方法。
【請求項２０】
請求項１７に記載の方法ステップ群を実行するマシン実行可能な命令群から成るプログラムを有形的に記録したマシン読み取り可能プログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサ型ディジタル集積回路の電力管理に関し、特に電力管理情報をコンパイラが生成する命令群中に組み込むことによりプロセッサ部の電力を動的に管理する装置と方法に関する。
【背景技術】
【０００２】
プロセッサの動的電力管理は２つの一般的なカテゴリに分けることができる。すなわち、クロック・ゲーティングを用いたサイクルごとの管理と、ソフトウェアを電力節減モードに設定することによる長期管理とである。クロック・ゲーティングはある機能を現在のクロック・サイクルの間に使用すべきか否かを解析する論理回路に基づいており、否の場合に当該機能が使用する論理回路部へのクロックを遮断するものである。このプロセスでは、クロック駆動する論理回路における電力を節減するために解析論理回路において電力を消費している。また、クロック駆動されている論理回路は能動状態にあるから、クロックが遮断されているサイクルの間に除去されるのは電力消費の動的要素だけである。しかし、漏れ要素すなわち静的要素も除去するのが望ましい。長期の電力節減には電力節減モードが使用されるが、当該モードを呼び出すため、および通常動作へ復帰するためにオーバヘッドが必要である。
【０００３】
米国特許第４９８０８３６号（「コンピュータ・システムの電力消費を低減させる装置（APPARATUS FOR REDUCING COMPUTER SYSTEM POWER CONSUMPTION）」）には、個別のプロセッサとＩ／Ｏコントローラが各々、低電力モードを備え、オペレーティング・システムが各装置の電力使用量を動的にモニタし、ある装置が不使用であることを検出したら当該装置を停止させる、ソフトウェア制御の電力節減モードの一般的な方法が教示されている。低電力モードの実現は従来、電源電圧を生成する調整器を制御して電力消費の動的要素と静的要素を除去することにより行なっている。現在技術のこのグローバル・モードによる方法にはいくつかの弱点がある。すなわち、この方法ではオペレーティング・システムがアクティビティをモニタすることが必要であるが、それにはいくらかの電力消費を伴う。また、この方法では将来のアクティビティを予測することができない。さらに、装置は多数回オン、オフするから、実際に節減される電力は少ない。
【０００４】
米国特許第５７８１０６２号（「半導体集積回路（SEMICONDUCTOR INTEGRATED CIRCUIT）」）には、仮想Ｖｄｄと仮想接地を生成するＭＴＣＭＯＳ（multi-threshold complementary metal oxide semiconductor)構造体を備えた論理回路が、グローバル電力節減信号（たとえば「待機制御信号（Standby Control Signal）」）によって制御するヘッダ／フッタ・スイッチ構造体を備えることが教示されている。米国特許第５７８１０６２号には電力を節減し管理するための２つのモードが教示されている。第１のモードでは、待機期間中、ヘッダ／フッタ・スイッチ装置は論理回路における情報の損失を避けるため周期的に導通／非導通を繰り返して仮想Ｖｄｄと仮想接地に漏れ電力を供給する。第２のモードでは、待機期間中に周期的な導通期間を設けない。この結果、漏れ電力をなくすことにより節減する電力を増大させることができるが、仮想Ｖｄｄ線を放電させる必要がある（仮想Ｖｄｄ線は開始から能動期間までＶｄｄに充電しなおす必要がある）。この方法で仮想Ｖｄｄと仮想接地をオフにして節減しうる電力は、多数回呼び出す場合にはサイクルごとクロック・ゲーティングよりも多くなるだけである。この技術にはオフになっている論理回路部が将来における数サイクルの間に使用されることがないということを確認する手段が教示されていない。したがって、従来技術において明示的にプログラムされているグローバル・モードはヘッダ／フッタ・スイッチを制御するのに利用しうる手段のみである。
【０００５】
ＣＭＯＳ論理回路における電力消費には２つの要素、すなわち能動電力と静的電力すなわち漏れ電力とがある。能動電力は回路がスイッチングするときに消費され、静的電力すなわち漏れ電力は論理回路にＶｄｄと接地が印加されているときに消費される。能動電力の既存の電力管理は論理回路が不使用のときにサイクルごとにクロックをオフにするクロック・ゲーティングに基づいている。
【０００６】
図１を参照する。図１は静的ＣＭＯＳ論理回路１２の漏れ電力を制御するのに使用するＭＴＣＭＯＳ構造体を示す図である。ＳＬＥＥＰ信号がアクティブのとき、Ｖｄｄと接地はトランジスタ１１、１３によって論理回路の残部から切断されるから、漏れ電力は消費されない。従来、ＳＬＥＥＰモードの電界効果トランジスタ（ＦＥＴ）１１、１３のしきい値は漏れ電力が最小になるのを保証するために残りの論理ＦＥＴよりも高く形成している。この手法には２つの難点がある。第１は性能を低下させないためにスリープ・モードのＦＥＴのサイジングがきわめて重要であるという点である。第２はＶｄｄまたは接地を切断すると、論理回路が蓄積済みの電荷、したがって以前に格納した状態のすべての記憶を徐々に失うという点である。電力が復旧したら、論理回路の放電済みのすべてのノードを再充電する必要があるから、電力を消費する。したがって、実際に電力の節減を実行するためには、ＳＬＥＥＰモード制御を数サイクルにわたって呼び出す必要がある。
【０００７】
プロセッサの論理回路が将来においていつ使用されるのかを予測することは困難であるから、従来技術ではオペレーティング・システムのグローバル制御に頼ってＭＴＣＭＯＳ構造体のＳＬＥＥＰモードを制御している。次に、図２を参照する。図２はそのような制御構造を備えたプロセッサ２２を示す図である。プロセッサ２２は仮想Ｖｄｄと仮想接地によって電力を供給されている。仮想Ｖｄｄと仮想接地は（常時、電力が供給されている）スリープ・モード・ラッチ２４の状態に基づいて生成される制御信号ＳＬＥＥＰを使用しＦＥＴ２１、２３によって制御している。このスリープ・モード・ラッチ２４はプロセッサ２２がセット信号２５によってセットする。セット信号２５はなすべき仕事が残っていないときにプログラム済みのオペレーションによってプロセッサがアサートする。オペレーティング・システムのカーネルはセット信号２５をアサートする前にオペレーションを復旧させるのに必要な、プロセッサ２２の状態を何らかの不揮発性記憶装置（図示せず）に保存する必要がある。スリープ・モード・ラッチ２４のリセット端子にはオペレーションを復旧させるための何らかの外部イベント２６が接続されている。これは一部のコンピュータで使用されている電力調整器遮断機能を備えた「サスペンド」モードと概念的に同一である。
【特許文献１】米国特許第４９８０８３６号
【特許文献２】米国特許第５７８１０６２号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、ディジタル集積回路においてより効率的に電力を管理する装置と方法が求められている。また、特定のハードウェア構造体の将来における使用予測に基づくプロセッサの電力管理が求められている。
【課題を解決するための手段】
【０００９】
マイクロプロセッサは論理回路（circuit)を備えている。前記論理回路には選択装置が接続されている。前記選択装置は被格納論理値に基づいて前記論理回路のオン／オフ状態のスイッチングを実現する。前記マイクロプロセッサの命令シーケンスに従い前記論理回路の被予測使用率に基づいて前記論理回路のオン／オフ状態を制御するように前記被格納論理値をセットするプログラム命令を備えている。
【００１０】
他の実例では、前記選択装置は電圧源からオン状態にある前記少なくとも１つの論理回路の電力線への接続を実現するスイッチを備えることができる。前記選択装置は接地からオン状態にある前記少なくとも１つの論理回路の電力線への接続を実現するスイッチを備えることができる。マイクロプロセッサは前記被格納論理値を格納する、前記選択装置に接続されたレジスタを備えることができる。前記レジスタは数命令サイクルの後に更新される。命令シーケンスと前記論理ユニット（unit）が必要とする付随リソースとを含む入力テーブルを備えることができる。前記被予測使用率は前記入力テーブルに従って決められる。
【００１１】
さらに他の実例では、前記論理ユニットの前記被予測使用率は数命令サイクル後における前記論理装置（device）の使用率を含むことができる。前記マイクロプロセッサは前記論理装置の電力節減用オン／オフ状態に対応する論理状態を含む出力テーブルを備えることができる。前記プログラム命令は前記電力節減用オン／オフ状態に従って前記論理回路を制御しうるように前記被格納論理値をセットすることができる。
【００１２】
本発明の別のマイクロプロセッサは機能グループ群に分割された複数の論理回路を備えている。前記機能グループ群の各々には選択装置が接続されている。各選択装置はレジスタに格納された論理値に基づいて対応する機能グループのオン／オフ状態のスイッチングを実現する。プログラム命令が、前記機能グループ群のオン／オフ状態を制御する前記論理値を前記レジスタにセットする。コンパイラ・プログラムが、前記機能グループ群の各々の使用率を予測する命令シーケンスに基づいて前記レジスタにセットすべき前記論理値を生成する。
【００１３】
前記選択装置は各々、電圧源からオン状態にある機能グループの電力線への接続を実現するスイッチ、または接地からオン状態にある機能グループの電力線への接続を実現するスイッチを備えることができる。前記レジスタは各機能グループごとに１つの記憶場所を備えることができる。前記レジスタは数命令サイクルの後に更新されるのが望ましい。前記マイクロプロセッサは前記コンパイラ・プログラムが生成するとともに、命令シーケンスと前記機能グループ群の各々が必要とする付随リソースとを含む入力テーブルを備えることができる。前記機能グループ群の前記使用率は前記入力テーブルに従って決められる。前記機能グループ群の前記使用率は数命令サイクル後における前記機能グループ群の使用率を含むことができる。前記マイクロプロセッサは前記機能グループ群の電力節減用オン／オフ状態に対応する論理状態を含む出力テーブルを備えることができる。
【００１４】
本発明に従いマイクロプロセッサ中の論理回路への電力を管理する組み込み命令シーケンスを生成する方法は前記マイクロプロセッサ用の機能プログラムを制御する命令シーケンスを生成する。前記命令シーケンスを解析して各命令サイクルにおいて前記論理回路のうちどれが活動状態にあるかを判断する。前記機能プログラムの各命令サイクルごとに、各論理回路が現在の命令サイクルの後に静止状態になる命令サイクルの数とある値とを比較する。前記比較に基づいて前記論理回路の各々をオンまたはオフにする命令シーケンスを挿入する。
【００１５】
他の方法において、命令シーケンスを挿入する前記ステップは論理値群を用いてレジスタをプログラムするステップを含むことができる。そして、前記論理値群に基づいて前記論理回路の各々をオンまたはオフにする。前記比較の前記値は前記論理回路におけるすべての電力節減を実現しうるように決められた数を含むことができる。ここに記載した方法を実行するマシン実行可能な命令群から成るプログラムを有形的に記録したマシン読み取り可能なプログラム記録媒体を提供することができる。
【発明を実施するための最良の形態】
【００１６】
本発明はマイクロプロセッサのヘッダ／フッタ装置を制御するものである。上記マイクロプロセッサはＭＴＣＭＯＳ（multi-threshold complementary metal oxide semiconductor)構造を用いたディジタル集積回路であるのが望ましいけれども、他の電界効果トランジスタ装置または他の種類の構造を用いてもよい。制御対象の論理回路は将来における数サイクルの間、使用されないという予測に基づいて、所定のヘッダ／フッタ装置をオフにする。特定の装置が必要になるという予測は記憶装置、監視（lookout)テーブル、またはコンパイラが出す命令シーケンスから抽出する。次いで、特定の装置が必要になるというこの予測を用いてヘッダ／フッタ・スイッチをオンまたはオフにする。これらのスイッチにはＣＭＯＳ  ＦＥＴ、または他の任意のスイッチング装置を用いることができる。
【００１７】
一実施形態では、ある装置を使用するという予測はプロセッサ用の命令群を生成し、それらをその実行中に使用する命令群のテキストに関連付けるときにコンパイラによって抽出することができる。特に有用な一実施形態では、マイクロプロセッサの論理装置／論理回路をたとえば自身のヘッダ／フッタ・スイッチによって個別に管理することのできる複数の電力管理領域に細分化する方法を用いている。上記複数の電力管理領域に対する電力を個別に管理する命令群を生成することができる。
【００１８】
本発明の一側面は複数の独立した論理回路グループに分割されたマイクロプロセッサ型のディジタル集積回路を提供するものである。上記ディジタル集積回路は各々、たとえばヘッダ／フッタ・スイッチを独立して制御しうるＭＴＣＭＯＳ構造を有するとともに、マイクロプロセッサの命令セット・アーキテクチャ中にヘッダ／フッタ・スイッチの状態をプログラム制御するのを可能にする命令群を備えている。マイクロプロセッサ用のプログラムを構成する命令シーケンスはコンパイラ・プログラムによって生成する。ただし、上記コンパイラ・プログラムには機能によって分割した論理回路の各部と電力節減を実行するためにヘッダ／フッタを開放しておく必要のある最小時間とが指示されている。上記コンパイラはこれらの機能の任意のものに付随するリソースが当該機能に付随する最小期間に使用されないか否かを判断するプログラム論理を備えているのが望ましい。このプログラム論理には各グループが使用されないときに当該グループをオフにするのに必要な命令を挿入するコード生成フェーズが設けられている。上記コンパイラとランタイム（実行時）環境には仮想Ｖｄｄと仮想接地をオフにすることにより失われる状態をすべて保存し復旧させるプログラム論理が付加されている。本発明を使用すれば、電力節減量が個別のクロック・ゲーティングよりも大きくなるとともに、グローバル・スリープ・モードを呼び出すことに付随する負のシステム効果を伴うことなく電力の節減を実現することが可能になる。
【００１９】
図面に示した構成要素は様々な形態のハードウェア、ソフトウェア、またはそれらの組み合わせで実現できるということを理解する必要がある。これらの構成要素はハードウェアとソフトウェアの組み合わせで実現し、配線または格納し、プロセッサとメモリと入出力インタフェースを備え適切にプログラムされた少なくとも１つの汎用ディジタル・コンピュータで実行する。次に、図面を参照する。図中、同一の符号は同一または類似の構成要素を表わす。まず、図３を参照する。図３は本発明を説明的に記述する説明用回路１００の模式図である。しかし、本発明はより広く、他の回路、集積回路、または半導体チップにも適用することができる。
【００２０】
本発明の一実施形態では、プロセッサ１００は論理回路１１２、１２１、１２３を備えている。また、論理回路の機能グループは特定の命令群に関連付けられたグループ１０１〜１０７に細分化されている。各論理グループ１０１〜１０７ごとに、個別の制御（配線１１０）を備えたヘッダＦＥＴ１０８とフッタＦＥＴ１０８（ＭＴＣＭＯＳであるのが望ましい）が設けられている（説明を簡明にするためにグループ１０２〜１０６用の配線１１０は省略されている）。プロセッサ１００は本発明に従い、個別に制御されるヘッダ／フッタ・スイッチを備えていない論理回路グループ１１２に分割されたプロセッサ論理回路を用いて構築されている。この論理回路グループ１１２（または論理回路グループ群）はグループ全体用の個別のＭＴＣＭＯＳ型ヘッダ／フッタ制御装置を備えていない。ただし、他の実施形態では、論理回路グループ１１２の一部分または論理回路グループ１１２の回路全体が個別のヘッダ／フッタ制御装置を備えている。特定の命令種別の実行リソースに対応する７つの個別に制御されるグループ１０１〜１０７は個別に制御可能なヘッダ／フッタ・スイッチ１０８を備えている。
【００２１】
このような制御を有さない論理回路（１１２）の一部分は実際には細分化することができる。そして、細分化した部分の一部のものは電力管理を備えている。しかし、本発明の原理を示すには図３に示す部分で十分である。理解すべき点を挙げると、本発明は様々な多数の論理構成に適用することができるから、このような論理回路の部分はたとえば当該論理回路の動作可能かつ効率的な部分を決める常識的な原理を用いてチップの設計者が規定する基準に従って形成することができる。
【００２２】
一実施形態では、論理回路１１２内のレジスタ１３１、１３３および他のレジスタ（図示せず）に格納されている、プロセッサ１００の現在の状態に付随するすべての論理回路は仮想Ｖｄｄ／仮想接地によって電力を供給されていないが、その代わりに「ＯＮ」に維持されている。あるいは、この論理回路には上述したグローバル信号によって制御される仮想Ｖｄｄ／仮想接地によって電力を供給してもよい。しかし、現在のプロセッサの状態を失うことはできないから、この仮想Ｖｄｄ／仮想接地を実Ｖｄｄ／実接地から切り離すことはできない。ただし、プロセッサの状態が何らかの不揮発性記憶装置に保存済みである場合はこの限りでない。図２を参照して上述したグローバル電力節減モードの場合には、状態の保存と復旧のために不揮発性記憶装置とオペレーティング・システムによるサポートとが必要である。この全体的な電力管理の別の実施形態は知られているので、図３には示されていない。
【００２３】
プロセッサ１００は複数の異なる装置を備えている。図３に模式的に示すように、整数ユニット１２１は整数論理回路（たとえば加算論理回路１０１、整数シフト論理回路１０２、整数論理ユニット１０３、整数乗算ユニット１０４）と整数レジスタ１３１とを備えている。浮動小数点ユニット１２３は浮動小数点論理回路（たとえば浮動小数点加算論理回路１０５、浮動小数点除算論理回路１０６、浮動小数点乗算論理回路１０７）と浮動小数点レジスタ１３３とを備えている。
【００２４】
グループ１１２はメモリ・キュー／バス・インタフェース・ユニット１３０を備えている。このユニット１３０は入力としてアドレス情報とデータを受領し、キャッシュ・アレイ１３２中のアドレス指定された場所にデータを格納する。キャッシュ・アレイ１３２中に存在する情報を特定するために、キャッシュ・アレイ１３２に格納されているデータにはキャッシュ・タグ１３４を付加する。命令キュー／ディスパッチ・ユニット１３６は命令（たとえば専用ユニット命令、浮動小数点命令、および／または整数命令）を受領し、それらを処理用の適切な実行リソース（たとえば専用レジスタ・ユニット１５０、浮動小数点ユニット１２１）に向ける。（「Ａおよび／またはＢ」は「ＡおよびＢ、Ａ、またはＢ」を表わす。）命令フェッチ・ユニット１３８は次の順次命令アドレスまたは分岐目標アドレスから実行すべき次の命令をフェッチする。分岐ユニット１４０には命令フェッチ・ユニット１３８がフェッチする分岐命令がすべて供給する。分岐ユニット１４０は分岐後に実行する次の命令が、次の順次命令であるか、あるいは分岐命令が特定している情報から算出したアドレスからフェッチする被採用分岐目標に存在する命令であるかを判断する。ロード／ストア・ユニット１４２はロード命令とストア命令をすべて実行するとともに、キャッシュ・アレイ１３２と整数レジスタ１３１、浮動小数点レジスタ１３３、および専用レジスタ・ユニット１５０中の専用レジスタ（たとえばレジスタ１５２）との間におけるデータ転送インタフェースを提供している。
【００２５】
本発明によると、論理回路グループ１０１〜１０７の各々は電力マップ・レジスタ１５２を含む専用ユニット１５０中のビットによって制御する。レジスタ１５２の値は命令テキスト中の値をレジスタ５１２にロードする特別の即値命令によってセットする。これらの命令は後述するコンパイラのコード生成器が挿入する。
【００２６】
図４を参照する。コンパイルのコード割り当てフェーズの終期の間に、コンパイラは図４に模式的に示す情報を備えたテーブル２００を構築する。テーブル２００の各列は個別に制御されるヘッダＦＥＴ／フッタＦＥＴ１０８（図３）を備えた論理回路グループ（図３において１０１〜１０７が付されたグループ）に対応している。各行２０１は実行順に１〜１０が付された命令に対応している。テーブル２００のセルにはチェック印を付して対応する行の命令が当該リソース（たとえば論理回路グループ）を使用する時を表わしている。各列においてチェック印間の距離が長いほど、論理回路グループ（１０１〜１０７）が電力をオフにされている時間が長くなる。好適な実施形態では、コンパイラはコンパイラの最適化指示に適合する範囲内でコードの順序を変更し、各列中のチェック印間の距離を最大化している。テーブル２００が完成したら、図５に示す方法を実行し適切なデータ即値を備えた「電力マップ・レジスタをロード（Load Power Map Register)」命令を生成する。図５の方法は実際に電力節減が行なわれる前に１つのユニットを遮断するのに要する最小サイクル数であると考えられる個数のサイクルを入力として必要とするソフトウェアで使用するのが望ましい。
【００２７】
図５を参照する。たとえば、実際に電力の節減が行なわれる前に１つのユニットを遮断するのに要する最小サイクル数は５サイクル（５命令）であると仮定する。図４のテーブル２００と同一個数の行と列を備えた入力テーブル３００を構築する。図４中のチェック印は入力テーブル３００では論理値「１」で表されている。出力テーブル３０１は入力テーブル３００と同数の行と列を備えている。出力テーブル３０１中の値「１」は当該列に対応する論理回路（グループ１０１〜１０７のうちの少なくとも１つまたは該当なし（none or more of groups 101-107））用のスイッチ１０８（図３）に対する制御信号をＮＯＴ  ＳＬＥＥＰにセットすべきこと（すなわち論理回路に電力を供給すべきこと）を表わしている。ブロック３０４において、方法を初期化し、入力テーブル３００の第１行から開始する。
【００２８】
方法は電力を節減するのに必要な最小サイクル数（この例では当該最小サイクル数（すなわち当該最小命令数）は５である）を予見してユニットへの電力の供給を遮断できるか否かを判断し、ＹＥＳならば出力テーブル３０１中の対応するセルを「１」にセットする。これは入力テーブル３００の第１行中の各セルをチェックすることにより行なう（ブロック３０６）。現在のセル値は「Ｃ」で表すが、「１」または「０」の値を取りうる。出力テーブル中の先行する行の値は「Ｐ」で表わす。留意点を挙げると、出力テーブル３０１中のすべて「１」から成る先行する行を、方法が認定する第１行として使用することができる。次いで、最小サイクル数（たとえば５）に対応する最小数の行を論理ＯＲすることにより命令のアクティビティの確認を行なう。この論理ＯＲ操作の結果はＮで表わす。
【００２９】
ブロック３０８において、Ｃ＝１ならばプログラム経路はブロック３１０から続行する。そうでなければ、プログラム経路はブロック３１２から続行する。ブロック３１０では、Ｃ＝１のセルに対応する論理装置または論理グループはオンにしておく必要がある。したがって、出力テーブル３０１中の対応する場所には「１」をセットする。ブロック３１２において、論理ユニットまたは論理グループ（たとえばグループ１０１〜１０７のうちの１つ）を５サイクル以内に使用しない場合（Ｃ＝１、Ｎ＝０）、または、論理ユニットまたは論理グループを５サイクル以内に使用するがすでに電力の供給を遮断している場合（Ｃ＝０、Ｐ＝０）、当該セルに対応する論理ユニットまたは論理グループは必要になるまでオフのままにしておく。これらの条件が存在する場合、出力テーブル３０１中の対応する場所は「０」にセットする。
【００３０】
ブロック３１４において、すべての行が完了しているか否かをチェックする。すべて行が完了しているわけではない場合、プログラム経路はブロック３１６において次の行に進み、ブロック３０６へ戻る。そうでない場合、プログラム経路はブロック３１８から続行する。
【００３１】
ブロック３１８において、電力管理命令ＬＯＡＤ  ＰＯＷＥＲ  ＭＡＰを挿入する。挿入するＬＯＡＤ  ＰＯＷＥＲ  ＭＡＰ（ＬＰＭ）命令の個数はユニット（たとえば１０１〜１０７）の一部のオフにすることによる電力節減量と新たな命令によって浪費される電力および命令スペースとの間のバランスを表わしている。極端な場合、サイクルごとに新たな電力管理値をロードする可能性があるから、命令の個数は２倍になる。他の場合、電力管理命令はｘサイクルごとに実行する。したがって、単位コード当たりの電力管理命令の最大個数を厳守するのが望ましい。ｘの実際の値はＬＰＭ命令を備えたまたは備えないプログラムの合計サイズと挿入したＬＰＭ命令を実行する際に消費される合計電力とを考慮して設定することができる。挿入したＬＰＭ命令の各々によってプログラムの性能が劣化する。なぜなら、当該命令は他の命令用に使用しうる１実行サイクルを取り上げてしまうとともに、そのフェッチと実行の間に電力を消費するからである。ＬＰＭ命令の実行によって消費される合計電力はユニット１０１〜１０７（図３）の仮想Ｖｄｄ／仮想接地をオフにすることにより節減される電力未満に留めておく必要がある。
【００３２】
図６を参照する。図６は図５の出力テーブル３０１に従って付加した電力管理命令を有する、図４のテーブル２００を構築する例を示す図である。留意点を挙げると、この例では、あるユニットの出力テーブル値が１から０になるサイクルで当該ユニットをオフにする。図６に示すように、命令シーケンスはLoadPowerMap（ＬＰＭ）命令を含んでいる。このLoadPowerMap（ＬＰＭ）命令は命令中に即値ディジタル・データ・フィールド（たとえば「１１１１０００」）を備えており、出力テーブル３０１から電力マップ・レジスタ１５２（図３）にこのディジタル・ワードをロードして論理ユニット／論理グループ１０１〜１０７の一部または全部を有効または無効にし、あるいは何もしない。この例では、ディジタル・ワード「１１１１０００」によってユニット１０１〜１０４を有効にし、ユニット１０５〜１０７を無効にしまたはオフ状態に保っている。次いで、命令１の次に、別のＬＰＭ命令（「０１１１０００」）、命令２、命令３、ＬＰＭ命令（「００１１０００」）、命令４、そして命令５が続く。次いで、命令５と命令６との間に挿入されたＬＰＭ命令によって１サイクル早く追加のユニットをオンにして次のサイクルで別の電力マスク命令が挿入されるのを防止している。次いで、命令６、命令７、命令８、ＬＰＭ命令（「１０００１１０」）、命令９、そして命令１０を実行する。
【００３３】
ＬＰＭ命令を用いて電力マップ・レジスタ１５２を能動的に制御するプログラムを正確に動作させると、プログラムの中断の間に上記レジスタの正確な状態を保持することが可能になる。電力マップ・レジスタ１５２の状態の処理は中断処理プログラムに統合するのが望ましい。（普通には外部イベントの結果として）プログラムの中断が発生したら、自身に付随する電力マップ・レジスタの状態を備えた現在実行中のプログラムを停止させたのち、中断処理プログラムを呼び出す。中断処理プログラムはまず当該プログラムが必要とするすべての実行リソースに電力が供給されることを保証する。それは当該プログラムが必要とする適切な値を電力マップ・レジスタ１５２にセットすることにより行なう。プログラムはＬＰＭ命令が実行されるまで遅延する。そして、実行ユニットの電力の状態は電力マップ・レジスタ１５２にロードされた状態に対応している。この遅延は命令（この場合、ＬＰＭ命令）のフェッチとその実行（すなわちオフしている必要なユニットをすべてオンさせること）との間に存在する通常のパイプライン遅延に起因する。
【００３４】
一実施形態では、中断したプログラムの電力マップ・レジスタ１５２の状態は中断処理プログラムが必要とする実行リソースに対応する新たな値をロードする前に保存することができる。これにより、中断ハンドラは中断したプログラムの復旧前に電力マップ・レジスタに値をストアしなおすことが可能になる。しかし、このことはプログラムの正確な動作にとって必要ではない。
【００３５】
あるいは、電力節減量がわずかに失われるが、電力マスク（mask）レジスタの値をすべて「１」にして中断したプログラムを復旧させてもよい。この場合、復旧したプログラムで実行される次のＬＰＭ命令が電力マスク（mask）レジスタを正確な値にセットする。
【００３６】
本発明の上述した開示は単発行かつインオーダ型のプロセッサを参照して装置とコンパイル方法を提供するものである。ここで説明したコンパイラは概念上のマシン順序で実行される命令を想定しており、それに基づいて自身の解析を実行する。しかし、本発明は多発行かつアウトオブオーダ型のマシンにも適用することができる。これを実現するには、そのようなマシンの発行論理回路用にＬＰＭ命令のマスク（mask）を解析するためのハードウェアを追加する。この論理回路はスコアボード（得点掲示板）レジスタの使用方法と類似している。そして、この論理回路を使用すると、当該論理回路を付加したことに起因して電力節減量がそれに応じて低減する。
【００３７】
以上、累積された命令解析表を備えたコンパイラが制御するハードウェア構造を用いてプロセッサの電力管理用に好適な実施形態（これらは説明を目的としたものでり、限定を意図していない）を説明したが、留意点を挙げると、上述した教示に鑑み当業者は変更と変形を成しうる。したがって、理解すべき点を挙げると、開示した本発明の特定の実施形態は変更することができるが、それらは特許請求の範囲によって外郭を画定した本発明の範囲と本旨の範囲内のものである。それゆえ、特許法で必要とされる程度に詳細かつ入念に本発明を記述したが、本願によって特許請求するとともに保護を求めるものは特許請求の範囲の記載されている。
【図面の簡単な説明】
【００３８】
【図１】従来技術に従い論理機能の電力を低減させるための多しきい値型ＣＭＯＳ（ＭＴＣＭＯＳ）構造の模式図である。
【図２】グローバル・スリープ・モード制御を備えたＭＴＣＭＯＳ構造を備えた従来技術によるプロセッサ構造の模式図である。
【図３】本発明の一実施形態に従って構築したプロセッサの模式図であって、当該プロセッサは独立して制御されるいくつかの論理回路部に分割されており、その各部は個別のＭＴＣＭＯＳ型制御装置を備えている、模式図である。
【図４】本発明に従い図３のプロセッサ用にコンパイラのコード生成の解析部の間に構築されるテーブルの模式図である。
【図５】本発明に従い図３のプロセッサ用にコンパイラのコード生成部がスイッチ制御を生成するシステム／方法のブロック図／フロー図である。
【図６】本発明に従い図４の例用に電力マップ制御命令を挿入した結果得られた命令シーケンスを示す図である。
【符号の説明】
【００３９】
１１  電界効果トランジスタ（ＦＥＴ）
１２  静的ＣＭＯＳ論理回路
１３  電界効果トランジスタ（ＦＥＴ）
２１  電界効果トランジスタ（ＦＥＴ）
２２  プロセッサ
２３  電界効果トランジスタ（ＦＥＴ）
２４  スリープ・モード・ラッチ
２５  セット信号
２６  外部イベント
１００  プロセッサ
１０１  整数加算器
１０２  整数シフタ
１０３  整数論理ユニット
１０４  整数乗算器
１０５  浮動小数点加算器
１０６  浮動小数点除算器
１０７  浮動小数点乗算器
１２１  整数ユニット
１２３  浮動小数点ユニット
１３０  メモリ・キュー／バス・インタフェース・ユニット
１３１  整数レジスタ
１３２  キャッシュ・アレイ
１３３  浮動小数点レジスタ
１３４  キャッシュ・タグ
１３６  命令キュー／ディスパッチ論理回路
１３８  命令フェッチ
１４０  分岐ユニット
１４２  ロード／ストア・ユニット
１５０  専用レジスタ・ユニット
１５２  電力マップ・レジスタ
３００  入力テーブル
３０１  出力テーブル
【図１】
2005523510.tif 000003
【図２】
2005523510.tif 000004
【図３】
2005523510.tif 000005
【図４】
2005523510.tif 000006
【図５】
2005523510.tif 000007
【図６】
2005523510.tif 000008
【国際調査報告】
2005523510.tif 000009
2005523510.tif 000010
2005523510.tif 000011