(57)【要約】【課題】ＣＰＵの処理速度の向上を図ることが可能となるようにコンパイル処理を行なうコンパイル装置を提供すること。【解決手段】動作周波数テーブル２４は、ＣＰＵによって実行可能な命令のそれぞれの動作周波数を記憶する。コンパイラ２２は、プログラムのソースコード２１を解釈して、ＣＰＵが実行可能なＣＰＵ命令群２３に変換する。そして、動作周波数テーブルを参照して、変換したＣＰＵ命令群２３のそれぞれのＣＰＵ命令の動作周波数を抽出し、その中で最も低い動作周波数をＣＰＵの動作周波数に決定する。したがって、ＣＰＵの処理速度の向上を図ることが可能となるようにコンパイル処理を行なうことが可能となる。【選択図】図２
2012252496.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによって実行可能な命令のそれぞれの動作周波数を記憶する記憶手段と、
プログラムのソースコードを解釈して、前記プロセッサが実行可能な命令群に変換する変換手段と、
前記記憶手段を参照して、前記変換手段によって変換された命令群のそれぞれの命令の動作周波数を抽出し、その中で最も低い動作周波数を前記プロセッサの動作周波数に決定する決定手段とを含むコンパイル装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）に対して高速に命令を実行させる技術に関し、特に、ＣＰＵが動作可能な最適なクロック周波数を設定するようにＣＰＵ命令を生成するコンパイル装置に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータなどのデータ処理装置の高機能化、多機能化が進んでおり、搭載されるＣＰＵの高機能化も進んでいる。このようなＣＰＵの動作を高速化する技術が種々開発されており、たとえば、下記の特許文献１〜２に開示された発明がある。
【０００３】
特許文献１は、マイクロコンピュータ応用機器の全体としてのパフォーマンスを保ったまま、消費電力を低減するための技術を提供することを目的とする。ＣＰＵで実行される命令のうち、高速処理が要求されるものと高速処理が要求されないものとを識別するための情報がテーブル化されたテーブルメモリを設け、ＣＰＵに命令がフェッチされる毎に、テーブルメモリの情報に基づいてクロック信号の周波数を制御することで、命令に応じてクロック信号の周波数を下げることができ、マイクロコンピュータ応用機器の全体としてのパフォーマンスを保ったまま、消費電力の低減化を図ることができる。
【０００４】
特許文献２は、プロセッサの動作クロック周波数を、ＣＰＵの負荷、例えばＣＰＵ使用率に応じて変更することに関して、変更後のＣＰＵ性能に対してＣＰＵの負荷がより整合するように動作クロック周波数を選択することを実現することを目的とする。動作クロック周波数とＣＰＵ負荷との対応を記憶する動作クロックテーブルは、動作クロック周波数毎に複数の区分があり、各区分は閾値により区分される。各閾値はその動作クロックに対応した値を有する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−０８５７２３号公報
【特許文献２】特開２００６−２６８２４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来、ＣＰＵが実行する命令コード（以下、ＣＰＵ命令とも呼ぶ。）の動作周波数がまちまちであるにもかかわらず、最も遅いＣＰＵ命令に合わせてＣＰＵの動作周波数が決定されていた。極端に遅いＣＰＵ命令は複数サイクルで実行されるが、その場合でも、規定されたサイクル数で実行可能な動作周波数が存在するため、それを含めた全てのＣＰＵ命令が動作可能な周波数に合わせて、ＣＰＵの動作周波数が決定されていた。したがって、高速動作が可能なＣＰＵ命令であっても、最も遅いＣＰＵ命令に合わせた周波数で動作させなければならないといった問題点があった。
【０００７】
また、このような問題点は、上述の特許文献１〜２に開示された発明を用いたとしても、解決することができない。
【０００８】
本発明は、上記問題点を解決するためになされたものであり、その目的は、ＣＰＵの処理速度の向上を図ることが可能となるようにコンパイル処理を行なうコンパイル装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の一実施例によれば、プログラムのソースコードをＣＰＵ命令に変換するコンパイル装置が提供される。動作周波数テーブルは、ＣＰＵによって実行可能な命令のそれぞれの動作周波数を記憶する。コンパイラは、プログラムのソースコードを解釈して、ＣＰＵが実行可能な命令群に変換する。そして、動作周波数テーブルを参照して、変換したＣＰＵ命令群のそれぞれのＣＰＵ命令の動作周波数を抽出し、その中で最も低い動作周波数をＣＰＵの動作周波数に決定する。
【発明の効果】
【００１０】
本発明の一実施例によれば、変換したＣＰＵ命令群のそれぞれのＣＰＵ命令の動作周波数を抽出し、その中で最も低い動作周波数をＣＰＵの動作周波数に決定するので、ＣＰＵの処理速度の向上を図ることが可能となるようにコンパイル処理を行なうことが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施の形態におけるコンパイル装置の構成例を示すブロック図である。
【図２】本発明の第１の実施の形態におけるコンパイル装置の処理手順を説明するための図である。
【図３】本発明の第２の実施の形態におけるコンパイル装置の処理手順を説明するための図である。
【図４】本発明の第３の実施の形態におけるコンパイル装置の処理手順を説明するための図である。
【図５】本発明の第４の実施の形態におけるコンパイル装置の処理手順を説明するための図である。
【発明を実施するための形態】
【００１２】
（第１の実施の形態）
本発明は、様々な組み込み装置に適用可能であるが、その一例としてコンパイラに適用される場合について説明する。
【００１３】
図１は、本発明の第１の実施の形態におけるコンパイル装置の構成例を示すブロック図である。コンパイル装置は、一般的なコンピュータによって実現され、コンピュータ本体１、ディスプレイ装置２、ＦＤ（Flexible Disk）４が装着されるＦＤドライブ３、キーボード５、マウス６、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）８が装着されるＣＤ−ＲＯＭ装置７、およびネットワーク通信装置９を含む。コンパイラは、ＦＤ４またはＣＤ−ＲＯＭ８等の記録媒体によって供給される。コンパイラがコンピュータ本体１によって実行されることにより、ソースコードを解釈してＣＰＵ命令を生成する。また、コンパイラは他のコンピュータより通信回線を経由し、コンピュータ本体１に供給されてもよい。
【００１４】
また、コンピュータ本体１は、ＣＰＵ１０、ＲＯＭ（Read Only Memory）１１、ＲＡＭ（Random Access Memory）１２およびハードディスク１３を含む。ＣＰＵ１０は、ディスプレイ装置２、ＦＤドライブ３、キーボード５、マウス６、ＣＤ−ＲＯＭ装置７、ネットワーク通信装置９、ＲＯＭ１１、ＲＡＭ１２またはハードディスク１３との間でデータを入出力しながら処理を行なう。ＦＤ４またはＣＤ−ＲＯＭ８に記録されたコンパイラは、ＣＰＵ１０によりＦＤドライブ３またはＣＤ−ＲＯＭ装置７を介してハードディスク１３に格納される。ＣＰＵ１０は、ハードディスク１３から適宜コンパイラをＲＡＭ１２にロードして実行することによって、ＣＰＵ命令の生成が行なわれる。
【００１５】
図２は、本発明の第１の実施の形態におけるコンパイル装置の処理手順を説明するための図である。なお、図２においては、コンパイラ２２と、専用ツールまたはコンパイラ２５とに分けて記載しているが、これらは１つのコンパイラであってもよいし、コンパイラと専用ツールとが別々にコンピュータにインストールされ、個別に実行するようにしてもよい。
【００１６】
動作周波数テーブル２４は、対象のＣＰＵが実行可能なすべてのＣＰＵ命令を、動作可能な周波数によってグループ分けしたテーブルである。たとえば、グループＡに属するａｄｄ命令は演算実行による遅延時間が小さいため、高い周波数（１００ＭＨｚ）で動作可能である。一方、グループＤに属するｄｉｖ命令は演算実行による遅延時間が大きいため、低い周波数（７０ＭＨｚ）でしか動作できない。なお、対象のＣＰＵとは、図１に示すＣＰＵ１０と異なるＣＰＵであってもよいし、同じであってもよい。
【００１７】
まず、コンパイラ２２は、対象となるプログラムのソースコード２１を順次読み込んで解釈してＣＰＵ命令に変換する、いわゆるコンパイル処理を行なう。
【００１８】
次に、専用ツールまたはコンパイラ２５は、コンパイラ２２によって変換されたＣＰＵ命令を順次抽出し、動作周波数テーブル２４を検索することによって、使用されるＣＰＵ命令の中で最も動作周波数が低いＣＰＵ命令を決定し、その動作周波数をＣＰＵの動作周波数に決定する。
【００１９】
たとえば、対象のプログラムによって使用されるＣＰＵ命令の中でｍｕｌ命令が最も遅いＣＰＵ命令である場合、ＣＰＵの動作周波数を８０ＭＨｚに決定する。なお、対象のＣＰＵは動作周波数を変更することが可能であり、決定された動作周波数で対象のＣＰＵを動作させるものとする。また、後述のように、ＣＰＵ命令によって動作周波数を変更できる場合には、コンパイルされた後のプログラムの最初にＣＰＵの動作周波数を変更する命令を挿入するようにしてもよい。
【００２０】
以上説明したように、本実施の形態におけるコンパイル装置によれば、対象のプログラムによって使用されるＣＰＵ命令の中で最も動作周波数が低いＣＰＵ命令の動作周波数をＣＰＵの動作周波数に決定するようにしたので、ＣＰＵの動作周波数を必要以上に下げることがなくなり、ＣＰＵの処理速度の向上を図ることが可能となった。
【００２１】
（第２の実施の形態）
本発明の第２の実施の形態におけるコンパイル装置の構成は、図１に示す第１の実施の形態におけるコンパイル装置の構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００２２】
図３は、本発明の第２の実施の形態におけるコンパイル装置の処理手順を説明するための図である。まず、ユーザがコンパイルオプションなどで周波数を指定する。この周波数の指定は、図１に示すキーボード５、マウス６などを用いて行なわれる。
【００２３】
コンパイラ２２は、動作周波数テーブル２４を参照して、指定された周波数を超えない命令グループを抽出する。そして、コンパイラ２２は、抽出した命令のみを用いてプログラムのソースコード２１をＣＰＵ命令２３に変換する。たとえば、ユーザが８０ＭＨｚを指定した場合には、グループＡ、Ｂ、Ｃに属するＣＰＵ命令のみを用いてソースコード２１をＣＰＵ命令２３に変換する。
【００２４】
以上説明したように、本実施の形態におけるコンパイル装置によれば、ユーザが指定した周波数を超えないＣＰＵ命令のみを用いてコンパイル処理を行なうようにしたので、ユーザが指定した動作周波数でＣＰＵが実行可能となるようにＣＰＵ命令を生成することが可能となった。
【００２５】
（第３の実施の形態）
本発明の第３の実施の形態におけるコンパイル装置の構成は、図１に示す第１の実施の形態におけるコンパイル装置の構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、後述のインタープリタ、ＪＩＴコンパイラは、ハードディスク１３などにインストールされており、ＣＰＵ１０が適宜インタープリタやＪＩＴコンパイラをＲＡＭ１２などにロードして実行するものとする。
【００２６】
図４は、本発明の第３の実施の形態におけるコンパイル装置の処理手順を説明するための図である。ＪＩＴコンパイラは、一般的にはＪａｖａ（登録商標）のようなインタープリタ環境で用いられることが多い。ハードウェアに依存しない中間コード（ユーザプログラム）を１命令ずつ逐次解釈実行、すなわちインタープリト処理する代わりに、たとえば、関数単位を１回のコンパイル単位として、関数実行直前にコンパイルを行ない、コンパイル結果の命令コードに分岐するといったメカニズムを採用する。
【００２７】
また、対象とするＣＰＵは、周波数の切り替え命令で動作周波数を動的に切り替えることが可能な構成を有している。ここで、対象とするＣＰＵとは、図１に示すＣＰＵ１０と異なるＣＰＵであってもよいし、同じであってもよい。
【００２８】
まず、インタープリタは、ユーザプログラム（中間コード）を逐次解釈実行する、いわゆるインタープリト実行を行なう（Ｓ１１）。そして、ＪＩＴコンパイルの対象である関数Ａへの分岐箇所まで到達したら、ＪＩＴコンパイラを起動する（Ｓ１２）。ここで、ＪＩＴコンパイラの実装方法は特に規定されるものではなく、たとえば、対象のＣＰＵとは別のハードウェアで実現するようにしてもよいし、インタープリタから呼び出される関数群として実現してもよい。
【００２９】
次に、ＪＩＴコンパイラは、関数Ａを中間コードからＣＰＵ命令列に変換（コンパイル）し（Ｓ１３）、第１の実施の形態で説明したのと同様に、使用されるＣＰＵ命令と動作周波数テーブル２４とから関数Ａの実行時のＣＰＵの動作周波数（Ｘ）を決定する（Ｓ１４）。
【００３０】
次に、ＪＩＴコンパイラは、コンパイルによって生成されたＣＰＵ命令列の最初に動作周波数を（Ｘ）に切り替える周波数切り替え命令を挿入し、ＣＰＵ命令列の最後に動作周波数を元に戻す周波数切り替え命令を挿入する（Ｓ１５）。そして、関数Ａのコンパイル結果コードに分岐する（Ｓ１６）。
【００３１】
ＣＰＵは、ＪＩＴコンパイラが生成したＣＰＵ命令列を実行する。すなわち、ＣＰＵの動作周波数を（Ｘ）に切り替えた後、関数Ａの処理を実行し、そして、ＣＰＵの動作周波数を元の周波数に戻す処理を行なう（Ｓ１７）。この後、ＣＰＵによる処理は、ＪＩＴコンパイラに戻る。
【００３２】
ＪＩＴコンパイラは、ＪＩＴ起動した後の箇所に分岐する処理を行なう（Ｓ１８）。そして、インタープリタは、次のユーザプログラム（中間コード）をインタープリト実行し（Ｓ１９）、以下、同様の処理が行なわれる。
【００３３】
以上説明したように、本実施の形態におけるコンパイル装置によれば、動的なコンパイル処理を行なうときに、関数の実行時のＣＰＵの動作周波数を決定し、関数を実行するときにその動作周波数に切り替えるようにしたので、関数単位で最適な動作周波数に切り替えることができ、さらに処理速度の向上を図ることが可能となった。
【００３４】
（第４の実施の形態）
本発明の第４の実施の形態におけるコンパイル装置の構成は、図１に示す第１の実施の形態におけるコンパイル装置の構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。なお、第３の実施の形態と同様に、インタープリタ、ＪＩＴコンパイラは、ハードディスク１３などにインストールされており、ＣＰＵ１０が適宜インタープリタやＪＩＴコンパイラをＲＡＭ１２などにロードして実行するものとする。
【００３５】
本実施の形態においては、動作周波数テーブル２４が、チップ温度やＣＰＵ負荷などによって規定されており、現在のチップ温度やＣＰＵ負荷に応じて使用するＣＰＵ命令の範囲を決定してＣＰＵの動作周波数を切り替えるものである。
【００３６】
図５は、本発明の第４の実施の形態におけるコンパイル装置の処理手順を説明するための図である。第３の実施の形態と同様に、対象とするＣＰＵは、周波数の切り替え命令で動作周波数を動的に切り替えることが可能な構成を有している。
【００３７】
まず、インタープリタは、ユーザプログラム（中間コード）を逐次解釈実行する、いわゆるインタープリト実行を行なう（Ｓ２１）。そして、ＪＩＴコンパイルの対象である関数Ａへの分岐箇所まで到達したら、ＪＩＴコンパイラを起動する（Ｓ２２）。
【００３８】
次に、ＪＩＴコンパイラは、現在のチップ温度やＣＰＵ負荷に応じて動作周波数テーブル２４を検索することによりＣＰＵの動作周波数（Ｘ）を決定し、使用可能なＣＰＵ命令を抽出する（Ｓ２３）。そして、ＪＩＴコンパイラは、抽出したＣＰＵ命令を用いて、関数Ａを中間コードからＣＰＵ命令列に変換（コンパイル）する（Ｓ２４）。
【００３９】
たとえば、ＣＰＵのチップ周辺に温度センサを設け、関数Ａをコンパイルするときに温度センサによってチップ温度を計測するようにしてもよい。また、インタープリタやＪＩＴコンパイラなどと並行してＣＰＵ負荷を測定するプロセスを動作させておき、関数ＡをコンパイルするときにＣＰＵ負荷を抽出するようにしてもよい。
【００４０】
次に、ＪＩＴコンパイラは、コンパイルによって生成されたＣＰＵ命令列の最初に動作周波数を（Ｘ）に切り替える周波数切り替え命令を挿入し、ＣＰＵ命令列の最後に動作周波数を元に戻す周波数切り替え命令を挿入する（Ｓ２５）。そして、関数Ａのコンパイル結果コードに分岐する（Ｓ２６）。
【００４１】
ＣＰＵは、ＪＩＴコンパイラが生成したＣＰＵ命令列を実行する。すなわち、ＣＰＵの動作周波数を（Ｘ）に切り替えた後、関数Ａの処理を実行し、そして、ＣＰＵの動作周波数を元の周波数に戻す処理を行なう（Ｓ２７）。この後、ＣＰＵによる処理は、ＪＩＴコンパイラに戻る。
【００４２】
ＪＩＴコンパイラは、ＪＩＴ起動した後の箇所に分岐する処理を行なう（Ｓ２８）。そして、インタープリタは、次のユーザプログラム（中間コード）をインタープリト実行し（Ｓ２９）、以下、同様の処理が行なわれる。
【００４３】
以上説明したように、本実施の形態におけるコンパイル装置によれば、チップ温度やＣＰＵ負荷に応じてＣＰＵの動作周波数を決定し、関数を実行するときにその動作周波数に切り替えるようにしたので、関数単位で最適な動作周波数に切り替えることができ、さらに処理速度の向上を図ることが可能となった。
【００４４】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００４５】
１  コンピュータ本体、２  ディスプレイ装置、３  ＦＤドライブ、４  ＦＤ、５  キーボード、６  マウス、７  ＣＤ−ＲＯＭ装置、８  ＣＤ−ＲＯＭ、９  ネットワーク通信装置、１０  ＣＰＵ、１１  ＲＯＭ、１２  ＲＡＭ、１３  ハードディスク、２１  ソースコード、２２  コンパイラ、２３  ＣＰＵ命令、２４  動作周波数テーブル、２５  専用ツールまたはコンパイラ。
【図１】
2012252496.tif 000003
【図２】
2012252496.tif 000004
【図３】
2012252496.tif 000005
【図４】
2012252496.tif 000006
【図５】
2012252496.tif 000007