(57)【要約】パワーマネジメント方法が、開示されており、このパワーマネジメント方法は、パワーマネジメントを、ハードウエアベースＪＡＶＡアクセラレータに供給する。初めに、ＪＡＶＡモード信号が、ホストプロセッサから、ＪＡＶＡアプリケーションの開始に応じて供給される。その後、ＪＡＶＡモード信号に応じて、ホストプロセッサへの電力は、減少されるとともに、ＪＡＶＡプロセッサへの電力は、増加される。次に、ＪＡＶＡアプリケーションの実行が、停止すると、ＪＡＶＡ完了信号が、ＪＡＶＡプロセッサから発生し、それにより、システムに対して、制御をホストプロセッサに戻すように、信号が送られる。
2004507814.tif 000002
【特許請求の範囲】
【請求項１】
パワーマネジメントを、ハードウエアベースＪＡＶＡアクセラレータに供給するパワーマネジメント方法であって、
ＪＡＶＡモード信号を、ホストプロセッサから、ＪＡＶＡアプリケーションの開始に応じて供給する工程と、
前記ホストプロセッサへの電力を、前記ＪＡＶＡモード信号に応じて減少させる工程と、
ＪＡＶＡプロセッサへの電力を、前記ＪＡＶＡモード信号に応じて増加させる工程と、
ＪＡＶＡ完了信号を、前記ＪＡＶＡプロセッサから、前記ＪＡＶＡアプリケーションの実行停止時に発生させる工程と、
を備えることを特徴とするパワーマネジメント方法。
【請求項２】
請求項１記載のパワーマネジメント方法において、さらに
前記ホストプロセッサへの電力を、前記ＪＡＶＡ完了信号に応じて増加させる工程と、
前記ＪＡＶＡプロセッサへの電力を、前記ＪＡＶＡ完了信号に応じて減少させる工程と、
を備えることを特徴とするパワーマネジメント方法。
【請求項３】
請求項２記載のパワーマネジメント方法において、電力は、電圧および周波数を含むことを特徴とするパワーマネジメント方法。
【請求項４】
請求項２記載のパワーマネジメント方法において、前記プロセッサへの前記電力は、ランプ回路プロセスを使用することにより増加され、このランプ回路プロセスは、
（ａ）目標電力値を得る工程と、
（ｂ）前記目標電力値を現行電力値と比較する工程と、
（ｃ）前記現行電力値を、現行電力値が前記目標電力値より小さい時に、増加させる工程と、
（ｄ）動作（ａ）から（ｃ）を、前記現行電力値が、基本的に、前記目標電力値に等しくなるまで繰り返す工程と、
を備えることを特徴とするパワーマネジメント方法。
【請求項５】
請求項４記載のパワーマネジメント方法において、前記現行電力値は、オフセットテーブルから得られる量により増加することを特徴とするパワーマネジメント方法。
【請求項６】
請求項２記載のパワーマネジメント方法において、前記プロセッサへの前記電力は、ランプ回路プロセスを使用することにより減少され、このランプ回路プロセスは、
（ａ）目標電力値を得る工程と、
（ｂ）前記目標電力値を現行電力値と比較する工程と、
（ｃ）前記現行電力値を、現行電力値が前記目標電力値より大きい時に、減少させる工程と、
（ｄ）動作（ａ）から（ｃ）を、前記現行電力値が、基本的に、前記目標電力値に等しくなるまで繰り返す工程と、
を備えることを特徴とするパワーマネジメント方法。
【請求項７】
請求項６記載のパワーマネジメント方法において、前記現行電力値は、オフセットテーブルから得られる量により減少することを特徴とするパワーマネジメント方法。
【請求項８】
パワーマネジメントを、ハードウエアベースＪＡＶＡアクセラレータに供給するパワーマネジメントシステムであって、
電力生成回路に接続されるホストプロセッサであって、ＪＡＶＡモード信号を供給できるＪＡＶＡモード信号ポートを有する、ホストプロセッサと、
電力生成回路に接続されるＪＡＶＡプロセッサであって、ＪＡＶＡ完了信号を供給できるＪＡＶＡ完了信号ポートを有する、ＪＡＶＡプロセッサと、
を備え、前記電力生成回路は、ＪＡＶＡモード信号の受信に応じて、前記ホストプロセッサへの電力を減少させるとともに、前記ＪＡＶＡプロセッサへの電力を増加させ、かつ、前記電力生成回路は、前記ＪＡＶＡ完了信号の受信に応じて、前記ホストプロセッサへの電力を増加させるとともに、前記ＪＡＶＡプロセッサへの電力を減少させることを特徴とするパワーマネジメントシステム。
【請求項９】
請求項８記載のパワーマネジメントシステムにおいて、前記ホストプロセッサは、前記ＪＡＶＡモード信号を、ＪＡＶＡアプリケーションの開始に応じて、供給することを特徴とするパワーマネジメントシステム。
【請求項１０】
請求項９記載のパワーマネジメントシステムにおいて、前記ＪＡＶＡプロセッサは、前記ＪＡＶＡ完了信号を、ＪＡＶＡアプリケーションの実行停止時に供給することを特徴とするパワーマネジメントシステム。
【請求項１１】
請求項８記載のパワーマネジメントシステムにおいて、前記電力生成回路は、
前記ホストプロセッサに接続される、第一組のプログラム電圧・周波数生成器と、
前記ＪＡＶＡプロセッサに接続される、第二組のプログラム電圧・周波数生成器と、
を備え、前記第一組のプログラム電圧・周波数生成器は、前記ホストプロセッサに対して、電圧および周波数を調整でき、かつ、前記第二組のプログラム電圧・周波数生成器は、前記ＪＡＶＡプロセッサに対して、電圧および周波数を調整できることを特徴とするパワーマネジメントシステム。
【請求項１２】
請求項１１記載のパワーマネジメントシステムにおいて、さらに
前記第一組のプログラム電圧・周波数生成器に接続される、ホストランプ回路であって、増分電圧および周波数の変更を、前記第一組のプログラム電圧・周波数生成器に対して、供給できるホストランプ回路と、
前記第二組のプログラム電圧・周波数生成器に接続される、ＪＡＶＡランプ回路であって、増分電圧および周波数の変更を、前記第二組のプログラム電圧・周波数生成器に対して、供給できるＪＡＶＡランプ回路と、
を備え、それにより、前記ホストランプ回路、および、前記ＪＡＶＡランプ回路は、前記ホストプロセッサ、および、前記ＪＡＶＡプロセッサに供給される、電圧および周波数の変更を、鈍化させることを特徴とするパワーマネジメントシステム。
【請求項１３】
請求項１２記載のパワーマネジメントシステムにおいて、前記ホストランプ回路、および、前記ＪＡＶＡランプ回路は、現行の電圧および周波数に対する変化量を、オフセットテーブルを使用して、決定することを特徴とするパワーマネジメントシステム。
【請求項１４】
請求項１３記載のパワーマネジメントシステムにおいて、ノーマル動作電圧・周波数値、および、ローパワー電圧・周波数値は、前記ホストプロセッサのために格納され、かつ、ノーマル動作電圧・周波数値、および、ローパワー電圧・周波数値は、前記ＪＡＶＡプロセッサのために格納されることを特徴とするパワーマネジメントシステム。
【請求項１５】
請求項１４記載のパワーマネジメントシステムにおいて、前記ホストランプ回路は、増分電圧および周波数の変更を、前記ホストプロセッサの、前記ノーマル動作電圧・周波数値、および、ローパワー電圧・周波数値により規定された数値の範囲内で供給し、かつ、
前記ＪＡＶＡランプ回路は、増分電圧および周波数の変更を、前記ＪＡＶＡプロセッサの、前記ノーマル動作電圧・周波数値、および、ローパワー電圧・周波数値により規定された数値の範囲内で供給することを特徴とするパワーマネジメントシステム。
【請求項１６】
プロセッサに供給される変更を鈍化させるランプ回路方法であって、
（ａ）目標値を得る工程と、
（ｂ）前記目標値を、現行値と比較して、差分値を得る工程と、
（ｃ）前記現行値を、前記差分値が所定のしきい値外の時に、調整する工程と、
（ｄ）動作（ａ）から（ｃ）を、前記差分値が所定のしきい値内になるまで、繰り返す工程と、
を備えることを特徴とするランプ回路方法。
【請求項１７】
請求項１６記載のランプ回路方法において、さらに
オフセット値を、オフセットテーブルから、前記差分値を使用して、決定する工程と、
前記現行値を、前記オフセット値により規定される量によって、調整する工程と、
を備えることを特徴とするランプ回路方法。
【請求項１８】
請求項１７記載のランプ回路方法において、さらに前記現行値を、プログラム電力生成回路に供給する動作を備え、このプログラム電力生成回路は、プロセッサの、現行の動作条件を決定することを特徴とするランプ回路方法。
【請求項１９】
請求項１６記載のランプ回路方法において、前記目標値、および、前記現行値は、電圧値であることを特徴とするランプ回路方法。
【請求項２０】
請求項１６記載のランプ回路方法において、前記目標値、および、前記現行値は、周波数値であることを特徴とするランプ回路方法。
【発明の詳細な説明】
【０００１】
（関連特許）
本出願は、米国特許出願第０９／５６５，６７９（代理人整理番号ＶＴＩ１Ｐ３３３）に関連しており、この米国特許出願は、２０００年５月４日に出願され、「ＪＡＶＡスタック、演算論理ユニット、および、マルチプルスタックポインタを有する統合サブシステムのアーキテクチャ、および、その使用方法」と題され、ここに、その全貌を引例として取り入れている。
【０００２】
本出願は、また、米国特許出願第０９／６７０，４９６（代理人整理番号ＰＨＩＬＰ３３７）に関連しており、この米国特許出願は、「ＪＡＶＡアレイをチェックするローオーバーヘッド境界システムおよび方法」と題され、ここに、その全貌を引例として取り入れている。
【０００３】
（発明の背景）
１．発明の分野
本発明は、一般にハードウエアにより加速されたＪＡＶＡ実行に関し、特に、マスタ／スレーブＪＡＶＡアクセラレータ環境内におけるパワーマネジメントに関する。
【０００４】
２．関連技術の説明
今日のコンピュータプログラム界は、多くの高水準プログラミング言語を提示している。ＪＡＶＡは、例えば、広範囲に渡る普及を、比較的短期間のうちに達成し、これは、偏在するインターネットの成功に帰するところが大きいものである。ＪＡＶＡの人気は、少なくともある程度は、そのプラットフォームの独立性、オブジェクト指向性、および、そのダイナミックな性質によるものである。さらに、ＪＡＶＡは、多くの退屈かつエラーを引き起こしやすいタスクを取り除いている。このタスクは、アプリケーションプログラマにより、行われなければならないものであり、これには、メモリマネジメント、および、クロスプラットフォームポーティングが含まれる。こうして、ＪＡＶＡプログラマは、デザインおよび機能性の問題により集中することができるのである。
【０００５】
ＪＡＶＡアプリケーションを実行するために、ＪＡＶＡプロセッサが、使用され、ＪＡＶＡプロセッサは、概して、ＪＡＶＡ仮想マシン（ＪＶＭ）形式のソフトウエアによってのみ、起動する。しかし、ソフトウエアにおける処理の実施に伴う問題が原因で、ＪＶＭは、低パフォーマンス問題を抱えている。
【０００６】
従来から２つの技術が、ＪＡＶＡ解釈のパフォーマンスを改善するために、使用されている。この２つの技術とは、すなわち、ネイティブＪＡＶＡ実行、および、一部ハードウエアのＪＡＶＡ命令解釈である。ネイティブＪＡＶＡ実行方式は、ハードウエアを使用して、実ＪＡＶＡプロセッサを構築する。しかし、この技術は、深刻な欠点を提示している。つまり、この技術は、ＪＡＶＡの概念である「外部マシン」を除去するものであり、また、それにより、多くのソフトウエアを排除することになり、このようなＪＡＶＡプロセッサで実行することは、不可能である。
【０００７】
一部ハードウエアのＪＡＶＡ命令解釈方式は、ハードウエアアシストを使用して、解釈処理を改善する。この構成は、しばしばＪＡＶＡアクセラレータと呼ばれる。基本的に、ＪＡＶＡアクセラレータは、アセンブリ言語インタプリタのパフォーマンスに近く、このアセンブリ言語インタプリタは、ゼロから待ち状態のメモリを実行する。
【０００８】
ＪＡＶＡアクセラレータの一実施は、マスタ／スレーブ構成を使用しており、マスタ（ホスト）プロセッサは、ＪＡＶＡ命令以外のすべての命令を実行し、スレーブプロセッサは、専らＪＡＶＡ命令のみを実行する。しかし、この方式を用いる従来のシステムは、ホストおよびスレーブプロセッサ間のパワーマネジメントに伴う問題を、多く抱えている。この問題は、両方のプロセッサが、小型、かつ、バッテリ式モバイル機器において実施される時に起こり、このようなモバイル機器では、電力の節約が、非常に重要である。
【０００９】
歴史的に見ると、演算装置のパワーマネジメントに伴う問題は、いつ、システムあるいはシステム内の様々な構成部分が、重要な処理を行っているのか、を検出しようとする結果、生じている。しばしば、従来のパワーマネジメントシステムは、入出力（Ｉ／Ｏ）信号を、アイドルタイマと共に監視することにより、いつ、装置への電力を止めることができるか、を検出する。
【００１０】
他の従来のパワーマネジメントシステムでは、プロセッサインタフェースの周波数が、変更され、それにより、コンピュータシステムの消費電力を低減する。また、その他の従来のパワーマネジメントシステムは、クロックスロットリングと呼ばれる方法を使用して、マイクロプロセッサの消費電力を低減し、それにより、コンピュータシステムの消費電力を低減する。この方法では、マイクロプロセッサが、重要な処理を行っていないと判断された時には、マイクロプロセッサへの入力は、変更される。こうすることにより、マイクロプロセッサに、そのクロックの内部使用を中止するよう、効率的に伝えることができる。マイクロプロセッサへの入力を変更することにより、マイクロプロセッサは、徐々に減速するため、このマイクロプロセッサは、それ程エネルギーを燃焼させず、それにより、コンピュータシステムの消費電力を減少させる。パワーマネジメント決定処理における近年の従来技術は、パワーマネジメント決定処理をオペレーティングシステム（ＯＳ）指向にしたことにより、改善されてはきたが、従来のパワーマネジメント決定は、推測に過ぎないものが多い。
【００１１】
上記の方法は、消費電力の減少に繋がるかもしれないが、いずれの方法も、システムにおける各プロセッサの動作電圧の減少と、組み合わされてはいない。この動作電圧の減少と組み合わされていれば、さらに、システムの消費電力を減少させることが、できるであろう。ホストおよびＪＡＶＡプロセッサ両方の動作電圧および動作周波数を、共に制御すれば、コンピュータシステムの最適電力およびパフォーマンストレードオフが、可能になるであろう。
【００１２】
以上の点に鑑み、ＪＡＶＡアクセラレータ内での、改善されたパワーマネジメントを供給するシステムおよび方法が、必要になっている。パワーマネジメントシステムは、ホストおよびＪＡＶＡプロセッサの、動作電力および動作周波数の両方を、制御するものである。さらに、パワーマネジメントシステムは、電源あるいはデジタル回路のいずれもが、動作条件の変更中にストレスを受けないことを保証し、また、プロセッサ間のメモリ更新ができるよう、動作条件変更間には十分な時間を保証するものである。
【００１３】
（発明の要約）
広い意味で言えば、本発明は、改善されたパワーマネジメントシステムを、ＪＡＶＡアクセラレータに供給することにより、これらの要求を満たしている。本発明のパワーマネジメントシステムは、ホストおよびＪＡＶＡプロセッサの、動作電圧および動作周波数の両方を制御する。それにより、コンピュータシステムの最適電力およびパフォーマンスが、可能となる。一方の実施形態では、パワーマネジメント方法が、開示されており、この方法は、パワーマネジメントを、ハードウエアベースＪＡＶＡアクセラレータに供給するものである。初めに、ＪＡＶＡモード信号が、ホストプロセッサから、ＪＡＶＡアプリケーションの開始に応じて供給される。その後、ＪＡＶＡモード信号に応じて、ホストプロセッサへの電力は、減少されるとともに、ＪＡＶＡプロセッサへの電力は、増加される。次に、ＪＡＶＡアプリケーションの実行が停止すると、ＪＡＶＡ完了信号が、ＪＡＶＡプロセッサから発生し、それにより、システムに対して、制御をホストプロセッサに戻すように、信号が送られる。
【００１４】
他方の実施形態では、パワーマネジメントシステムが、開示されており、このシステムは、パワーマネジメントを、ハードウエアベースＪＡＶＡアクセラレータに供給するものである。パワーマネジメントシステムは、ホストプロセッサを含み、ホストプロセッサは、電力発生回路に接続される。このホストプロセッサは、ＪＡＶＡモード信号ポートを含み、ＪＡＶＡモード信号ポートは、ＪＡＶＡモード信号を供給できる。さらに、パワーマネジメントシステムに含まれているのは、ＪＡＶＡプロセッサであり、このＪＡＶＡプロセッサもまた、電力発生回路に接続されている。ＪＡＶＡプロセッサは、ＪＡＶＡ完了信号ポートを含み、このＪＡＶＡ完了信号ポートは、ＪＡＶＡ完了信号を供給することができる。使用時には、電力発生回路は、ＪＡＶＡモード信号の受信に応じて、ホストプロセッサへの電力を減少させるとともに、ＪＡＶＡプロセッサへの電力を増加させる。さらに、ＪＡＶＡ完了信号の受信に応じて、電力生成回路は、ホストプロセッサへの電力を増加させるとともに、ＪＡＶＡプロセッサへの電力を減少させる。
【００１５】
プロセッサに供給される変更を鈍化させるための、ランプ回路方法が、本発明の更なる実施形態において、開示されている。ランプ回路方法は、目標値を得ることにより始まり、この目標値は、プロセッサが設定される、所望の周波数あるいは電圧を表す。次に、この目標値は、現行値と比較され、差分値を得る。目標値と同様に、現行値は、プロセッサが現在動作している、現行の周波数あるいは電圧である。現行値は、次に、差分値が所定のしきい値外の時に、調整される。このしきい値は、ある範囲を有する値でも、あるいは、ゼロ等の単一の値でもよい。上記の動作は、その後、差分値が所定のしきい値内になるまで、繰り返される。
【００１６】
有利なことには、本発明は、コンピュータシステムの最適電力およびパフォーマンスを、ホストおよびＪＡＶＡプロセッサの、動作周波数および動作電圧の両方を制御することにより、可能にしている。さらに、周波数および電圧の両方が、制御される場合、電圧は、周波数を増加する前に、増加されるとともに、周波数は、電圧を減少させる前に、減少される。これは、システムが、現行の電圧に対して、速過ぎる周波数では稼働しないことを、保証しており、更なる省電力化という結果をもたらしている。
【００１７】
最後に、当業者には自明のものであるが、本発明のパワーマネジメントシステムは、プロセッサ間のメモリ更新ができるよう、動作条件変更間には十分な時間を保証するものである。本発明の他の様態および利点は、以下の詳細な説明から、添付の図面と併せて、明らかとなるものであり、以下の詳細な説明は、例を用いて発明の原理を説明するものである。
【００１８】
（好適な実施形態の詳細な説明）
発明は、ＪＡＶＡアクセラレータのパワーマネジメントシステムのために、開示されている。広い意味で言えば、本発明のパワーマネジメントシステムは、ＪＡＶＡアクセラレータの電力消費を、ＪＡＶＡアプリケーションの開始時には、ホストプロセッサへの電力を減少させるとともに、ＪＡＶＡプロセッサへの電力は増加させることにより、また、ＪＡＶＡアプリケーションの実行停止時には、このプロセスを逆転させることにより、管理する。
【００１９】
以下の説明では、非常に多くの具体的な詳細が、記載されており、本発明の完全な理解を提供している。しかし、当業者にとって、本発明は、いくつかの、あるいは、すべての具体的な詳細がなくても実行されうることは、自明のものである。他の例において、公知の処理ステップが、詳細に説明されてはいないが、それは、不必要に本発明を不明瞭にしないためである。
【００２０】
図１は、本発明の実施形態に基づき、ＪＡＶＡハードウエアアクセラレータシステム１０を示すブロック図である。ＪＡＶＡハードウエアアクセラレータシステム１０は、システムバス１２を含み、このシステムバス１２は、マスタ（ホスト）プロセッサ１４、スレーブ（ＪＡＶＡ）プロセッサ１６、および、システムメモリ１８を含む。さらに、ＪＡＶＡハードウエアアクセラレータシステム１０は、バスアービトレータ２０を含み、このバスアービトレータ２０は、ホストプロセッサ１４およびＪＡＶＡプロセッサ１６間に、接続されている。
【００２１】
ＪＡＶＡハードウエアアクセラレータシステム１０は、デュアルプロセッサシステムであり、ＪＡＶＡプロセッサ１６が、大部分のＪＡＶＡ命令を実行し、ホストプロセッサ１４は、残りすべての、複雑なＪＡＶＡ命令を含む命令を実行する。「マシン内のマシン」というＪＡＶＡパラダイムに固有であるように、ＪＡＶＡプロセッサ１６は、スレーブプロセッサである。ＪＡＶＡプロセッサ１６は、「内部マシン」の役を務め、ホストプロセッサ１４である「外部マシン」により、開始および制御される。
【００２２】
ホストプロセッサ１４は、任意のプロセッサに内蔵されてもよく、その任意のプロセッサには、現行の工業規格デバイスである、ｘ８６、ＡＲＭ、および、ＭＩＰＳデバイス等が、含まれる。ＪＡＶＡプロセッサ１６は、スタックベースプロセッサであることが好ましく、このスタックベースプロセッサは、命令とデータキャッシング、および、内部ＳＲＡＭを含む。さらに、ＪＡＶＡプロセッサ１６は、レジスタベーススタックを含むことが好ましく、これは、関連する、米国特許出願第０９／５６５，６７９の、タイトル「ＪＡＶＡスタック、演算論理ユニット、および、マルチプルスタックポインタを有する統合サブシステムのアーキテクチャ、および、その使用方法」に記載されており、ここに、その全貌を引例として取り入れている。
【００２３】
一般に、プロセッサ１４は、オペレーティングシステム、ＪＡＶＡ以外のアプリケーション、および、複雑なＪＡＶＡ命令をサポートする。一実施形態では、増設の専用ＡＲＭ、あるいは、同等のプロセッサ（図示せず）が、使用され、複雑なＪＡＶＡ命令を処理している。
【００２４】
ＪＡＶＡプロセッサ１６は、一般に、少なくとも、次のＪＡＶＡ命令、すなわち、ロード、格納、計算、分岐、プッシュ、および、フィールド、を実行することができる。好ましくは、整数および浮動小数点の両方を含む、すべての計算命令に対するサポートが、ＪＡＶＡプロセッサ１６に組込まれていることである。先にも述べたように、ホストプロセッサ１４は、メソッド呼び出し等の、より複雑な命令を処理する。ＪＡＶＡプロセッサ１６は、複雑な命令が解読される時、例外を発生させるとともに、データキャッシュ内のすべてのダーティラインを、システムメモリ１８に書き込む。その後、ＪＡＶＡプロセッサ１６は、実行を停止する。
【００２５】
好ましくは、ＪＡＶＡプロセッサ１６が、現在実行されている方法への高速アクセスのための、命令キャッシュを含むことである。この方法をサポートするために使用されているローカルデータは、内部ＳＲＡＭにあり、この内部ＳＲＡＭは、概して、単一ポートであるとともに、ホストプロセッサ１４およびＪＡＶＡプロセッサ１６の両方により、アクセスすることができる。ＪＡＶＡプロセッサ１６が実行中の時は、ホストプロセッサ１４は、ローカルデータ領域およびスタックの両方から、ロックアウトされる。さらに、アレイ等のローカルではない変数への高速アクセスのための、データキャッシュが、含まれている。
【００２６】
図２は、本発明の実施形態に基づき、パワーマネジメントシステム５０を示すブロック図である。パワーマネジメントシステム５０は、ホストプロセッサ部５２、および、ＪＡＶＡプロセッサ部５４を含む。ホストプロセッサ部５２は、ホストスイッチレジスタ５６を含み、このホストスイッチレジスタ５６は、一組のホストノーマル動作電圧・周波数レジスタ５８、および、一組のホストロー電圧・周波数レジスタ６０に、接続されている。さらに、パワーマネジメントシステム５０は、ホストランプ回路６４に接続された一組のプログラム電圧・周波数生成器６２、および、ホストプロセッサ１４を含む。ホストプロセッサ１４は、ＪＡＶＡモード信号ポートを含み、このＪＡＶＡモード信号ポートは、ＪＡＶＡモード信号６８を、ＪＡＶＡアプリケーションの開始と同時に供給する。
【００２７】
ＪＡＶＡプロセッサ部５４は、ＪＡＶＡスイッチレジスタ７０を含み、このＪＡＶＡスイッチレジスタ７０は、一組のＪＡＶＡノーマル動作電圧・周波数レジスタ７２、一組のＪＡＶＡロー電圧・周波数レジスタ７４、および、アイドルディレイタイマ７６に、接続されている。さらに、パワーマネジメントシステム５０は、ＪＡＶＡランプ回路８０に接続された一組のプログラム電圧・周波数生成器７８、および、ＪＡＶＡプロセッサ１６を含む。ＪＡＶＡプロセッサ１６は、ＪＡＶＡ完了信号ポートを含み、このＪＡＶＡ完了信号ポートは、ＪＡＶＡアプリケーションの実行が停止されると、ＪＡＶＡ完了信号８４を供給する。
【００２８】
各プログラム電圧・周波数生成器６２および７８は、周波数変更の、実際のインプランテーションを供給し、この周波数変更は、ホストランプ回路６４およびＪＡＶＡランプ回路８０により、供給されるものである。動作中は、各プログラム電圧・周波数生成器６２および７８は、スロークロック信号によりクロックされるため、適切なランプ回路が、新しい電力をクロック毎に供給できる。
【００２９】
各プロセッサ１４および１６は、基本的に、ノーマル動作モード、および、ローパワー動作モードの２つの動作モードを有している。ノーマル動作モードでは、ホストプロセッサ１４およびＪＡＶＡプロセッサ１６は、ホストプロセッサ１４あるいはＪＡＶＡプロセッサ１６が内蔵されているプロセッサのタイプとしては、通常ノーマルと考えられる電圧および周波数で、動作する。ローパワー動作モードでは、ホストプロセッサ１４およびＪＡＶＡプロセッサ１６は、低電圧および周波数で動作する。この低電圧および周波数とは、ホストプロセッサ１４あるいはＪＡＶＡプロセッサ１６が内蔵されているタイプのプロセッサとしては、ノーマルな動作電圧および周波数を、下回るものである。
【００３０】
プロセッサ１４／１６が重要な処理を行う時に、ノーマル動作モードを使用し、プロセッサ１４／１６が、重要な処理を行わない時に、ローパワー動作モードに切り換えることにより、本発明は、さらなる省電力化を提供する。この省電力化は、プロセッサが使用されていない時に、各プロセッサ１４／１６の動作電圧および動作周波数の両方を低減させることができる能力によって、著しく強化される。
【００３１】
初めに、ホストプロセッサのノーマル動作電圧、および、ノーマル動作周波数の値が、一組のホストノーマル動作電圧・周波数レジスタ５８に格納される。さらに、ホストプロセッサのローパワー動作電圧値、および、ホストプロセッサのローパワー動作周波数値が、一組のホストロー電圧・周波数レジスタ６０に格納される。同様にして、ＪＡＶＡプロセッサのノーマル動作電圧値、および、ＪＡＶＡプロセッサのノーマル動作周波数値が、一組のＪＡＶＡノーマル動作電圧・周波数レジスタ７２に格納される。ＪＡＶＡプロセッサのローパワー動作電圧値、および、ＪＡＶＡプロセッサのローパワー動作周波数値が、次に、一組のＪＡＶＡロー電圧・周波数レジスタ７４に格納される。
【００３２】
こうして、ホストおよびＪＡＶＡノーマル動作電圧・周波数レジスタ５８および７２の組は、それぞれ、ホストプロセッサ１４およびＪＡＶＡプロセッサ１６の、ノーマル動作電圧および周波数を規定している。同様にして、ホストおよびＪＡＶＡロー電圧・周波数レジスタ６０および７４の組は、それぞれ、ホストプロセッサ１４およびＪＡＶＡプロセッサ１６の、ローパワー動作電圧および周波数を規定している。
【００３３】
ノーマル動作中は、ホストプロセッサ１４は、ホストノーマル動作電圧・周波数レジスタ５８により規定されるノーマル動作モードに従い、動作する。一方、ＪＡＶＡプロセッサ１６は、ＪＡＶＡロー電圧・周波数レジスタ７４により規定されるローパワー動作モードに従い、動作する。先にも説明したように、ホストプロセッサ１４は、一般に、メソッド呼び出し等の、ＪＡＶＡプロセッサが処理しない、複雑なＪＡＶＡ命令を除くＪＡＶＡ以外のすべての命令を、実行する。ＪＡＶＡアプリケーションの開始と同時に、ホストプロセッサは、ＪＡＶＡモード信号６８を発生させる。それにより、パワーマネジメントシステム５０に対して、ＪＡＶＡアプリケーションがＪＡＶＡプロセッサ１６により実行されることが、伝えられる。ホストレジスタスイッチ５６およびＪＡＶＡレジスタスイッチ７０は、次に、ＪＡＶＡモード信号６８を受信し、ＪＡＶＡモード信号６８は、ホストレジスタスイッチ５６およびＪＡＶＡレジスタスイッチ７０に対し、ホストおよびＪＡＶＡプロセッサ１４および１６を、動作モードに切り換えるよう命令する。
【００３４】
ＪＡＶＡモード信号６８を受信すると同時に、ホストレジスタスイッチ５６は、ホストプロセッサ１４のホスト目標電圧・周波数値を、ホストロー電圧・周波数レジスタ６０に格納された値に、設定する。同様にして、ＪＡＶＡレジスタスイッチ７０は、ＪＡＶＡプロセッサ１６のＪＡＶＡ目標電圧・周波数値を、ＪＡＶＡノーマル動作電圧・周波数レジスタ７２に格納された値に、設定する。
【００３５】
この時点で、ホストランプ回路６４は、ホスト目標電圧・周波数値を使用して、徐々に、ホストプロセッサ１４の、現行の電圧および周波数を、ホスト目標電圧・周波数値まで減少させる。同様の方法で、ＪＡＶＡランプ回路８０は、ＪＡＶＡ目標電圧・周波数値を使用して、徐々に、ＪＡＶＡプロセッサ１６の、現行の電圧および周波数を、ＪＡＶＡ目標電圧・周波数値まで増加させる。
【００３６】
ホストおよびＪＡＶＡランプ回路６４および８０は、それぞれ、小さな増分電圧・周波数の増加または減少を、ホストプロセッサおよびＪＡＶＡプロセッサの現行の電圧および周波数が、各々の目標電圧・周波数値に到達するまでの間、供給する。各電圧および周波数の減分後、ホストランプ回路６４は、新しい減分電圧・周波数値を、ホストプロセッサ１４に接続されている一組のプログラム電圧・周波数生成器６２に、供給する。一組のプログラム電圧・周波数生成器６２は、次に、ホストプロセッサ１４の電圧および周波数を、新しい減分電圧・周波数値に設定する。
【００３７】
同様にして、各増分後、ＪＡＶＡランプ回路８０は、新しい増分電圧・周波数値を、ＪＡＶＡプロセッサ１６に接続されている一組のプログラム電圧・周波数生成器７８に、供給する。一組のプログラム電圧・周波数生成器７８は、次に、ＪＡＶＡプロセッサ１６の電圧および周波数を、新しい増分電圧・周波数値に設定する。こうして、電力は、ＪＡＶＡアプリケーションが開始される時、ホストプロセッサ１４において、減少するとともに、ＪＡＶＡプロセッサ１６においては、増加する。その結果、システム５０の実質的な省電力化につながる。
【００３８】
ＪＡＶＡプロセッサ１６は、次に、ＪＡＶＡアプリケーションの実行を開始する。ＪＡＶＡプロセッサ１６は、一般に、ＪＡＶＡアプリケーションを、ＪＡＶＡアプリケーションが完了するまで、あるいは、ＪＡＶＡプロセッサ１６が処理できない、複雑なＪＡＶＡ命令が現れるまで、引き続き実行する。この時点で、ＪＡＶＡプロセッサ１６は、ＪＡＶＡ完了信号８４、あるいは、中断信号を発生させ、これは、ホストレジスタスイッチ５６およびＪＡＶＡレジスタスイッチ７０により受信され、パワーマネジメントシステム５０に対して、ＪＡＶＡアプリケーションの実行停止を知らせる。
【００３９】
ＪＡＶＡ完了信号８４を受信すると同時に、ホストレジスタスイッチ５６は、ホスト目標電圧・周波数値を、ホストノーマル動作電圧・周波数レジスタ５８に格納されている値に、設定する。同様にして、ＪＡＶＡレジスタスイッチ７０は、ＪＡＶＡ目標電圧・周波数値を、ＪＡＶＡロー電圧・周波数レジスタ７４に格納されている値に、設定する。
【００４０】
この時点で、ホストランプ回路６４は、ホスト目標電圧・周波数値を使用して、徐々に、ホストプロセッサ１４の現行の電圧および周波数を、ホスト目標電圧・周波数値まで増加させる。同様の方法で、ＪＡＶＡランプ回路８０は、ＪＡＶＡ目標電圧・周波数値を使用して、徐々に、ＪＡＶＡプロセッサ１６の現行の電圧および周波数を、ＪＡＶＡ目標電圧・周波数値まで減少させる。
【００４１】
上記に記載される様に、ホストおよびＪＡＶＡランプ回路６４および８０は、それぞれ、小さな増分電圧・周波数の増加または減少を、ホストプロセッサおよびＪＡＶＡプロセッサの、現行の電圧および周波数が、各々の目標電圧・周波数値に到達するまでの間、供給する。各増分後、ホストランプ回路６４は、新しい増分電圧・周波数値を、ホストプロセッサ１４に接続されている一組のプログラム電圧・周波数生成器６２に、供給する。一組のプログラム電圧・周波数生成器６２は、次に、ホストプロセッサ１４の電圧および周波数を、新しい増分電圧・周波数値に設定する。
【００４２】
同様にして、各減分後、ＪＡＶＡランプ回路８０は、新しい減分電圧・周波数値を、ＪＡＶＡプロセッサ１６に接続されている一組のプログラム電圧・周波数生成器７８に、供給する。一組のプログラム電圧・周波数生成器７８は、次に、ＪＡＶＡプロセッサ１６の電圧および周波数を、新しい減分電圧・周波数値に設定する。こうして、電力は、ＪＡＶＡアプリケーションの実行停止時に、ホストプロセッサ１４において、増加するとともに、ＪＡＶＡプロセッサ１６においては、減少する。この時点で、ホストプロセッサ１４は、システムの制御を再開し、引き続きコンピュータ命令を実行する。
【００４３】
ＪＡＶＡ実行中、ＪＡＶＡプロセッサ１６は、情報をローカルキャッシュに格納し、様々なＪＡＶＡ命令の実行に使用する。ＪＡＶＡ実行が停止すると、この情報を、ホストプロセッサ１４が、システムバスを介して利用できるようになる。この情報を、ＪＡＶＡプロセッサ１６が遮断されて、ローパワー動作モードに切り替わる前に供給するために、本発明は、アイドルディレイタイマ７６を使用しており、このアイドルディレイタイマ７６は、ＪＡＶＡレジスタスイッチ７０およびＪＡＶＡランプ回路８０の間に、接続されている。
【００４４】
アイドルディレイタイマ７６は、ＪＡＶＡ電圧ランプ回路８０が、ＪＡＶＡ目標電圧・周波数値を、一組のＪＡＶＡロー電圧・周波数レジスタ７４に格納されている、より低い値に設定することを、遅延させる。遅延の長さは、ＪＡＶＡプロセッサ１６のキャッシュメモリサイズの一関数で、この遅延の長さは、キャッシュ内情報が、ＪＡＶＡプロセッサ１６へのパワーが減少される前に、システムメモリに転送されるように、設定される。なお、アイドルディレイタイマ７６は、ＪＡＶＡプロセッサ１６が、ＪＡＶＡ完了信号８４を発生させる時にのみ、機能することが好ましい。
【００４５】
図３は、本発明の実施形態に基づき、模範的なランプ回路１００を示すブロック図である。模範的なランプ回路１００は、周波数ランプ回路として使用するために示されているが、ランプ回路１００は、電圧ランプ回路としても、レジスタに、周波数値の代わりに電圧値を供給することにより、使用することができる。
【００４６】
ランプ回路１００は、コンパレータ１０２を含み、コンパレータ１０２は、目標周波数レジスタ１０４、現行周波数レジスタ１０６、および、オフセットテーブル１０８に、接続されている。さらに、ランプ回路１００は、オフセット周波数レジスタ１１０を含み、オフセット周波数レジスタ１１０は、オフセットテーブル１０８、および、現行周波数レジスタ１０６に、接続されている。最後に、ランプ回路１００は、周波数状態マシン１１２を含み、周波数状態マシン１１２は、ランプ回路１００に対する制御を供給する。なお、現行周波数レジスタ１０６は、プログラム周波数生成器１１４にも接続されている。
【００４７】
パワーモードが、ノーマル動作とローパワー動作モード間で切り換えられる時、ホストおよびＪＡＶＡプロセッサの両方になされる、電圧および周波数の変更は、電力供給およびデジタル論理に対するストレス付加を阻止するために、鈍化されることが好ましい。
【００４８】
後により詳述されるように、ランプ回路１００は、小さな増分変更をプロセッサの電圧および周波数に供給し、こうした変更の適切な優先順位を保証する。特に、プロセッサへの電力が、ローパワーからノーマルパワーへ切り替わる時、電圧は、周波数が増加される前に、増加される。逆に、プロセッサへの電力が、ノーマルパワーからローパワーへ切り替わる時、周波数は、電圧が減少される前に、減少される。
【００４９】
動作中は、ランプ回路１００は、周波数状態マシン１１２により供給される、比較的スローなクロック信号により、クロックされる。先にも述べたように、ランプ回路１００は、目標周波数を、一組の、ノーマル動作あるいはローパワーのいずれかの周波数レジスタから、現行のパワー動作モードに従い、獲得し、そして、この目標周波数を、目標周波数レジスタ１０４に格納する。関連するプロセッサの現行の動作周波数は、現行周波数レジスタ１０６に格納されている。
【００５０】
クロック信号毎に、コンパレータ１０２は、目標周波数レジスタ１０４に格納されている値を、現行周波数レジスタ１０６に格納されている値と比較し、差分値を出す。この差分値とは、目標周波数レジスタ１０４に格納されている値と、現行周波数レジスタ１０６に格納されている値間の、値の差である。
【００５１】
差分値が所定のしきい値外であれば、表検索が、差分値およびオフセットテーブル１０８を使用して、行われる。そして、表検索の結果が、オフセット周波数レジスタ１１０に格納される。所定のしきい値は、容認できる周波数の範囲の値、単一値、あるいは、ゼロでもよい。しきい値をゼロに設定することは、差分値がゼロではない時は常に、差分値は、しきい値外ということになる。しきい値を単一値に設定することは、ゼロと単一値間の値域を意味する。差分値は、差分値がしきい値の値域外である時は常に、ベースとされる値域のしきい値外である。
【００５２】
オフセット周波数レジスタ１１０に格納された値は、次に、現行周波数レジスタ１０６に加算、あるいは、減算され、その結果は、現行周波数レジスタに格納される。好ましくは、オフセットテーブルが、周波数オフセットを供給するように、構成されることであり、周波数オフセットは、周波数変更を、周波数の滑らかなリニアランプにすることができる。任意的に、オフセット周波数レジスタ１１０は、省略でき、オフセット値は、現行周波数レジスタ１０６に、オフセットテーブル１０８から、直接加算、あるいは、直接減算される。現行周波数レジスタ１０６に格納された、新しい周波数値は、次に、プログラム周波数生成器１１４をプログラムするために使用され、これにより、関連するプロセッサの周波数を、新しい現行の周波数値に設定する。
【００５３】
ランプ回路１００は、上記の動作を、差分値が所定のしきい値内になるまで、続ける。この時点で、関連するプロセッサは、目標周波数で動作し、適切な命令の処理を開始することができる。他の実施形態では、上記の動作は、所定のしきい値が達成される時でも、依然として続けられる。本実施形態では、ゼロ値は、オフセットレジスタ１１０に格納されており、それにより、これ以上の変更は、現行の周波数値に加えられない。次に、新しい目標周波数が、目標周波数レジスタに格納されると、ランプ回路１００は、自動的に動作を続け、現行の周波数を、新しい目標値にランプする。
【００５４】
先にも述べたように、ランプ回路１００は、ランプ回路１００の周波数値を電圧値に変更し、回路１００をプログラム電圧生成器に接続させることにより、電圧ランプ回路として動作可能である。
【００５５】
図４は、本発明の実施形態に基づき、パワーマネジメントをハードウエアベースのＪＡＶＡアクセラレータに供給するプロセス２００を示すフローチャートである。初期動作２０２では、前処理動作が、行われる。前処理動作には、ＪＡＶＡプログラムカウンタおよびスタックポインタの初期化、および、その他の、当業者には自明の前処理動作が、含まれる。
【００５６】
ＪＡＶＡモード動作２０４では、ＪＡＶＡモード信号が、ホストプロセッサから、ＪＡＶＡアプリケーションの開始に応じて供給される。ノーマル動作中は、ホストプロセッサは、そのノーマル動作モードに従い、動作する。このノーマル動作モードは、ホストノーマル動作電圧・周波数レジスタにより規定されるものである。その一方、ＪＡＶＡプロセッサは、そのローパワー動作モードに従い、動作する。このローパワー動作モードは、ＪＡＶＡロー電圧・周波数レジスタにより規定されるものである。ホストプロセッサは、一般に、メソッド呼び出し等の、複雑なＪＡＶＡ命令を除くＪＡＶＡ以外のすべての命令を実行する。ＪＡＶＡアプリケーションの開始と同時に、ホストプロセッサは、ＪＡＶＡモード信号を発生させる。それにより、パワーマネジメントシステムに対し、ＪＡＶＡアプリケーションが、ＪＡＶＡプロセッサにより実行されることが、伝えられる。ホストレジスタスイッチおよびＪＡＶＡレジスタスイッチは、次に、ＪＡＶＡモード信号を受信する。それにより、ホストレジスタスイッチおよびＪＡＶＡレジスタスイッチに対し、ホストおよびＪＡＶＡプロセッサを、動作モードに切り換えるよう命令する。
【００５７】
次に、ホスト電力低減動作２０６では、ホストプロセッサへの電力は、ＪＡＶＡモード信号に応じて減少される。ＪＡＶＡモード信号の受信と同時に、ホストレジスタスイッチは、ホストプロセッサのホスト目標電圧・周波数値を、ホストローパワー電圧・周波数レジスタに格納されている値に、設定する。ホストランプ回路は、次に、ホスト目標電圧・周波数値を使用して、徐々に、ホストプロセッサの現行の電圧および周波数を、ホスト目標電圧・周波数値まで減少させる。
【００５８】
先にも説明したように、ホストランプ回路は、小さな増分電圧・周波数の増加または減少を、ホストプロセッサの現行の電圧および周波数が、目標電圧・周波数値に到達するまでの間、供給する。各電圧および周波数の減分後、ホストランプ回路は、新しい減分電圧・周波数値を、ホストプロセッサに接続されている一組のプログラム電圧・周波数生成器に、供給する。一組のプログラム電圧・周波数生成器は、次に、ホストプロセッサの電圧および周波数を、新しい減分電圧・周波数値に設定する。
【００５９】
ＪＡＶＡ電力増加動作２０８では、ＪＡＶＡプロセッサへの電力が、ＪＡＶＡモード信号に応じて増加する。ＪＡＶＡモード信号受信と同時に、ＪＡＶＡレジスタスイッチは、ＪＡＶＡプロセッサに対するＪＡＶＡ目標電圧・周波数値を、ＪＡＶＡノーマル動作電圧・周波数レジスタに格納された値に、設定する。ＪＡＶＡランプ回路は、次に、ＪＡＶＡ目標電圧・周波数値を使用して、徐々に、ＪＡＶＡプロセッサの現行の電圧および周波数を、ＪＡＶＡ目標電圧・周波数値まで増加させる。
【００６０】
各電圧および周波数の増分後、ＪＡＶＡランプ回路は、新しい増分電圧・周波数値を、ＪＡＶＡプロセッサに接続されている一組のプログラム電圧・周波数生成器に、供給する。一組のプログラム電圧・周波数生成器は、次に、ＪＡＶＡプロセッサの電圧および周波数を、新しい増分電圧・周波数値に設定する。ノーマル動作電圧および周波数に到達後、ＪＡＶＡプロセッサは、ＪＡＶＡアプリケーションの実行を開始する。ＪＡＶＡプロセッサは、一般に、ＪＡＶＡアプリケーションを、ＪＡＶＡアプリケーションが完了するまで、あるいは、ＪＡＶＡプロセッサ１６が処理できない、複雑なＪＡＶＡ命令が現れるまで、引き続き実行する。
【００６１】
ＪＡＶＡ完了信号動作２１０では、ＪＡＶＡ完了信号が、ＪＡＶＡプロセッサから、ＪＡＶＡアプリケーションの実行停止時に、発生する。この時点で、ＪＡＶＡプロセッサは、ＪＡＶＡ完了信号、あるいは、中断信号を発生させ、これは、ホストレジスタスイッチおよびＪＡＶＡレジスタスイッチにより受信される。ＪＡＶＡ完了信号は、パワーマネジメントシステムに対して、ＪＡＶＡアプリケーションの実行停止を知らせる。
【００６２】
ＪＡＶＡ完了動作２１２では、ホストプロセッサへの電力は、次に、ＪＡＶＡ完了信号に応じて増加され、ＪＡＶＡプロセッサへの電力は、減少される。ＪＡＶＡ完了信号８４を受信すると同時に、ホストレジスタスイッチは、ホスト目標電圧・周波数値を、ホストノーマル動作電圧・周波数レジスタから供給される値に設定する。同様にして、ＪＡＶＡレジスタスイッチは、ＪＡＶＡ目標電圧・周波数値を、ＪＡＶＡロー電圧・周波数レジスタから供給される値に設定する。
【００６３】
この時点で、ホストランプ回路は、ホスト目標電圧・周波数値を使用して、徐々に、ホストプロセッサの現行の電圧および周波数を、ホスト目標電圧・周波数値まで、増加させる。同様の方法で、ＪＡＶＡランプ回路は、ＪＡＶＡ目標電圧・周波数値を使用して、徐々に、ＪＡＶＡプロセッサの現行の電圧および周波数を、ＪＡＶＡ目標電圧・周波数値まで、減少させる。
【００６４】
上記に記載される様に、ホストおよびＪＡＶＡランプ回路は、それぞれ、小さな増分電圧・周波数の増加または減少を、ホストプロセッサおよびＪＡＶＡプロセッサの現行の電圧および周波数が、各々の目標電圧・周波数値に到達するまでの間、供給する。各増分後、ホストランプ回路は、新しい増分電圧・周波数値を、ホストプロセッサに接続されている一組のプログラム電圧・周波数生成器に、供給する。一組のプログラム電圧・周波数生成器は、次に、ホストプロセッサの電圧および周波数を、新しい増分電圧・周波数値に設定する。
【００６５】
同様にして、各減分後、ＪＡＶＡランプ回路は、新しい減分電圧・周波数値を、ＪＡＶＡプロセッサに接続されている一組のプログラム電圧・周波数生成器に、供給する。一組のプログラム電圧・周波数生成器は、次に、ＪＡＶＡプロセッサの電圧および周波数を、新しい減分電圧・周波数値に設定する。こうして、電力は、ＪＡＶＡアプリケーションの実行停止時に、ホストプロセッサにおいて、増加するとともに、ＪＡＶＡプロセッサにおいては、減少する。この時点で、ホストプロセッサは、システムの制御を再開し、引き続きコンピュータ命令を実行する。
【００６６】
ＪＡＶＡの実行が停止すると、ローカルメモリキャッシュに格納されている情報を、ホストプロセッサが、システムバスを介して利用できるようになる。この情報を、ＪＡＶＡプロセッサが遮断されて、ローパワー動作モードに切り替わる前に供給するために、本発明は、アイドルディレイタイマを使用しており、このアイドルディレイタイマは、ＪＡＶＡレジスタスイッチおよびＪＡＶＡランプ回路の間に、接続されている。
【００６７】
アイドルディレイタイマは、ＪＡＶＡ電圧ランプ回路が、ＪＡＶＡ目標電圧・周波数値を、一組のＪＡＶＡロー電圧・周波数レジスタから供給される、より低い値に設定することを、遅延させる。遅延の長さは、ＪＡＶＡプロセッサのキャッシュメモリサイズの一関数であり、この遅延の長さは、キャッシュ内情報が、ＪＡＶＡプロセッサへのパワーが減少される前に、システムメモリに転送されるように、設定される。なお、アイドルディレイタイマは、ＪＡＶＡプロセッサが、ＪＡＶＡ完了信号を発生させる時にのみ、機能することが好ましい。
【００６８】
後処理動作は、次に、動作２１４において行われる。後処理動作には、ＪＡＶＡメソッド呼び出しの実行、および、その他の、当業者には自明の後処理動作が、含まれる。有利なことには、ホストおよびＪＡＶＡプロセッサ両方の動作電圧、および、動作周波数を、共に制御することにより、コンピュータシステムの最適電力およびパフォーマンスが、可能になる。
【００６９】
図５は、本発明の実施形態に基づき、プロセッサに供給される変更を鈍化させるためのランプ回路プロセス３００を示すフローチャートである。ランプ回路プロセス３００は、電圧ランプ回路プロセスとして記載されているが、ランプ回路プロセス３００は、プロセッサの周波数あるいは電圧のいずれかを、ランプするために使用することができる。以下の電圧値を、周波数値に差し替えることにより、ランプ回路プロセス３００は、周波数ランプ回路プロセスとして使用できる。初期動作３０２では、前処理動作が、行われる。前処理動作には、ノーマル動作、および、ローパワー電圧・周波数レジスタの初期化、および、その他の、当業者には自明の前処理動作が、含まれる。
【００７０】
目標値動作３０４では、目標値は、電圧・周波数レジスタから得られる。目標電圧値は、一組の、ノーマル動作あるいはローのいずれかの電圧レジスタから、現行のパワー動作モードに従い、得られ、そして、この目標電圧値は、目標電圧レジスタに格納される。関連するプロセッサの、現行の動作電圧は、現行電圧レジスタに格納されている。
【００７１】
次に、比較動作３０６では、目標値は、現行値と比較され、差分値を得る。クロック信号毎に、コンパレータは、目標電圧レジスタに格納されている値を、現行電圧レジスタに格納されている値と比較し、差分値を出す。この差分値とは、目標電圧レジスタに格納されている値と、現行電圧レジスタに格納されている値間の、値の差である。
【００７２】
次に、差分値が、所定のしきい値外であるかどうかを、動作３０８において、決定する。所定のしきい値は、容認できる周波数の範囲の値、単一値、あるいは、ゼロでもよい。しきい値をゼロに設定することは、差分値がゼロではない時は常に、差分値は、しきい値外ということになる。しきい値を単一値に設定することは、ゼロと単一値間の値域を意味する。差分値は、差分値がしきい値の値域外である時は常に、ベースとされる値域のしきい値外である。差分値が、所定のしきい値外であれば、ランプ回路プロセス３００は、引き続き、表検索動作３１０を行う。そうでなければ、ランプ回路プロセス３００は、動作３１２において完了する。
【００７３】
差分値は、オフセットテーブルで表検索を行うために、表検索動作３１０において使用される。複数の電圧入力を含むオフセットテーブルが、提供されている。オフセットテーブル内の差分値を調べることにより、オフセット電圧値が、得られる。結果として生じる、オフセットテーブルからのオフセット値は、次に、オフセット電圧レジスタに格納される。好ましくは、オフセットテーブルが、電圧オフセットを供給するように構成されていることであり、電圧オフセットは、プロセッサの電圧変更を、電圧の滑らかなリニアランプにすることができる。
【００７４】
調整動作３１４では、現行の電圧は、動作３１０において得られたオフセット電圧に基づいて、調整される。オフセット電圧レジスタに格納されている値は、現行電圧レジスタに格納されている値に加算、あるいは、減算され、その結果は、現行電圧レジスタに格納される。任意的に、オフセット電圧レジスタは、省略でき、オフセット値は、現行電圧レジスタに、オフセットテーブルから、直接加算、あるいは、直接減算される。
【００７５】
電圧プログラム動作３１６では、新しい現行の電圧が、プログラム電圧生成器に供給される。新しい電圧値は、現行電圧レジスタに格納され、この電圧値は、プログラム電圧生成器をプログラムするために使用され、それにより、関連するプロセッサの電圧を、新しい現行の電圧値に設定することができる。ランプ回路プロセス３００は、次に、別の比較動作３０４を引き続き行う。なお、現行電圧レジスタは、新たに調整された現行の電圧値を含む。
【００７６】
現行の電圧値が、所定のしきい値内の時、ランプ回路プロセス３００は、動作３１２において完了する。この時点で、関連するプロセッサは、目標電圧で動作し、適切な命令の処理を開始することができる。
【００７７】
他の実施形態では、ランプ回路プロセス３００は、所定のしきい値が達成されている時でも、他の比較動作３０４を依然として続けるものである。本実施形態では、ゼロ値は、オフセットレジスタに格納されており、それにより、これ以上の変更は、現行の周波数値に加えられない。新しい目標電圧が、目標電圧レジスタに格納されると、ランプ回路は、自動的に動作を続け、現行の電圧を新しい目標値にランプする。
【００７８】
ランプ回路プロセス３００は、電圧および周波数の変更の、適切な優先順位を保証する。特に、プロセッサへの電力が、ローパワーからノーマルパワーへ切り替わる時、電圧は、周波数が増加される前に、増加される。逆に、プロセッサへの電力が、ノーマルパワーからローパワーへ切り替わる時、周波数は、電圧が減少される前に、減少される。
【００７９】
有利なことには、ランプ回路プロセス３００は、電源あるいはデジタル回路のいずれもが、動作条件の変更中に、ストレスを受けないことを保証し、また、プロセッサ間のメモリ更新ができるよう、動作条件変更間には十分な時間を保証するものである。
【００８０】
先に述べた発明は、理解を明瞭にする目的で多少詳細に記載されているが、一部の変更および修正は、添付のクレームの範囲内において、可能である。従って、本実施形態は、例示的なものであって限定的なものではなく、本発明は、ここに記載の詳細に限定されるものではなく、添付のクレームの範囲および均等内において、修正できるものである。
【図面の簡単な説明】
本発明は、その更なる利点と共に、以下の説明を、添付の図面と併せて参照することにより、最大に理解されるであろう。
【図１】
図１は、本発明の実施形態に基づき、ＪＡＶＡハードウエアアクセラレータシステムを示すブロック図である。
【図２】
図２は、本発明の実施形態に基づき、パワーマネジメントシステムを示すブロック図である。
【図３】
図３は、本発明の実施形態に基づき、模範的なランプ回路を示すブロック図である。
【図４】
図４は、本発明の実施形態に基づき、パワーマネジメントを、ハードウエアベースのＪＡＶＡアクセラレータに供給するプロセスを示すフローチャートである。
【図５】
図５は、本発明の実施形態に基づき、プロセッサに供給される変更を、鈍化させるためのランプ回路プロセスを示すフローチャートである。
【図１】
2004507814.tif 000003
【図２】
2004507814.tif 000004
【図３】
2004507814.tif 000005
【国際公開パンフレット】
2004507814.tif 000006
2004507814.tif 000007
2004507814.tif 000008
2004507814.tif 000009
2004507814.tif 000010
2004507814.tif 000011
2004507814.tif 000012
2004507814.tif 000013
2004507814.tif 000014
2004507814.tif 000015
2004507814.tif 000016
2004507814.tif 000017
2004507814.tif 000018
2004507814.tif 000019
2004507814.tif 000020
2004507814.tif 000021
2004507814.tif 000022
2004507814.tif 000023
2004507814.tif 000024
2004507814.tif 000025
2004507814.tif 000026
2004507814.tif 000027
2004507814.tif 000028
2004507814.tif 000029
2004507814.tif 000030
2004507814.tif 000031
2004507814.tif 000032
2004507814.tif 000033
【国際公開パンフレット（コレクトバージョン）】
2004507814.tif 000034
【国際調査報告】
2004507814.tif 000035
2004507814.tif 000036
2004507814.tif 000037
2004507814.tif 000038
2004507814.tif 000039