(57)【特許請求の範囲】
【請求項１】
コンパイラプログラムが読み込まれたコンピュータを用いたコンパイル方法であって、
コンピュータが、ユーザプログラムの入力を受けてターゲットとなるハードウェアが解釈可能な暫定オブジェクトコードを生成する手順と、
前記コンピュータが、前記暫定オブジェクトコードを前記ハードウェアが実行した場合に前記ハードウェアから生じる発熱量を、前記ハードウェアの発熱量と前記ユーザプログラム内の命令または命令列との関係を記述した第１のテーブルを参照しながら算出する手順と、
前記コンピュータが、前記ハードウェアの熱に関する仕様範囲を記述した第２のテーブルを参照することにより、算出された前記発熱量が前記仕様範囲内にあるかどうかを判定する手順と、
前記コンピュータが、算出された前記発熱量が前記仕様範囲内にあると判定した場合は前記暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、
前記コンピュータが、算出された前記発熱量が前記仕様範囲を超えると判定した場合は前記暫定オブジェクトコード内で前記仕様範囲を超える発熱の原因となるコード部分を最適化対象部分として発見し、第３のテーブルに記述された低電力用の複数の命令または命令列を用いて前記最適化対象部分による温度上昇を考慮した最適化処理を実行する手順と、
前記コンピュータが、前記最適化処理を実行した暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、
を備え、
前記ハードウェアは、使用を停止した場合の発熱量が、使用した場合の発熱量と比較して小さくなるように設定されている複数のパイプラインを備え、
前記最適化処理を実行する手順は、前記コンピュータが、前記複数のパイプラインのうち一部のパイプラインへの命令発行を停止する手順を含む、
コンパイル方法。
【請求項２】
コンパイラプログラムが読み込まれたコンピュータを用いたコンパイル方法であって、
コンピュータが、ユーザプログラムの入力を受けてターゲットとなるハードウェアが解釈可能な暫定オブジェクトコードを生成する手順と、
前記コンピュータが、前記暫定オブジェクトコードを前記ハードウェアが実行した場合に前記ハードウェアから生じる発熱量を、前記ハードウェアの発熱量と前記ユーザプログラム内の命令または命令列との関係を記述した第１のテーブルを参照しながら算出する手順と、
前記コンピュータが、前記ハードウェアの熱に関する仕様範囲を記述した第２のテーブルを参照することにより、算出された前記発熱量が前記仕様範囲内にあるかどうかを判定する手順と、
前記コンピュータが、算出された前記発熱量が前記仕様範囲内にあると判定した場合は前記暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、
前記コンピュータが、算出された前記発熱量が前記仕様範囲を超えると判定した場合は前記暫定オブジェクトコード内で前記仕様範囲を超える発熱の原因となるコード部分を最適化対象部分として発見し、第３のテーブルに記述された低電力用の複数の命令または命令列を用いて前記最適化対象部分による温度上昇を考慮した最適化処理を実行する手順と、
前記コンピュータが、前記最適化処理を実行した暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、
を備え、
前記ハードウェアは、マルチプロセッサシステムを備え、
前記最適化対象部分は、処理時間が短いプロセッサが、処理時間の長いプロセッサの動作が終了するまで待機しなければならない部分に該当し、
前記最適化処理を実行する手順は、前記コンピュータが、前記第３のテーブル内の前記複数の命令または命令列から、処理速度を犠牲にして発熱量が小さくなる命令または命令列を選択し、前記待機しなければならない部分の命令または命令列を、前記選択した命令または命令列に置換する手順を含む、
コンパイル方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンパイル方法、コンパイラ、このコンパイラを格納した記録媒体、コンパイル方法により作成されたオブジェクトコードを格納した記憶装置およびこの記憶装置を備えるプロセッサに関し、特にプロセッサの発熱量が規定値を超えないようにユーザプログラムをオブジェクトコードに変換するコンパイラの機能を対象とする。
【０００２】
【従来の技術】
マイクロプロセッサ等の半導体機器は、近年の高周波数化に伴い、素子から発生する熱の量が増大する傾向にある。素子の温度が上昇すると、半導体機器に対して一時的な動作不良や半永久的な故障を引き起こす場合がある。このような問題を回避するため、従来は、一般的に以下のような対策が講じられてきた。
【０００３】
（１）半導体機器に十分な法熱処理を施したり放熱装置を設けることにより、素子からの発熱量が最大になったときにも、素子の温度が規定温度を超えないようにする。
（２）機器の放熱量が一定であるという制約の下で、素子の動作周波数を下げる。
（３）素子の温度上昇を監視し、規定温度以上にまで上昇した場合に機器の動作周波数をダイナミックに低減する。
【０００４】
【発明が解決しようとする課題】
しかしながら、上述した対策にはそれぞれ以下のような問題があった。
即ち、対策（１）では、一般的にコストの上昇を伴うため、一般消費者向きの機器、特に家庭用ゲーム機に採用することは困難である。
【０００５】
また、（２）、（３）の対策については、これを実現するハードウェアは従来から存在するものの、放熱量に応じた動作周波数をＯＳで管理しようとすると、その自由度が低下する一方、明示的に温度を制御するプログラムをユーザが作成することは過大な負担を強いることになるという問題点があった。
【０００６】
本発明は上記事情に鑑みてなされたものであり、その目的は、素子または機器の発熱量が規定値以下となるようにユーザプログラムをオブジェクトコードに変換するコンパイル方法を提供することにある。
【０００７】
【課題を解決するための手段】
本発明は、プロセッサおよびこれを含むシステムの発熱をソフトウェアにより静的に制御することにより上記課題の解決を図る。
【０００８】
即ち、本発明の第１の態様によれば、
コンパイラプログラムが読み込まれたコンピュータを用いたコンパイル方法であって、コンピュータが、ユーザプログラムの入力を受けてターゲットとなるハードウェアが解釈可能な暫定オブジェクトコードを生成する手順と、  上記コンピュータが、上記暫定オブジェクトコードを上記ハードウェアが実行した場合に上記ハードウェアから生じる発熱量を、上記ハードウェアの発熱量と上記ユーザプログラム内の命令または命令列との関係を記述した第１のテーブルを参照しながら算出する手順と、上記コンピュータが、上記ハードウェアの熱に関する仕様範囲を記述した第２のテーブルを参照することにより、算出された上記発熱量が上記仕様範囲内にあるかどうかを判定する手順と、上記コンピュータが、算出された上記発熱量が上記仕様範囲内にあると判定した場合は上記暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、上記コンピュータが、算出された上記発熱量が上記仕様範囲を超えると判定した場合は上記暫定オブジェクトコード内で上記仕様範囲を超える発熱の原因となるコード部分を最適化対象部分として発見し、第３のテーブルに記述された低電力用の複数の命令または命令列を用いて上記最適化対象部分による温度上昇を考慮した最適化処理を実行する手順と、上記コンピュータが、上記最適化処理を実行した暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、を備え、上記ハードウェアは、使用を停止した場合の発熱量が、使用した場合の発熱量と比較して小さくなるように設定されている複数のパイプラインを備え、上記最適化処理を実行する手順は、上記コンピュータが、上記複数のパイプラインのうち一部のパイプラインへの命令発行を停止する手順を含む、コンパイル方法が提供される。
【００１０】
また、本発明の第２の態様によれば、
コンパイラプログラムが読み込まれたコンピュータを用いたコンパイル方法であって、コンピュータが、ユーザプログラムの入力を受けてターゲットとなるハードウェアが解釈可能な暫定オブジェクトコードを生成する手順と、上記コンピュータが、上記暫定オブジェクトコードを上記ハードウェアが実行した場合に上記ハードウェアから生じる発熱量を、上記ハードウェアの発熱量と上記ユーザプログラム内の命令または命令列との関係を記述した第１のテーブルを参照しながら算出する手順と、上記コンピュータが、上記ハードウェアの熱に関する仕様範囲を記述した第２のテーブルを参照することにより、算出された上記発熱量が上記仕様範囲内にあるかどうかを判定する手順と、上記コンピュータが、算出された上記発熱量が上記仕様範囲内にあると判定した場合は上記暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、上記コンピュータが、算出された上記発熱量が上記仕様範囲を超えると判定した場合は上記暫定オブジェクトコード内で上記仕様範囲を超える発熱の原因となるコード部分を最適化対象部分として発見し、第３のテーブルに記述された低電力用の複数の命令または命令列を用いて上記最適化対象部分による温度上昇を考慮した最適化処理を実行する手順と、上記コンピュータが、上記最適化処理を実行した暫定オブジェクトコードを最終オブジェクトコードとして出力する手順と、を備え、上記ハードウェアは、マルチプロセッサシステムを備え、上記最適化対象部分は、処理時間が短いプロセッサが、処理時間の長いプロセッサの動作が終了するまで待機しなければならない部分に該当し、上記最適化処理を実行する手順は、上記コンピュータが、上記第３のテーブル内の上記複数の命令または命令列から、処理速度を犠牲にして発熱量が小さくなる命令または命令列を選択し、上記待機しなければならない部分の命令または命令列を、上記選択した命令または命令列に置換する手順を含む、コンパイル方法が提供される。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態のいくつかについて図面を参照しながら説明する。
まず、本発明にかかるコンパイル方法の適用対象となる半導体機器の発熱態様の一例について図面を参照しながら説明する。
【００１５】
図１は、あるゲーム機器に用いられる一半導体チップの単位サイクルごとの発熱量を示すグラフである。この半導体チップについては、同図に示すように、各タイムインターバルで許容される総発熱量Ｈ１と限界ピーク発熱量Ｈ２が設定されている。この半導体チップの場合、タイムインターバルＴＩ０においては総発熱量が許容量Ｈ１を超過しており、また、タイムインターバルＴＩ１内のある時間帯では発熱量が限界ピーク発熱量Ｈ２を超過している。このような状態を放置すれば、ゲーム機に一時的な動作不良が発生するおそれがあり、ひいては機器の故障の要因となる可能性があるため、チップの発熱を抑制する必要がある。本発明の一特徴は、ユーザプログラム内の命令または命令列（以下、命令等という）のそれぞれについて処理時間の裕度を判断し、その処理が時間的に余裕があり、かつ温度を抑制したい場合、例えば発熱を抑制する機能を起動する命令を追加し、また、例えば発熱量が少ないサブルーチンを選択する点にある。これにより、処理がクリティカルな部分では最高のパフォーマンスを得ると同時に、仕様に適合した範囲内となるように機器の温度を制御するものである。
【００１６】
（１）コンパイラの実施形態
まず、本発明にかかるコンパイラの実施の一形態について図２を参照しながら説明する。
図２は、本発明にかかるコンパイラの一実施形態の概略機能を説明する模式図である。本実施形態のコンパイラ２は、補助記憶装置を備える図示しないコンピュータにより実行される。このコンピュータには、ライブラリＬ２〜Ｌ８が接続される。ライブラリＬ２は、コンパイル時に必要な各種のパラメータが格納されている。これらのパラメータは、ターゲットとするシステムの限界温度やプログラム実行時の期待温度を含む。ライブラリＬ４は、命令等を実行した場合にチップ内のプロセッサに発生する発熱量をＣＡＤツールやシミュレーションにより予め設計時に算出して得られた、発熱量対命令等のテーブルが格納される。ライブラリＬ６には、低電力のサブルーチンが格納され、また、ライブラリＬ８には、高速動作用のサブルーチンが格納される。高速動作用サブルーチンとしては、例えば画像処理において高品質の画像を提供するが発熱量が大きくなってしまう関数が挙げられる。低電力のサブルーチンとしては、例えば画像処理において画像の質は少々劣るが発熱量を抑えられる関数が挙げられる。また、プロセッサ自体がハードウェア上の機能を備える場合は、低電力用サブルーチンに、プロセッサの周波数や電源電圧を下げるような特殊命令や処理パイプの本数を少なくするような特殊命令を予め用意しても良い。これらのサブルーチンの取り扱いについては後に詳述する。
【００１７】
コンパイラ２は、各種パラメータをライブラリＬ２から取り込み、ソースコードとしてのユーザプログラムＳＣに対して通常のアセンブラ列を作成し、暫定オブジェクトコードＯＣ２として出力する。次に、コンパイラ２は、この暫定オブジェクトコードＯＣ２を仮実行し、ライブラリＬ４の発熱量対命令等のテーブルを参照しながら、各命令に対応して発熱量を記述したプロファイルＰＦを作成する。このプロファイルＰＦに基づいてコンパイラ２は、暫定オブジェクトコードＯＣ２内で、限界ピーク発熱量を超えて発熱する部分と、各インターバルで総発熱量を超えて発熱するコード部分（以下、最適化対象部分という）を発見する。プログラム内で処理速度よりも発熱量を重視することをユーザが予め明示的に指定している場合は、コンパイラ２は、最適化対象部分に対する最適化処理をユーザに促す。ユーザによる明示的な指定がない場合は、コンパイラ２は、ライブラリＬ６およびＬ８から各種のサブルーチンを取り出し、これらのサブルーチンを利用しながら最適化対象部分について発熱量を考慮した温度最適化処理を実行する。コンパイラ２は、以上の処理を暫定オブジェクトコードがターゲットとする素子等の温度条件を満たすまで繰り返し、温度条件を満たす暫定オブジェクトコードを最終的なオブジェクトコードＯＣ４として出力する。
図２に示すコンパイラ２のより具体的な機能について本発明にかかるコンパイル方法の実施の形態のいくつかとして以下に説明する。
【００１８】
（２）コンパイル方法の第１の実施形態
まず、本発明にかかるコンパイル方法の第１の実施の形態について図３〜図６を参照しながら説明する。図３は、本実施形態のコンパイル方法の概略手順を示すフローチャートである。
まず、コンパイラ２は、ライブラリＬ２およびＬ４から各種パラメータを取り込む（ステップＳ１）。つぎに、コンパイラ２は、ユーザプログラムＳＣに対して通常のアセンブラ列を作成して暫定オブジェクトコードＯＣ２として出力する（ステップＳ２）。次に、コンパイラ２は、上述した発熱量対命令等のテーブルを参照しながら、暫定オブジェクトコードＯＣ２を仮実行することにより、プロファイルＰＦを作成して出力する（ステップＳ３）。このプロファイルＰＦには、仮実行時に各サブルーチンに関連づけられた予測ピーク発熱量のデータや総発熱量のデータが記述されている。続いて、コンパイラ２は、このプロファイルＰＦに基づいて、作成したアセンブラ列が温度条件を満たすか否かを判定する（ステップＳ４）。温度条件を満たす場合は、オブジェクトコードの最適化処理を行う必要がないので、作成したアセンブラ列による処理が所定時間内に終了することを確認して（ステップＳ１１）、このアセンブラ列を最終的なオブジェクトコードＯＣ４として出力し、コンパイル動作を終了する。
【００１９】
作成したアセンブラ列が温度条件を満たさない場合、コンパイラ２は、プロファイルＰＦに基づいて、暫定オブジェクトコードＯＣ２内で最適化対象部分を発見する（ステップＳ５）。前述したとおり、ユーザが最適化対象部分を予め明示的に指定している場合は（ステップＳ６）、コンパイラ２がその最適化対象部分を指示し（ステップＳ７）、ユーザに最適化処理を促す（ステップＳ８）。ユーザにより指定された最適化対象部分の一具体例を図４に示す。同図に示すプログラム中、“begin  low_power”と“end  low_power”は、コンパイラディレクティブ（指示子）であり、これらに囲まれたプログラム部分“bar();”は、処理速度よりも温度を優先して最適化することを示す。最適化対象部分がユーザにより予め指定されていない場合にコンパイラ２が該当部分を発見する手法の一例を図５に示す。同図（ａ）は、ユーザプログラム中のmain関数の一例を示し、同図（ｂ）は、プロファイルＰＦ中で（ａ）に示すmain関数中の各関数ごとに関連づけられた各インターバルでの総発熱量の最高値を示す。図５（ｂ）に示すように、bar関数の総発熱量の最高値は１００、barbar関数の総発熱量の最高値は１０、barbarbar関数の総発熱量の最高値は２０と記述されている。ここで、例えば総発熱量１００がプロセッサの許容総発熱量Ｈ１（図１参照）を越えている場合は、bar関数について処理速度よりも温度、即ち、発熱量の低さを優先するように命令を最適化することになる。
【００２０】
図３を再び参照し、最適化対象部分がユーザにより予め明示的に指定されていない場合は（ステップＳ６）、コンパイラ２は、最適化対象部分についてその部分による温度上昇を考慮した最適化処理を実行する。即ち、コンパイラ２は、ステップＳ５で発見した最適化対象部分に対して、プロファイルＰＦに記述されたサブルーチンごとの予測ピーク発熱量および総発熱量のデータを参照し、ライブラリＬ６（図２参照）に格納された複数の低電力サブルーチンから最適のサブルーチンを選択する（ステップＳ９）。続いて、コンパイラ２は、各サブルーチンを、選択した低電力サブルーチンに置換することにより命令列を組み替える（ステップＳ１０）。図６は、最適のサブルーチンを選択するための一具体例を説明する模式図である。本例は、プロセッサがsqrt(√)のような複雑な演算を処理する演算器を含む場合の例である。低電力用のライブラリＬ６（図２参照）には、演算精度を気にしない場合に用いられる単精度バージョンのサブルーチンが格納され、この一方、ライブラリＬ８（図２参照）には、演算精度を優先する場合の倍精度バージョンのサブルーチンが格納されている。コンパイラ２は、同図に示すように、状況に応じて最適のライブラリやサブルーチンを割り当てる。このようなマッピング処理は、グラフィックプロセッサの場合で、発熱量が許容値からみて厳しいが画像が少々粗くなっても良いような演算の場合に、特に有利である。
【００２１】
図３に戻り、コンパイラ２は、組み替えた命令列に対して再度仮実行を行い、温度条件が満たされるまで上述した手順を繰り返す（ステップＳ３〜Ｓ１０）。これらの手順により、温度条件が満たされるようになると（ステップＳ４）、コンパイラ２は、最後に組み替えた命令列による処理が所定時間内に終了することを確認する（ステップＳ１１）。所定時間内に終了する場合は、処理速度と発熱の双方がプロセッサの仕様に合致するので、最後の命令列を最終のオブジェクトコードＯＣ４として出力し、コンパイル動作を終了する。所定時間内に終了しない場合は、処理速度と発熱の双方がプロセッサの仕様を満足していないので、コンパイラ２は、最適化対象部分を指示してエラーを出力し（ステップＳ１２）、動作を終了する。このように、処理速度および発熱量の双方でプロセッサの仕様を満足するオブジェクトコードが得られない場合であっても、問題となる最適化対象部分がユーザに示されるので、ユーザは、改めて問題部分を探索する必要なく、ユーザプログラムの見直しに着手することができる。なお、本実施形態では、サブルーチンによる最適化処理を実行する形態について説明したが、これに限ることなく、例えばサブルーチンよりも細かい粒度を用いて最適化しても良い。この点は、以下に述べる第２〜第４の実施形態についても同様である。
【００２２】
（３）コンパイル方法の第２の実施形態
次に、本発明にかかるコンパイル方法の第２の実施の形態について図７および図８を参照しながら説明する。本実施形態は、オブジェクトコードを実行するプロセッサまたはこれを含むシステムに、周波数や電源電圧を低減させる機能が備えられている場合に好適な形態である。
図７は、本実施形態のコンパイル方法の概略手順を説明するフローチャートである。図３との対比において明らかなように、本実施形態の特徴は、プログラムの最適化処理手順を表わすステップＳ２６にある。従って、以下ではステップＳ２６を中心に説明する。
【００２３】
即ち、第１の実施形態と同様に、各種パラメータを取り込み（ステップＳ１１）、ユーザプログラムＳＣに対して通常のアセンブラ列を作成して暫定オブジェクトコードＯＣ２を出力する（ステップＳ２２）。次に、コンパイラ２は、発熱量対命令等のテーブルを参照しながら、暫定オブジェクトコードＯＣ２を仮実行することにより、プロファイルＰＦを作成して出力する（ステップＳ２３）。続いて、コンパイラ２は、このプロファイルＰＦに基づいて、作成したアセンブラ列が温度条件を満たすか否かを判定する（ステップＳ２４）。作成したアセンブラ列が温度条件を満たさない場合、コンパイラ２は、出力したプロファイルＰＦに基づいて暫定オブジェクトコードＯＣ２内で最適化対象部分を発見する（ステップＳ２５）。
【００２４】
本実施形態においては、発熱量を抑える命令等をコンパイラ２が自動的に挿入する（ステップＳ２６）。図８は、コンパイラ２が発熱量を抑える命令等を挿入する一具体例を示す。同図の上部に示すブロックＢＬ２は、bar関数内で発熱が問題となるブロックであり、コンパイラ２により発見された最適化対象部分の一例である。図８の下部に示すように、本実施形態において、コンパイラ２は、ブロックＢＬ２のbar関数の入り口と出口に特殊命令lowpwr,  normalを追加する。ここでlowpwr命令は、周波数や電源電圧を低減させるための命令であり、また、normal命令は、変更した周波数、電源電圧を元に戻す命令である。
このように、本実施形態によれば、プロセッサまたはシステムが、周波数や電源電圧を低減させる機能を備える場合は、発熱量を抑える命令等をアセンブラ列内に挿入するので、機器の発熱を容易に抑制することができる。
【００２５】
（４）コンパイル方法の第３の実施形態
次に、本発明にかかるコンパイル方法の第３の実施の形態について図９〜図１１を参照しながら説明する。本実施形態は、複数のパイプラインであって、かつ、使用を停止した場合の発熱量が、使用した場合の発熱量と比較して小さくなるように設定されているパイプラインを備えるプロセッサに好適な形態である。このようなプロセッサとしては、典型的にはスーパスカラプロセッサやＶＬＩＷプロセッサが挙げられる。
図９は、本実施形態のコンパイル方法の概略手順を説明するフローチャートである。前述した第３の実施形態と同様に、本実施形態の特徴は、プログラムの最適化処理手順を表わすステップＳ４６にある。本実施形態のその他の手順は、図７に示す第２の実施形態と実質的に同一であるので、以下ではステップＳ４６を中心に説明する。
【００２６】
まず、第２の実施形態と同様に、コンパイラ２は、各種パラメータを取り込み（ステップＳ４１）、ユーザプログラムＳＣに対して通常のアセンブラ列を作成して暫定オブジェクトコードＯＣ２を出力した後に（ステップＳ４２）、発熱量対命令等のテーブルを参照しながら、暫定オブジェクトコードＯＣ２を仮実行し、プロファイルＰＦを作成して出力する（ステップＳ４３）。続いて、コンパイラ２は、このプロファイルＰＦに基づいて、作成したアセンブラ列が温度条件を満たすか否かを判定する（ステップＳ４４）。作成したアセンブラ列が温度条件を満たさない場合、コンパイラ２は、出力したプロファイルＰＦに基づいて暫定オブジェクトコードＯＣ２内で最適化対象部分を発見する（ステップＳ４５）。この結果、あるインターバルで発熱量が制限値を超えていることが判明した場合、コンパイラ２は、複数のパイプラインのうち一部のパイプラインへの命令発行を停止し、さらに、発熱を抑制する命令等を追加する（ステップＳ４６）。図１０および図１１は、このステップ４６の手順を具体的に説明するための模式図である。図１０は、nop命令等を受けて発熱を抑制する機能を備えるプロセッサが有する２本のパイプライン（パイプ０およびパイプ１）の動作モードを表わし、これらのうち、パイプ１での処理により、タイムインターバルＴ２，Ｔ３で発熱量が制限値を超えていることがプロファイルＰＦの情報から判明すると、コンパイラ２は、パイプライン１への命令発行を停止して発熱を抑制する命令等を追加する。同図に示す具体例においては、コンパイラ２は、２つのパイプをそれぞれ独立に動作させる命令等を発行するデュアル・イシュー・モードから単一のパイプのみ動作させる命令等を発行するシングル・イシュー・モードへ命令を変更する。図１１は、図１０に示すパイプライン０，１の動作を示し、（ａ）はデュアル・イシュー・モードでの動作を表わし、（ｂ）はシングル・イシュー・モードでの動作を表わし、さらに、（ｃ）は、コンパイラ２によりnop命令が挿入された状態を表わす。
【００２７】
このように、本実施形態のコンパイル方法によれば、使用停止中は通常使用時よりも発熱量が抑制されるパイプラインをターゲットのハードウェアが備える場合に、動作モードを変更する命令等を挿入するので、機器の発熱量を抑制するオブジェクトコードを容易に生成することができる。
【００２８】
（５）コンパイル方法の第４の実施形態
次に、本発明にかかるコンパイル方法の第４の実施の形態について図１２を参照しながら説明する。本実施形態は、図１に示す手順をマルチプロセッサシステムに適用した場合のコンパイル方法である。従って、その概略手順全体の説明は省略し、以下では最適化方法（図１のステップＳ９）を中心に説明する。
【００２９】
通常、マルチプロセッサシステムでは、各プロセッサ毎に処理が異なり、このためプログラムの部分々々においてプロッセサ同士で同期を取る必要がある。従って、ある同期時点と次の同期時点との間に挟まれたプログラム部分では、処理の軽い（処理時間が短い）プロセッサは、同一のプログラム部分において処理が重い（処理時間が長い）プロセッサの動作が終了するまで待機しなければならない。このとき、処理の軽いプロセッサにおいて機器全体の正常動作に影響を及ぼすほど発熱量が大きい場合は、処理速度を重視する命令等よりも発熱量の小ささを重視するような命令等やサブルーチンを選択させることが望ましい。本実施形態のコンパイル方法の特徴は、最適化対象部分が同期待ちの部分に該当し、かつ、処理速度を落としても問題がない場合に、その部分の命令等を、発熱量を重視する命令等またはサブルーチンに置換する点にある。
【００３０】
図１２は、プロセッサＡ，Ｂ，Ｃを含むマルチプロセッサに、あるオブジェクトコードを実行させた場合に生ずる発熱量を最適化処理前と最適化処理後に対比させて表わす模式図である。同図左側に示すように、この例に示すマルチプロセッサではプロセッサＢ，Ｃは、プロセッサＡと比較して処理が軽いために、プロセッサＡの処理が終了するまで同期待ちしている。この一方、プロセッサＢ，Ｃの同期点間の発熱量は、同期待ちを含めてそれぞれ１００，１３０となっており、これが機器全体の正常動作に影響を及ぼすものとする。
【００３１】
コンパイラ２は、これらのプロセッサＢ，Ｃ用のユーザプログラムに対し、処理速度を犠牲にして発熱量が小さくなるように命令列を生成する。このような最適化処理後の発熱量を図１２の右側に示す。最適化処理により、プロセッサＢ，Ｃの処理速度は遅くなったが、同期点間の発熱量は、それぞれ５０，６０となり、機器全体の発熱量が大幅に低減することが分かる。
【００３２】
このように、本実施形態によれば、余計な同期待ちのプログラム部分に対し、処理速度よりも発熱量の小ささを優先してオブジェクトコードを生成するので、ハードウェア資源を有効に活用しながら発熱量を抑制するコンパイル方法が提供される。
【００３３】
（６）記録媒体
上述したコンパイラは、フロッピーディスクやＣＤ−ＲＯＭ等の記憶媒体に収納し、コンピュータに読込ませて実行させても良い。これにより、本発明にかかるコンパイル方法を汎用コンピュータを用いて実現することができる。記録媒体は、磁気ディスクや光ディスク等の携帯可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記憶媒体でも良い。また、上述したコンパイラをインターネット等の通信回線（無線通信を含む）を介して頒布しても良い。さらに、上述したコンパイラを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記憶媒体に収納して頒布しても良い。
【００３４】
（７）記憶装置およびプロセッサ
上述したコンパイル方法またはコンパイラにより生成されたオブジェクトコードは、記憶装置に格納してプロセッサに実行させても良い。また、プロセッサが記憶装置を内蔵する場合は、この内部記憶装置に上述したコンパイル方法またはコンパイラにより生成されたオブジェクトコードを格納してプロセッサに実行させても良い。これにより、ハードウェア資源を有効に活用しながら発熱量を抑制できる記憶装置またはプロセッサが提供される。
【００３５】
【発明の効果】
以上詳述したとおり、本発明は、以下の効果を奏する。
即ち、本発明によれば、ハードウェアからの発熱を抑制できるコンパイル方法、このコンパイル方法をコンピュータに実行させるコンパイラ、およびこれを格納した記録媒体が提供される。
【００３６】
また、本発明によれば、上述したコンパイル方法により生成され最適化処理がされたオブジェクトコードを記憶するので、ハードウェアの発熱量をその仕様範囲内に抑制できる記憶装置が提供される。
【００３７】
さらに、本発明によれば、上述した記憶装置を備えるので、仕様範囲を超えて発熱することなく安定して動作するプロセッサが提供される。
【図面の簡単な説明】
【図１】あるゲーム機器に用いられる一半導体チップの単位サイクルごとの発熱量を示すグラフである。
【図２】本発明にかかるコンパイラの一実施形態の概略機能を説明する模式図である。
【図３】本発明にかかるコンパイル方法の第１の実施の形態の概略手順を示すフローチャートである。
【図４】ユーザにより指定された最適化対象部分の一具体例を示す図である。
【図５】（ａ）は、ユーザプログラム中のmain関数の一例を示し、（ｂ）は、（ａ）に示すmain関数中の各関数ごとに関連づけられた各インターバルでの総発熱量の最高値を示す。
【図６】最適のサブルーチンを選択するための一具体例を説明する模式図である。
【図７】本発明にかかるコンパイル方法の第２の実施の形態の概略手順を説明するフローチャートである。
【図８】図７に示すフローのうち、発熱量を抑える命令等を挿入するフローを具体的に説明する図である。
【図９】本発明にかかるコンパイル方法の第３の実施の形態の概略手順を説明するフローチャートである。
【図１０】図９に示すコンパイル方法の要部を説明する模式図である。
【図１１】図９に示すコンパイル方法の要部を説明する模式図である。
【図１２】本発明にかかるコンパイル方法の第４の実施の形態を説明する模式図である。
【符号の説明】
２  コンパイラ
ＢＬ２  ブロック
Ｌ２，Ｌ４，Ｌ６，Ｌ８  ライブラリ
ＯＣ２，ＯＣ４  オブジェクトコード
ＰＦ  プロファイル
ＳＣ  ユーザプログラム
Ｔ０，Ｔ１，Ｔ２，Ｔ３  タイムインターバル
【図１】
0004131909.tif 000002
【図２】
0004131909.tif 000003
【図３】
0004131909.tif 000004
【図４】
0004131909.tif 000005
【図５】
0004131909.tif 000006
【図６】
0004131909.tif 000007
【図７】
0004131909.tif 000008
【図８】
0004131909.tif 000009
【図９】
0004131909.tif 000010
【図１０】
0004131909.tif 000011
【図１１】
0004131909.tif 000012
【図１２】
0004131909.tif 000013