JP2006127302A - 情報処理装置、コンパイラ、及びコンパイラプログラム - Google Patents

情報処理装置、コンパイラ、及びコンパイラプログラム Download PDF

Info

Publication number
JP2006127302A
JP2006127302A JP2004316996A JP2004316996A JP2006127302A JP 2006127302 A JP2006127302 A JP 2006127302A JP 2004316996 A JP2004316996 A JP 2004316996A JP 2004316996 A JP2004316996 A JP 2004316996A JP 2006127302 A JP2006127302 A JP 2006127302A
Authority
JP
Japan
Prior art keywords
program
execution
executed
program area
central processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004316996A
Other languages
English (en)
Inventor
Takuya Nakaike
仲池 卓也
Hideaki Komatsu
小松 秀昭
Seiichi Kono
河野 誠一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2004316996A priority Critical patent/JP2006127302A/ja
Priority to US11/255,027 priority patent/US20060095902A1/en
Publication of JP2006127302A publication Critical patent/JP2006127302A/ja
Priority to US12/170,990 priority patent/US8181169B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4432Reducing the energy consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】これまでより高い精度で中央処理装置の計算能力を調節することにより、プログラムの実行に伴う消費エネルギーを削減する。
【解決手段】実行中に計算能力の変更が可能な中央処理装置に対して、適切な計算能力を設定する情報処理装置であって、実行プログラムに含まれる複数のプログラム領域の各々について、実行プログラムの実行中に当該プログラム領域が実行される毎に中央処理装置の計算能力を変更して実行時間を測定する実行時間測定部と、各々のプログラム領域について測定された計算能力毎の実行時間に基づいて、当該プログラム領域を中央処理装置により実行させるべき適正計算能力を判断する適正計算能力判断部と、各々のプログラム領域について、実行プログラムの実行中に当該プログラム領域が再度実行される時に当該プログラム領域を当該プログラム領域の適正計算能力で実行させる設定を行う計算能力設定部とを備える情報処理装置を提供する。
【選択図】図4

Description

本発明は、情報処理装置、コンパイラ、及びコンパイラプログラムに関する。特に、本発明は、プログラムの実行時に得られた実行時間の測定結果に基づいて最適化を行う情報処理装置、コンパイラ、及びコンパイラプログラムに関する。
IBMコーポレーションのPower5プロセッサ(登録商標)におけるSMT技術は、2つのスレッドを同時に1つのプロセッサ上で実行させ、実行中のスレッドに優先度を与え、同時実行中のスレッドが利用するプロセッサ資源の割合を変化させることを可能にする(非特許文献5参照。)。言い換えると、1つの実プロセッサ上に存在する2つの論理プロセッサが、実行するスレッドの優先度に応じてその計算能力を変化させる。従って、Power5 プロセッサでは、1つの実プロセッサ上に存在する2つの論理プロセッサの計算能力をバランスさせ、高い実行性能を達成することが要求される。
例えば、命令レベル並列性の高いプログラム領域において、高い実行性能を達成するためには、多くの計算資源を備えるプロセッサが必要である。逆に、命令レベル並列性の低いプログラム領域では、計算資源が少ないプロセッサでも十分な性能を得ることが可能である。一方、Pentium M プロセッサ(登録商標)は、スレッド優先度ではなく、動作周波数を変更することにより計算能力を変化させる(非特許文献3参照。)。例えば、キャッシュミスが頻発し、プロセッサがアイドル状態になるようなプログラム領域では、動作周波数を低下させても実行時間の増加はわずかであり、消費エネルギーを大きく削減可能である。
上記のような計算能力を変化させることが可能なプロセッサでは、プログラムコードの特性を解析し、計算能力を減少させても実行時間が増加しないプログラム領域を抽出することで、実行速度を犠牲にせずに消費エネルギーを削減できる。例えば、動的に動作周波数を変更可能なプロセッサにおいて、動作周波数を変更してプログラム領域の実行時間を測定し、各プログラム領域の実行時間の増加割合を閾値以下に抑える動作周波数を求める技術が提案されている(非特許文献1参照。)。
非特許文献2、非特許文献4、非特許文献6、及び非特許文献7については後述する。
C. H. Hsu and U. Kremer. The Design, Implementation, and Evaluation of a Compiler Algorithm for CPU Energy Reduction. PLDI 2003. IA32 Intel(R) Architecture Software Developer's Manual Volume 3: System Programming Guide. Document Number: 253668. Intel(R) Pentium(R) M Processor Datasheet. Document Number : 252612-003. April 2004. J. Whaley. A Portable Sampling-Based Profiler for Java Virtual Machines. Java Grande 2000. R. Kalla, B. Sinharoy, and J. Tendler. Simlultaneous Multi-threading Implementation in POWER5 - IBM's Next Generation POWER Microprocessor. A Symposium on High Performance Chips. http://www.hotchips.org/archive/hc15/pdf/11.ibm.pdf T. Suganuma, T. Yasue, M. Kawahito, H. Komatsu, and T. Nakatani. A Dynamic Optimization Framework for a Java Just-In-Time Compiler. OOPSLA 2001. V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: A Transparent Dynamic Optimization System. PLDI 2000.
しかしながら、非特許文献1の技術において、実行時間の測定は、テストデータを用いた試験実行によるプロファイル(オフラインプロファイル)で行われる。即ち、試験実行でなく実際にプログラムを実行している間は、各プログラム領域に与えられる計算能力は変更されない。このため、入力データの特性がプログラムの実行中に変化する場合であっても、その変化に追従して中央処理装置の計算能力を調節することができない。
また、上記の閾値は定数であるため、この閾値を基準として計算能力を低下させた場合には、結果として消費エネルギーが増加してしまう可能性がある。例えば、計算能力の低下により消費電力(Watts)がWiからWi-1に下がり、実行時間がTiからTi-1に増加した場合に、消費エネルギー(Joule)がWi×TiからWi-1×Ti-1に変化する。しかしながら、実行時間の増加割合が上記の閾値以下であっても、消費電力の低下に対して実行時間の増加が大きい場合には、Wi×Ti< Wi-1×Ti-1になり、消費エネルギーを増加させてしまう可能性がある。
そこで本発明は、上記の課題を解決することのできる情報処理装置、コンパイラ、及びコンパイラプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の形態においては、実行中に計算能力の変更が可能な中央処理装置に対して、中央処理装置が実行する実行プログラムに基づいて決定した計算能力を設定する情報処理装置であって、実行プログラムに含まれる複数のプログラム領域の各々について、実行プログラムの実行中に当該プログラム領域が実行される毎に中央処理装置の計算能力を変更して実行時間を測定する実行時間測定部と、各々のプログラム領域について測定された計算能力毎の実行時間に基づいて、当該プログラム領域を中央処理装置により実行させるべき計算能力である適正計算能力を判断する適正計算能力判断部と、各々のプログラム領域について、実行プログラムの実行中に当該プログラム領域が更に再度実行される時に当該プログラム領域を当該プログラム領域の適正計算能力で実行させる設定を行う計算能力設定部とを備える情報処理装置、当該情報処理装置により動作するコンパイラ、及び、当該情報処理装置をコンパイラとして機能させるコンパイラプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、これまでより高い精度で中央処理装置の計算能力を調節することにより、プログラムの実行に伴う消費エネルギーを削減することができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、情報処理装置10の構成を示す。情報処理装置10は、ホストコントローラ1082により相互に接続される中央処理装置1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部を備える。また、情報処理装置10は、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部を備える。
また、情報処理装置10は、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部を備える。ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスする中央処理装置1000及びグラフィックコントローラ1075とを接続する。中央処理装置1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。また、中央処理装置1000は、実行中に計算能力の変更、例えば動作周波数の変更が可能である。
RAM1020は、中央処理装置1000により読み出される各種のデータを格納している。例えば、RAM1020は、中央処理装置1000に設定される動作周波数毎に、中央処理装置1000にその動作周波数を設定した場合における、中央処理装置1000の電圧及び消費電力の大きさを格納する消費電力情報格納部1025を含む。グラフィックコントローラ1075は、中央処理装置1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、中央処理装置1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、情報処理装置10が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020を介して入出力チップ1070に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、情報処理装置10の起動時に中央処理装置1000が実行するブートプログラムや、情報処理装置10のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、RAM1020を介して入出力チップ1070に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
情報処理装置10に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出され情報処理装置10にインストールされて実行される。情報処理装置10にインストールされるプログラムは、例えば、情報処理装置10をコンパイラとして機能させるコンパイラプログラムである。コンパイラプログラムが情報処理装置10等に働きかけて行わせる動作は、図2から図13において後述する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置10に提供してもよい。
図2は、消費電力情報格納部1025のデータ構造の一例を示す。消費電力情報格納部1025は、中央処理装置1000に設定される動作周波数毎に、中央処理装置1000にその動作周波数を設定した場合における、中央処理装置1000の電圧及び消費電力の大きさを格納している。一例として、本図においては、中央処理装置1000がインテル・コーポレーションのPentium Mプロセッサであり、SpeedStepテクノロジにより動作周波数を切り替えた場合について、動作周波数毎の電圧及び消費電力を示す。
具体的には、中央処理装置1000が1.6GHzで動作する場合における消費電力は、24.5Wattsである。一方、中央処理装置1000が1.4GHzで動作する場合における消費電力は、22.0Wattsである。このように、中央処理装置1000は、動作周波数を上昇させた場合に消費電力が増加し、動作周波数を低下させた場合に消費電力が減少する。
また、中央処理装置1000は、当該中央処理装置1000の実行中に動作周波数を動的に変更することができる。なお、インテル・コーポレーション、Pentium M、及びSpeedStepはそれぞれ登録商標であり、これらの技術についてより詳細には、非特許文献3に説明されているので本実施例における説明を省略する。
図3は、中央処理装置1000が実行するプログラムの構成を示す。中央処理装置1000は、仮想マシン310と、オペレーティングシステム320として機能する。そして、仮想マシン310は、オペレーティングシステム320と協働して、Java(登録商標)等で記述された実行プログラム300を実行する。実行プログラム300は、プログラム領域305−1、プログラム領域305−4、及びプログラム領域305−5を含む。プログラム領域305−1は、プログラム領域305−2を含み、プログラム領域305−2は、更にプログラム領域305−3を含む。
仮想マシン310は、コンパイラ40を含む。コンパイラ40は、仮想マシン310が実行プログラム300をインタープリタ機能により実行している場合において、必要に応じて実行プログラム300の一部をコンパイルする。そしてこの場合、中央処理装置1000は、インタープリタ機能による当該実行に代えて、コンパイル結果のプログラムを実行する。例えば、コンパイラ40は、コンパイル時に、動作周波数を変更する命令をプログラム領域305−1に生成する最適化を行ってもよい。この場合、プログラム領域305−1の実行中にその命令が実行され、その結果、プログラム領域305−1から動作周波数設定用デバイスドライバ325が呼び出され、動作周波数が変更される。
図4は、コンパイラ40の機能を機能ブロックに分類して示す。コンパイラ40は、プログラム領域選択部400と、参照頻度測定部410と、実行時間測定部420と、消費エネルギー算出部430と、適正計算能力判断部440と、計算能力設定部450とを有する。プログラム領域選択部400は、実行プログラム300に含まれるプログラム領域305−1〜5のうち、予め定められた基準実行頻度以上の頻度で実行されるプログラム領域を選択する。例えば、参照頻度測定部410は、予め定められた時間間隔で、中央処理装置1000のプログラムカウンタのアドレス値を参照する。
そして、プログラム領域選択部400は、プログラム領域305−1〜5の各々について、当該プログラム領域に含まれるアドレス値が参照頻度測定部410により参照された頻度が、基準実行頻度か否かを判断する。そして、プログラム領域選択部400は、基準実行頻度以上のプログラム領域を選択する。この結果、例えばプログラム領域305−1〜3が選択される。
ここで、プログラム領域とは、例えば、実行プログラム300に含まれるメソッド、当該メソッドに含まれる外側ループ領域、及び、当該外側ループ領域に含まれる内側ループ領域等の何れかである。そして、プログラム領域選択部400は、これらのメソッド、外側ループ領域、及び内側ループ領域が、実行プログラム300においてどのアドレスからどのアドレスまでの領域であるかを示す情報を、実行プログラム300に対応付けて予め取得してもよい。
一例として、コンパイラ40が、Java(登録商標)のJust In Timeコンパイラである場合においては、プログラム領域選択部400は、Javaのバイトコードからのコンパイル時にこれらの情報を取得できる。また、このような情報を取得できない場合には、プログラム領域選択部400は、実行プログラム300内の制御フローを解析することにより、各々のプログラム領域の境界を定めてもよい。
実行時間測定部420は、プログラム領域選択部400により選択されたプログラム領域305−1〜3の各々について、実行プログラム300の実行中にそのプログラム領域が実行される毎に中央処理装置1000の動作周波数を変更して実行時間を測定する。消費エネルギー算出部430は、プログラム領域305−1〜3の各々について、そのプログラム領域を各々の動作周波数により実行した場合における消費エネルギーを算出する。具体的には、消費エネルギー算出部430は、各プログラム領域を各動作周波数で実行させた実行時間に、その動作周波数に対応して消費電力情報格納部1025に格納された消費電力の大きさを乗じることにより消費エネルギーを算出する。
適正計算能力判断部440は、プログラム領域305−1〜3の各々について測定された計算能力毎の実行時間に基づいて、そのプログラム領域を中央処理装置1000により実行させるべき動作周波数である適正動作周波数を判断する。例えば、適正計算能力判断部440は、プログラム領域305−1〜3の各々について、消費エネルギー算出部430により算出された消費エネルギーを最小とする動作周波数を求め、その動作周波数をそのプログラム領域の適正動作周波数と判断する。
計算能力設定部450は、プログラム領域305−1〜3の各々について、実行プログラム300の実行中にそのプログラム領域が再度実行される時にそのプログラム領域をそのプログラム領域の適正動作周波数で実行させる設定を行う。具体的には、計算能力設定部450は、プログラム領域305−1〜3の各々について、そのプログラム領域が実行される場合にそのプログラム領域に先立って実行される実行位置に、中央処理装置1000の動作周波数を変更する命令を新たに生成してもよい。
なお、本図において、プログラム領域選択部400と、参照頻度測定部410と、実行時間測定部420と、消費エネルギー算出部430と、適正計算能力判断部440と、計算能力設定部450とは、コンパイラ40内に設けられている。これに代えて、中央処理装置1000が、これらの各構成要素の少なくとも一部を、ハードウェアの機能として備えていてもよい。このような中央処理装置1000も、本発明の範囲内である。
図5は、プログラム領域305−1〜3の具体例を示す。プログラム領域305−1は、1行目から21行目までに示すメソッドである。そして、プログラム領域305−1は、5行目から17行目までに示す外側ループであるプログラム領域305−2を含む。そして、プログラム領域305−2は、7行目から15行目までに示す内側ループであるプログラム領域305−3を含む。
実行時間測定部420は、プログラム領域305−1〜3の各々について、そのプログラム領域の実行が開始される場合に最初に実行される実行位置に、そのプログラム領域の実行時間の測定を開始する命令であるStartProfile命令を生成する。また、実行時間測定部420は、プログラム領域305−1〜3の各々について、そのプログラム領域が実行される場合に最後に実行される実行位置に、そのプログラム領域の実行時間の測定を終了する命令であるEndProfile命令を生成する。
例えばコンパイラ40がJava(登録商標)のJust In Timeコンパイラである場合には、実行時間測定部420は、既にコンパイルされたプログラムを再度コンパイルする技術により、StartProfile等の命令を挿入できる。以降、この技術をリコンパイルと呼ぶ。リコンパイルの詳細は非特許文献6に記載されているので、説明を省略する。また、コンパイラ40が、Just In Timeコンパイラでない場合であっても、既にコンパイルされたプログラムを動的に書き換える技術により、StartProfile等の命令を挿入できる。以降、この技術を、動的バイナリ書換と呼ぶ。動的バイナリ書換の詳細は非特許文献7に記載されているので、説明を省略する。
実行プログラム300の実行中にメソッドfooが呼び出されると、プログラム領域305−1の実行が開始される。そして、プログラム領域305−1の実行が開始される時に、2行目に示すStartProfile命令が実行される。その後、プログラム領域305−2の実行が開始される時に、5行目に示すStartProfile命令が実行される。同様に、プログラム領域305−3の実行が開始される時に、7行目に示すStartProfile命令が実行される。
StartProfile命令は、実行される毎に中央処理装置1000の動作周波数を変更する。また、StartProfile命令は、所定の時点から、StartProfile命令が実行された時点までに経過したクロックサイクル数を読み出して保存する。一例として中央処理装置1000がインテルIA32プロセッサである場合には、rdtsc(Read Time Stamp Counter)命令を呼び出すことによりクロックサイクル数を読み出すことができる。
また、クロックサイクル数の保存先としては、プログラム領域毎に予め設けた変数又はオブジェクトが好ましい。例えば本図においては、プログラム領域305−1、プログラム領域305−2、及びプログラム領域305−3の各々に対応付けて、オブジェクトprofileInfo1、オブジェクトprofileInfo2、及び、オブジェクトprofileInfo3の各々を予め設ける。そして、例えばStartProfile(profileInfo1)の実行により、その実行の時点におけるクロックサイクル数をオブジェクトprofileInfo1に保存する。
なお、メソッドfooとは異なるメソッドfoo1を呼び出す時は、10行目に示すSuspendProfile命令により測定を一旦中断する。そして、メソッドfoo1の実行が終了した場合には、12行目に示すResumeProfile命令により測定が再開される。具体的には、SuspendProfile命令の実行からResumeProfile命令の実行までに経過したクロックサイクル数を、オブジェクトprofileInfo1内に保存する。
その後、プログラム領域305−3の実行が終了する時に、15行目に示すEndProfile命令が実行される。更にその後、プログラム領域305−2の実行が終了する時に、17行目に示すEndProfile命令が実行される。最後に、プログラム領域305−3の実行が終了する時に、20行目に示すEndProfile命令が実行される。
EndProfile命令は、EndProfile命令の実行時点におけるクロックサイクル数を読み出し、対応するStartProfile命令により保存されたクロックサイクル数との差分値を算出する。そして、EndProfile命令は、算出したその差分値から、SuspendProfile命令の実行からResumeProfile命令の実行までに経過したクロックサイクル数を差し引いた差分値を算出する。そして、EndProfile命令は、算出したその差分値に基いて、実行時間を算出する。例えば、EndProfile命令は、算出した差分値を、中央処理装置1000に設定した動作周波数で除算することにより、実行時間を算出してもよい。
この結果、実行時間測定部420は、プログラム領域305−1の実行時間の測定結果を、変数(又はオブジェクト)profileInfo1に格納し、プログラム領域305−2の実行時間の測定結果を、変数(又はオブジェクト)profileInfo2に格納し、プログラム領域305−3の実行時間の測定結果を、変数(又はオブジェクト)profileInfo3に格納することができる。
その後、計算能力設定部450は、適正動作周波数の判断結果に基づいて、StartProfile命令に代えて、中央処理装置1000を動作させる動作周波数を変更する命令を生成する。即ち、計算能力設定部450は、プログラム領域305−2について、そのプログラム領域が実行される場合にそのプログラム領域に先立って実行される実行位置に、中央処理装置1000の動作周波数を変更する命令を生成する。更に、計算能力設定部450は、EndProfile命令に代えて、変更した動作周波数を元に戻す命令を生成する。これにより、実行プログラム300の実行中にプログラム領域305−2が更に再度実行される場合には、中央処理装置1000の動作周波数を変更することができる。
図6は、コンパイラ40が中央処理装置1000に適した計算能力を設定する処理の流れを示す。プログラム領域選択部400は、実行プログラム300に含まれるプログラム領域305−1〜5のうち、予め定められた基準実行頻度以上の頻度で実行されるプログラム領域を選択する(S600)。選択したこのプログラム領域を、プロファイル領域と呼ぶ。本例では、プログラム領域305−1〜3の各々が、プロファイル領域として選択された場合について説明する。次に、実行時間測定部420は、実行時間測定用の命令を、実行プログラム300中のプロファイル領域に生成する(S605)。
例えば、実行時間測定部420は、プログラム領域305−1〜3の各々について、そのプログラム領域の実行が開始される場合に最初に実行される実行位置に、そのプログラム領域の実行時間の測定を開始する命令であるStartProfile命令を生成する。また、実行時間測定部420は、プログラム領域305−1〜3の各々について、そのプログラム領域が実行される場合に最後に実行される実行位置に、そのプログラム領域の実行時間の測定を終了する命令であるEndProfile命令を生成する。実行中のプログラムに命令を生成するためには、上述のように、リコンパイル又は動的バイナリ書換を適用すればよい。
そして、適正計算能力判断部440は、実行中のプログラム領域305−1〜3の各々について測定された計算能力毎の実行時間に基づいて、そのプログラム領域を中央処理装置1000により実行させるべき動作周波数である適正動作周波数を判断する(S610)。計算能力設定部450は、プログラム領域305−1〜3の各々について、実行プログラム300の実行中にそのプログラム領域が再度実行される時にそのプログラム領域をそのプログラム領域の適正動作周波数で実行させる設定を行う(S620)。
具体的には、計算能力設定部450は、動作周波数を変更する命令を実行プログラム300に生成する。なお、計算能力設定部450は、先行して実行されるプログラム領域と、当該プログラム領域の後続のプログラム領域とで、適正動作周波数が異なることを条件として、先行する当該プログラム領域及び後続の当該プログラム領域の間に実行される実行位置に、動作周波数を変更する命令を生成する。即ち、計算能力設定部450は、適正計算能力が同一の場合には、動作周波数を変更する命令を生成しない。これにより、動作周波数の変更後に直ちに変更前の動作周波数に再度変更することを防ぐことができる。
図7は、図6のS600における処理の一例について、その詳細を示す。本図では、実行プログラム300において、ループ領域の境界が不明な場合等において、実行プログラム300内の制御フローを解析することにより、各々のプログラム領域の境界を定める処理について説明する。まず、実行プログラム300の実行中において、参照頻度測定部410は、予め定められた時間間隔で、中央処理装置1000のプログラムカウンタのアドレス値を参照する(S700)(例えば、非特許文献4参照。)。
次に、プログラム領域選択部400は、参照頻度測定部410により参照された頻度が予め定められた基準値より高いアドレスのアドレス値を、変数Astartに代入する(S710)。また、プログラム領域選択部400は、Atop及びAcurrentにAstartの値を代入する。また、プログラム領域選択部400は、Abottom及びNloopを0で初期化する。そして、プログラム領域選択部400は、以下の処理により、アドレスAstartから順に実行プログラム300を実行方向に沿って辿り、プロファイル領域を探索する。なお、Acurrentは、探索中のアドレス値を格納する変数であり、その値は処理の進行に伴いインクリメントされる。
プログラム領域選択部400は、Acurrent − Astart > Rsearchか否かを判断する(S720)。Acurrent − Astart > Rsearchが成立した場合に(S720:YES)、プログラム領域選択部400は、ループ領域の探索範囲外に達したので、処理を終了する。一方、Acurrent − Astart > Rsearchが成立しない場合に(S720:NO)、プログラム領域選択部400は、アドレスAcurrentに例えば条件/無条件分岐等のジャンプ命令が配置されているかを判断する(S730)。
アドレスAcurrentにジャンプ命令が配置されている場合に(S730:YES)、プログラム領域選択部400は、変数Ajumpに、そのジャンプ命令のジャンプ先のアドレス値を代入する(S740)。次に、プログラム領域選択部400は、Ajump < Astartか否かを判断する(S750)。Ajump < Astartが成立する場合に(S750:YES)、ジャンプ命令のジャンプ方向が実行順序を遡る方向であるので、プログラム領域選択部400は、このジャンプ命令によりループ領域が形成されていると判断する(S760)。具体的には、プログラム領域選択部400は、Nloopの値をこのループ領域の識別情報とし、ループ領域の先頭アドレスをAtop に代入し、ループ領域の終了アドレスをAbottomに代入する。そして、プログラム領域選択部400は、AcurrentにAcurrentの次のアドレスを代入する(S790)。
一方、アドレスAcurrentにジャンプ命令が配置されていない場合(S730:NO)、又は、Ajump < Astartが成立しない場合に(S750:NO)、次の処理を行う。まず、プログラム領域選択部400は、Acurrentに格納されたアドレス値の参照頻度が、閾値Fthresholdより高いか否かを判断する(S770)。閾値Fthresholdより高い場合に(S770:YES)、プログラム領域選択部400は、AbottomにAcurrentを代入し(S780)、S790の処理に移る。
このように、本図の処理によれば、実行プログラム300内のループ領域や、実行頻度の高い領域を、実行時間を測定する対象となるプロファイル領域として適切に選択することができる。これにより、ループ領域等の情報が予め準備されていないプログラムについても、実行頻度が高いと見込まれる領域のみに実行時間測定用の命令を挿入できるので、実行時間の測定に伴うオーバヘッドを削減することができる。
図8は、図6のS610における処理の詳細を示す。本図は、図5のプログラム例に対応する。中央処理装置1000は、実行時間測定部420により命令が生成された実行プログラム300を実行することにより、以下の処理を行う。中央処理装置1000は、あるプログラム領域を実行する場合に、そのプログラム領域の実行に先立って、StartProfile命令を実行する(S800−1)。
具体的には、実行時間測定部420は、StartProfile命令の実行により、そのプログラム領域に対応して定めた変数Pの値に基づいて、中央処理装置1000の動作周波数を設定する。この変数Pの値は、実行時間が測定される度に後述の処理により順次変更される。そして、実行時間測定部420は、StartProfile命令の実行時点における中央処理装置1000の実行サイクルカウントを、そのStartProfile命令に対応して定めた変数Cstartに代入する。これらの変数の記憶領域は、例えば、図5に示すオブジェクトprofileInfo1内に確保される。
次に、中央処理装置1000は、更に内側のプログラム領域の実行に先立って、StartProfile命令を実行する(S800−2)。次に、中央処理装置1000は、一番内側のプログラム領域の実行に先立って、StartProfile命令を実行する(S800−3)。
次に、中央処理装置1000は、一番内側のプログラム領域を実行する(S810)。このプログラム領域の実行中に他のメソッドを呼び出す場合には、好ましくは、実行時間の測定を一時中断する。これにより、実行時間をメソッド毎に区別して測定することができる。そして、中央処理装置1000は、一番内側のプログラム領域の実行が終了した場合に、EndProfile命令を実行する(S820−3)。次に、中央処理装置1000は、S800−2におけるStartProfile命令に対応するEndProfile命令を実行し(S820−2)、S800−1におけるStartProfile命令に対応するEndProfile命令を実行する(S820−1)。
なお、本図は、処理の流れの一例を示すものであり、実際には、実行プログラム300の処理の流れに沿ってStartProfile命令及びEndProfile命令が実行される。即ち例えば、同一のStartProfile命令及びEndProfile命令が繰り返し実行されることにより、実行時間が繰り返し測定される。
図9は、図8のS820−1における処理の詳細を示す。実行時間測定部420は、EndProfile命令を生成することにより、実行プログラム300の実行中において中央処理装置1000に以下の処理を実行させる。まず、中央処理装置1000は、中央処理装置1000の現在の実行サイクルカウントを、変数Cendに代入する(S900)。また、中央処理装置1000は、Cend − Cstartを算出して動作周波数で除算することにより、実行時間を求める。また、中央処理装置1000は、実行時間の測定回数を保持する変数Iをインクリメントする。
次に、中央処理装置1000は、I≧Nか否かを判断する(S910)。即ち、測定回数が予め定められた回数Nに達していない場合には(S910:NO)、測定回数がN回に達するまでプログラムの実行を繰り返すべく、本図における処理を終了する。一方、測定回数が予め定められた回数Nに達した場合には(S910:YES)、中央処理装置1000は、同一のプログラム領域を同一の動作周波数で実行させた場合の実行時間の平均値を算出する(S920)。
次に、中央処理装置1000は、現在設定されている動作周波数が、最大の動作周波数であるか否かを判断する(S930)。なお、変数Pは、初期値として、中央処理装置1000に予め定められた標準の動作周波数(即ち例えば最大の動作周波数)を示す値を保持するものとする。現在設定されている動作周波数が、最大の動作周波数である場合には(S930:YES)、中央処理装置1000は、S920において算出した平均値を、変数Tmaxに代入する(S960)。
そして、中央処理装置1000は、その平均値が、動作周波数の変更に要する時間Tshiftと比較して極めて大きいか否かを判断する(S970)。例えば、中央処理装置1000は、その平均値が、動作周波数の変更に要する時間に基づいて予め定められた基準時間よりも大きいか否かを判断してもよい。その基準時間とは、好ましくは、動作周波数の変更に要する時間の数倍から10倍程度の時間である。また、その基準時間は、動作周波数の変更に要する時間と等しくてもよい。
その平均値が、Tshiftと比較して極めて大きい場合に(S970:YES)、中央処理装置1000は、同一のプログラム領域を同一の動作周波数で実行させて測定した各々の実行時間の、その平均値に対する差分値を算出し、その差分値をその実行時間で除算した値をそれぞれ求める(S975)。そして、中央処理装置1000は、それぞれの測定に対応して求めたその値の最大値を求める。そして、中央処理装置1000は、その最大値が、予め定められた割合Rapartより小さいか否かを判断する。
その最大値が、割合Rapartより小さい場合に(S975:YES)、中央処理装置1000は、変数Pをデクリメントし、変数Iを0に初期化する(S980)。即ち、中央処理装置1000は、次回以降の実行において動作周波数を変更して実行時間を測定する。続いて、中央処理装置1000は、変数Pが負の値の場合に(S990:NO)、変数Poptを、最小の動作周波数を示す0とする(S995)。
一方、実行時間の平均値が、Tshiftと比較して極めて大きくはない場合(S970:NO)、又は、S975において求めた最大値が、割合Rapart以上の場合(S975:NO)に、中央処理装置1000は、このプログラム領域が次回以降に実行される場合に実行時間を測定しないように設定する(S972)。一例として、実行時間測定部420は、実行プログラム300において、StartProfile命令及びEndProfile命令を削除してもよい。命令を削除するには、上述のように、リコンパイル又は動的バイナリ書換を適用すればよい。
即ちこの結果、実行時間測定部420は、標準の計算能力によりこのプログラム領域を実行させた実行時間が、基準時間より短い場合には、そのプログラム領域を次回以降に実行する場合の実行時間を測定しない。また、実行時間測定部420は、複数回測定された実行時間の測定毎の変動幅が、予め定められた基準となる変動幅より大きい場合には、そのプログラム領域を次回以降に実行する場合の実行時間を測定しない。これにより、消費エネルギー削減効果が見込みにくいプログラム領域を、実行時間の測定対象から除外し、オーバヘッドを削減できる。
更に、このプログラム領域がメソッドである場合には、好ましくは、中央処理装置1000は、そのメソッドに含まれるループ領域についての実行時間の測定をも中止する設定を行う。即ちこの結果、実行時間測定部420は、標準の計算能力によりこのメソッドを実行させた実行時間が、基準時間より短い場合には、そのメソッドに含まれる外側ループ領域、及び、その外側ループに含まれる内側ループ領域を実行する場合の実行時間を測定しない。これにより、実行時間の測定から除外する対象を、より一層効率的に選ぶことができる。
また、現在設定されている動作周波数が、最大の動作周波数でない場合には(S930:NO)、消費エネルギー算出部430は、そのプログラム領域を変数Pにより指定される動作周波数により実行した場合における消費エネルギーを算出する(S935)。そして、適正計算能力判断部440は、その消費エネルギーが、このプログラム領域について前回算出した消費エネルギーより減少したか否かを判断する(S940)。
減少していない場合、即ち、前回の消費エネルギーの方が少なかった場合には(S940:NO)、適正計算能力判断部440は、このプログラム領域の消費エネルギーを前回算出した時の動作周波数を、適正動作周波数とする(S950)。即ち、変数Poptに、P+1を代入する。一方、消費エネルギーが減少した場合には(S940:YES)、適正計算能力判断部440は、更に他の動作周波数の方が消費エネルギーが低い可能性があるので、S980に処理を移す。
本図のS970に示すように、計算能力設定部450は、あるプログラム領域について、中央処理装置1000に予め定められた標準の動作周波数でそのプログラム領域を実行した実行時間が、動作周波数の変更に要する時間に基づいて定められた基準時間より長いことを条件として、そのプログラム領域が再度実行される時に動作周波数を変更させることができる。これにより、動作周波数の変更に伴うオーバヘッドより相対的に充分長く実行される部分のみを、動作周波数の設定対象とすることができる。
更にS972に示す処理により、実行時間測定部420は、標準の動作周波数によりプログラム領域を実行させた実行時間が、基準時間より短い場合には、そのプログラム領域を次回以降に実行する場合の実行時間を測定させないようにすることができる。これにより、実行時間の測定に伴うオーバヘッドを一層削減することができる。
また、本図のS975に示す処理により、計算能力設定部450は、あるプログラム領域について、同一の動作周波数により複数回実行された実行時間の、測定毎の変動幅が、予め定められた基準となる変動幅より大きい場合には、そのプログラム領域を、動作周波数を変更することなく標準の動作周波数で実行させることができる。これにより、消費エネルギーを削減できるか不明な部分については、動作周波数の設定対象から除外することができる。
なお、S820−2及びS820−3の各々における処理は、本図の処理と略同一であるので説明を省略する。
図10は、コンパイラ40がベンチマークプログラムをコンパイルして実行した実行結果を示す。本図は、あるベンチマークプログラムの実行時において、各々の動作周波数に対する、その動作周波数によりそのベンチマークプログラムを実行した時の実行時間及び消費エネルギーを示す。動作周波数を1.6GHzから1.4GHzに低下させても、消費エネルギーは減少しない。一方、動作周波数を1.2GHzから1GHzに低下させると、実行時間の増加は僅かであるのに対して、消費エネルギーは大幅に減少する。
このように、本実施例における情報処理装置10によれば、実行時プロファイルに基づいて高い精度で中央処理装置の動作周波数を調節することができ、消費エネルギーを削減することができる。また、このベンチマークプログラムの実行において、更に、実行時間測定及び動作周波数変更に伴うオーバヘッドが、実行時間全体に対する数パーセントと極めて少ないことも確かめられた。
図11は、本実施例の変形例に係る中央処理装置1000の機能を説明する図である。本変形例において、中央処理装置1000は、複数のスレッドの各々が実行する命令列の各々を同時に並列に実行する(例えば、非特許文献5等を参照。)。そして、より詳しくは、中央処理装置1000は、同時に実行している複数のスレッドの各々について、並列に実行可能な最大の命令数のうち、当該スレッドの実行に割当てる命令数を、プログラムの実行中に動的に変更できる。一例として、IBMコーポレーション(登録商標)のPower5プロセッサにおけるSMT(Simultaneous Multi−Threading)技術において、各スレッドの実行に命令数を割当てる方法を示す。
この技術において、並列に実行している複数のスレッドの各々に対して、そのスレッドの優先度を定めることができる。中央処理装置1000は、各々のスレッドの優先度の差に基づいて、各スレッドに割当てるデコードスロットの数を変更する。例えば本図に示した表の3行目に示すように、優先度の差が0の場合には、中央処理装置1000は、各スレッドに半分ずつのデコードスロットを割当てる。一方、例えば優先度の差が1の場合には、中央処理装置1000は、一方のスレッドに全体の3/4のデコードスロットを割当て、他方のスレッドに全体の1/4のデコードスロットを割当てる。即ち、この技術において、あるスレッドの優先度とは、中央処理装置1000により並列にデコード可能な命令数のうちそのスレッドに割当てる命令数の割合を示す。
以降、この技術に基づく中央処理装置1000を例に、本実施例の変形例を説明する。
図12は、本実施例の変形例に係るコンパイラ40の機能を機能ブロックに分類して示す。本変形例において、コンパイラ40は、消費エネルギー算出部430を有しなくともよい。また、実行時間測定部420は、各々のプログラム領域について、互いに異なるスレッドの優先度によってそのプログラム領域を実行した実行時間を測定する。適正計算能力判断部440は、優先度毎に測定された実行時間に基づいて、そのプログラム領域を最高の優先度のスレッドで実行した場合の実行時間に対する、各優先度のスレッドで実行した場合の実行時間が増加した割合をそれぞれ計算する。
そして、適正計算能力判断部440は、計算したその割合が予め定められた基準の割合以内に収まる優先度のうち、最も低い優先度を、適正優先度として判断する。これを受けて、計算能力設定部450は、各々のプログラム領域が実行される場合にそのプログラム領域に先立って実行される実行位置に、そのプログラム領域を実行するスレッドの優先度を変更する命令を生成する。
即ち、本例に示すように、あるプログラム領域を実行させる計算能力とは、そのプログラム領域の実行中に設定されている動作周波数のみならず、そのプログラム領域を実行するスレッドに割当てるデコードスロットの割合を含む。そして、本例においては、実行速度の低下が所定の範囲内に収まる限りにおいて、できるだけ低い優先度を設定することにより、他のスレッドに対してより多くのデコードスロットを割当てることを目的とする。
図13は、本実施例の変形例に係るS820−1における処理の詳細を示す。図9と同様に本例においても、実行時間測定部420は、EndProfile命令を生成することにより、実行プログラム300の実行中において中央処理装置1000に以下の処理を実行させる。まず、中央処理装置1000は、中央処理装置1000の現在の実行サイクルカウントを、変数Cendに代入する(S900)。また、中央処理装置1000は、Cend − Cstartを算出して動作周波数で除算することにより、実行時間を求める。また、中央処理装置1000は、実行時間の測定回数を保持する変数Iをインクリメントする。
次に、中央処理装置1000は、I≧Nか否かを判断する(S910)。即ち、測定回数が予め定められた回数Nに達していない場合には(S910:NO)、測定回数がN回に達するまでプログラムの実行を繰り返すべく、本図における処理を終了する。一方、測定回数が予め定められた回数Nに達した場合には(S910:YES)、中央処理装置1000は、同一のプログラム領域を、優先度が同一のスレッドで複数回実行させた場合の実行時間の平均値を算出する(S920)。
次に、中央処理装置1000は、実行中のスレッドの優先度が、そのスレッドに設定可能な優先度のうち最高の優先度であるか否かを判断する(S930)。なお、変数Pは、初期値として、そのスレッドに設定可能な優先度のうち最高の優先度を示す値を保持するものとする。最高の優先度である場合には(S930:YES)、中央処理装置1000は、S920において算出した平均値を、変数Tmaxに代入する(S960)。
そして、中央処理装置1000は、その平均値が、スレッドの優先度の変更に要する時間Tshiftと比較して極めて大きいか否かを判断する(S970)。例えば、中央処理装置1000は、その平均値が、優先度の変更に要する時間に基づいて予め定められた基準時間よりも大きいか否かを判断してもよい。その基準時間とは、好ましくは、優先度の変更に要する時間の数倍から10倍程度の時間である。また、その基準時間は、優先度の変更に要する時間と等しくてもよい。
その平均値が、Tshiftと比較して極めて大きい場合に(S970:YES)、中央処理装置1000は、同一のプログラム領域を同一の優先度のスレッドで実行させて測定した各々の実行時間の、その平均値に対する差分値を算出し、その差分値をその実行時間で除算した値をそれぞれ求める(S975)。そして、中央処理装置1000は、それぞれの測定に対応して求めたその値の最大値を求める。そして、中央処理装置1000は、その最大値が、予め定められた基準値Rapartより小さいか否かを判断する。
その最大値が、割合Rapartより小さい場合に(S975:YES)、中央処理装置1000は、変数Pをデクリメントし、変数Iを0に初期化する(S980)。即ち、中央処理装置1000は、次回以降の実行においてスレッドの優先度を変更して実行時間を測定する。続いて、中央処理装置1000は、変数Pが負の値の場合に(S990:NO)、変数Poptを、最小の優先度を示す0とする(S995)。
一方、実行時間の平均値が、Tshiftと比較して極めて大きくはない場合(S970:NO)、又は、S975において求めた最大値が、割合Rapart以上の場合(S975:NO)に、中央処理装置1000は、このプログラム領域が次回以降に実行される場合に実行時間を測定しないように設定する(S972)。一例として、実行時間測定部420は、実行プログラム300において、StartProfile命令及びEndProfile命令を削除してもよい。命令を削除するには、上述のように、リコンパイル又は動的バイナリ書換を適用すればよい。
即ちこの結果、実行時間測定部420は、標準の計算能力によりこのプログラム領域を実行させた実行時間が、基準時間より短い場合には、そのプログラム領域を次回以降に実行する場合の実行時間を測定しない。また、実行時間測定部420は、複数回測定された実行時間の測定毎の変動幅が、予め定められた基準となる変動幅より大きい場合には、そのプログラム領域を次回以降に実行する場合の実行時間を測定しない。これにより、消費エネルギー削減効果が見込みにくいプログラム領域を、実行時間の測定対象から除外し、オーバヘッドを削減できる。
また、現在このスレッドに設定されている優先度が、最大の優先度でない場合には(S930:NO)、適正計算能力判断部440は、そのプログラム領域を最大の優先度で実行させた実行時間に対する、変数Pにより指定される優先度で実行した場合における実行時間の増加割合を算出する(S935)。そして、適正計算能力判断部440は、その増加割合が、予め定められた閾値以下か否かを判断する(S940)。
その増加割合が閾値以下でない場合には(S940:NO)、適正計算能力判断部440は、このプログラム領域を前回実行した時の優先度を、適正優先度とする(S950)。即ち、P+1を、適正優先度を示す値を保持する変数Poptに代入する。一方、その増加割合が閾値以下でない場合には(S940:YES)、適正計算能力判断部440は、更に低い優先度で実行できる可能性があるので、S980に処理を移す。
以上、本図においても図9と同様に、スレッドの優先度の変更に伴うオーバヘッドより相対的に充分長く実行される部分のみを、スレッドの優先度の設定対象とすることができる。また、実行時間が不安定で実行速度が低下する割合が不明な部分については、スレッドの優先度の変更対象から除外することができる。更に本例によれば、実行速度の低下が所定の範囲内に収まる限りにおいて、他のスレッドに対してより多くのデコードスロットを割当てることができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、情報処理装置10の構成を示す。 図2は、消費電力情報格納部1025のデータ構造の一例を示す。 図3は、中央処理装置1000が実行するプログラムの構成を示す。 図4は、コンパイラ40の機能を機能ブロックに分類して示す。 図5は、プログラム領域305−1〜3の具体例を示す。 図6は、コンパイラ40が中央処理装置1000に適した計算能力を設定する処理の流れを示す。 図7は、図6のS600における処理の一例について、その詳細を示す。 図8は、図6のS610における処理の詳細を示す。 図9は、図8のS820−1における処理の詳細を示す。 図10は、コンパイラ40がベンチマークプログラムをコンパイルして実行した実行結果を示す。 図11は、本実施例の変形例に係る中央処理装置1000の機能を説明する図である。 図12は、本実施例の変形例に係るコンパイラ40の機能を機能ブロックに分類して示す。 図13は、本実施例の変形例に係るS820−1における処理の詳細を示す。
符号の説明
10 情報処理装置
40 コンパイラ
1025 消費電力情報格納部
300 実行プログラム
305 プログラム領域
310 仮想マシン
320 オペレーティングシステム
325 動作周波数設定用デバイスドライバ
400 プログラム領域選択部
410 参照頻度測定部
420 実行時間測定部
430 消費エネルギー算出部
440 適正計算能力判断部
450 計算能力設定部
1000 中央処理装置

Claims (12)

  1. 実行中に計算能力の変更が可能な中央処理装置に対して、前記中央処理装置が実行する実行プログラムに基づいて決定した計算能力を設定するコンパイラであって、
    前記実行プログラムに含まれる複数のプログラム領域の各々について、前記実行プログラムの実行中に当該プログラム領域が実行される毎に前記中央処理装置の計算能力を変更して実行時間を測定する実行時間測定部と、
    各々の前記プログラム領域について測定された計算能力毎の実行時間に基づいて、当該プログラム領域を前記中央処理装置により実行させるべき計算能力である適正計算能力を判断する適正計算能力判断部と、
    各々の前記プログラム領域について、前記実行プログラムの実行中に当該プログラム領域が更に再度実行される時に当該プログラム領域を当該プログラム領域の前記適正計算能力で実行させる設定を行う計算能力設定部と
    を備えるコンパイラ。
  2. 前記計算能力設定部は、各々の前記プログラム領域について、前記中央処理装置に予め定められた標準の計算能力で当該プログラム領域を実行した実行時間が、計算能力の変更に要する時間に基づいて定められた基準時間より長いことを条件として、当該プログラム領域が再度実行される時に前記中央処理装置の計算能力を変更する設定を行う
    請求項1記載のコンパイラ。
  3. 前記実行時間測定部は、前記標準の計算能力によりプログラム領域を実行させた実行時間が、前記基準時間より短い場合に、前記実行プログラムの実行中に当該プログラム領域を次回以降に実行する場合の実行時間を測定しない
    請求項2記載のコンパイラ。
  4. 前記複数のプログラム領域は、メソッド、当該メソッドに含まれる外側ループ領域、及び、当該外側ループに含まれる内側ループ領域の何れかであり、
    前記実行時間測定部は、前記標準の計算能力により前記メソッドを実行させた実行時間が、前記基準時間より短い場合に、当該メソッドに含まれる前記外側ループ領域、及び、当該外側ループに含まれる前記内側ループ領域を実行する場合の実行時間を測定しない
    請求項3記載のコンパイラ。
  5. 前記実行時間測定部は、更に、各々の前記プログラム領域を同一の計算能力により複数回実行させた実行時間を測定し、
    前記計算能力設定部は、複数回測定された当該実行時間の測定毎の変動幅が、予め定められた基準となる変動幅より大きい場合に、当該プログラム領域を前記中央処理装置に予め定められた標準の計算能力で実行させる
    請求項1記載のコンパイラ。
  6. 前記中央処理装置は、計算能力を上昇させた場合に消費電力が増加し、計算能力を低下させた場合に消費電力が減少し、
    前記中央処理装置に設定される計算能力毎に、前記中央処理装置に当該計算能力を設定した場合における消費電力の大きさを格納する消費電力情報格納部と、
    各々の前記プログラム領域について、当該プログラム領域を各々の計算能力により実行した場合における消費エネルギーを、当該計算能力で実行させた前記実行時間に、当該計算能力に対応して前記消費電力情報格納部に格納された消費電力の大きさを乗じることにより算出する消費エネルギー算出部と
    を更に備え、
    前記適正計算能力判断部は、各々の前記プログラム領域について、前記消費エネルギー算出部により算出された消費エネルギーを最小とする計算能力を、当該プログラム領域の前記適正計算能力と判断する
    請求項1記載のコンパイラ。
  7. 前記中央処理装置は、複数のスレッドの各々の命令を並列に実行し、
    前記計算能力設定部は、各々の前記プログラム領域が実行される場合に当該プログラム領域に先立って実行される実行位置に、前記中央処理装置により並列にデコード可能な命令数のうち当該プログラム領域を実行するスレッドに割当てる命令数の割合を変更する命令を生成する
    請求項1記載のコンパイラ。
  8. 前記計算能力設定部は、各々の前記プログラム領域が実行される場合に当該プログラム領域に先立って実行される実行位置に、前記中央処理装置を動作させる動作周波数を変更する命令を生成する
    請求項1記載のコンパイラ。
  9. 前記実行プログラムに含まれる複数のプログラム領域のうち、予め定められた基準実行頻度以上の頻度で実行されるプログラム領域を選択するプログラム領域選択部を更に備え、
    前記実行時間測定部は、前記プログラム領域選択部により選択された各々の前記プログラム領域について、当該プログラム領域の実行時間を測定する
    請求項1記載のコンパイラ。
  10. 前記計算能力設定部は、先行して実行されるプログラム領域と、当該プログラム領域の後続のプログラム領域とで、前記適正計算能力が異なることを条件として、先行する当該プログラム領域及び後続の当該プログラム領域の間に実行される実行位置に、計算能力を変更する命令を生成し、当該適正計算能力が同一の場合には、計算能力を変更する命令を生成しない
    請求項1記載のコンパイラ。
  11. 実行中に計算能力の変更が可能な中央処理装置に対して、前記中央処理装置が実行する実行プログラムに基づいて決定した計算能力を設定する情報処理装置であって、
    前記実行プログラムに含まれる複数のプログラム領域の各々について、前記実行プログラムの実行中に当該プログラム領域が実行される毎に前記中央処理装置の計算能力を変更して実行時間を測定する実行時間測定部と、
    各々の前記プログラム領域について測定された計算能力毎の実行時間に基づいて、当該プログラム領域を前記中央処理装置により実行させるべき計算能力である適正計算能力を判断する適正計算能力判断部と、
    各々の前記プログラム領域について、前記実行プログラムの実行中に当該プログラム領域が更に再度実行される時に当該プログラム領域を当該プログラム領域の前記適正計算能力で実行させる設定を行う計算能力設定部と
    を備える情報処理装置。
  12. 実行中に計算能力の変更が可能な中央処理装置に対して、前記中央処理装置が実行する実行プログラムに基づいて決定した計算能力を設定するコンパイラとして、情報処理装置を機能させるコンパイラプログラムであって、
    前記情報処理装置を、
    前記実行プログラムに含まれる複数のプログラム領域の各々について、前記実行プログラムの実行中に当該プログラム領域が実行される毎に前記中央処理装置の計算能力を変更して実行時間を測定する実行時間測定部と、
    各々の前記プログラム領域について測定された計算能力毎の実行時間に基づいて、当該プログラム領域を前記中央処理装置により実行させるべき計算能力である適正計算能力を判断する適正計算能力判断部と、
    各々の前記プログラム領域について、前記実行プログラムの実行中に当該プログラム領域が更に再度実行される時に当該プログラム領域を当該プログラム領域の前記適正計算能力で実行させる設定を、コンパイル結果の実行プログラムに対して行う計算能力設定部と
    して機能させるコンパイラプログラム。
JP2004316996A 2004-10-29 2004-10-29 情報処理装置、コンパイラ、及びコンパイラプログラム Pending JP2006127302A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004316996A JP2006127302A (ja) 2004-10-29 2004-10-29 情報処理装置、コンパイラ、及びコンパイラプログラム
US11/255,027 US20060095902A1 (en) 2004-10-29 2005-10-20 Information processing device and compiler
US12/170,990 US8181169B2 (en) 2004-10-29 2008-07-10 Measuring execution time for program optimization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004316996A JP2006127302A (ja) 2004-10-29 2004-10-29 情報処理装置、コンパイラ、及びコンパイラプログラム

Publications (1)

Publication Number Publication Date
JP2006127302A true JP2006127302A (ja) 2006-05-18

Family

ID=36263635

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004316996A Pending JP2006127302A (ja) 2004-10-29 2004-10-29 情報処理装置、コンパイラ、及びコンパイラプログラム

Country Status (2)

Country Link
US (2) US20060095902A1 (ja)
JP (1) JP2006127302A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010134329A1 (ja) * 2009-05-18 2010-11-25 パナソニック株式会社 プロセッサ
WO2010137220A1 (ja) * 2009-05-28 2010-12-02 パナソニック株式会社 マルチスレッドプロセッサ、コンパイラ装置およびオペレーティングシステム装置
JP2013214331A (ja) * 2013-07-22 2013-10-17 Panasonic Corp コンパイラ
JP2013250988A (ja) * 2013-07-22 2013-12-12 Panasonic Corp マルチスレッドプロセッサ
US9513685B2 (en) 2013-07-23 2016-12-06 Fujitsu Limited Measuring method of a processing load of a processor including a plurality of cores
US9588915B2 (en) 2012-12-18 2017-03-07 Samsung Electronics Co., Ltd. System on chip, method of operating the same, and apparatus including the same
KR101770736B1 (ko) 2011-03-17 2017-09-06 삼성전자주식회사 응용프로그램의 질의 스케쥴링을 이용한 시스템의 소모전력 절감 방법 및 그 방법을 이용하여 소모전력을 절감하는 휴대단말기
JP2018124975A (ja) * 2017-01-27 2018-08-09 富士通株式会社 コンパイルプログラム、コンパイル方法及び並列処理装置
JP2019040317A (ja) * 2017-08-23 2019-03-14 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
CN114020137A (zh) * 2021-10-29 2022-02-08 西安超越申泰信息科技有限公司 一种自适应调整cpu频率控制系统功耗的方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101331460B (zh) * 2005-12-16 2012-10-03 国际商业机器公司 基于处理能力的实时基准对软件产品的使用进行计量的方法和系统
DE102007026982B4 (de) * 2007-06-07 2009-04-02 Fachhochschule Nordhausen Prozessor, programmgesteuerte Einheit und Verfahren zur Regelung eines Prozessortaktes
US8146065B2 (en) * 2007-08-13 2012-03-27 International Business Machines Corporation Running time of short running applications by effectively interleaving compilation with computation in a just-in-time environment
MY150019A (en) * 2008-03-24 2013-11-29 Mimos Berhad Novel prediction techniques
TWI382515B (zh) * 2008-10-20 2013-01-11 Accton Wireless Broadband Corp 無線收發模組
US9329876B2 (en) * 2009-05-20 2016-05-03 Microsoft Technology Licensing, Llc Resource aware programming
US8510723B2 (en) * 2009-05-29 2013-08-13 University Of Maryland Binary rewriting without relocation information
US8689225B2 (en) 2009-09-29 2014-04-01 Amazon Technologies, Inc. Attributing causality to program execution capacity modifications
US8627300B2 (en) * 2009-10-13 2014-01-07 Empire Technology Development Llc Parallel dynamic optimization
US8635606B2 (en) * 2009-10-13 2014-01-21 Empire Technology Development Llc Dynamic optimization using a resource cost registry
US8856794B2 (en) * 2009-10-13 2014-10-07 Empire Technology Development Llc Multicore runtime management using process affinity graphs
US8892931B2 (en) 2009-10-20 2014-11-18 Empire Technology Development Llc Power channel monitor for a multicore processor
KR101756820B1 (ko) * 2010-10-21 2017-07-12 삼성전자주식회사 중첩 루프를 처리하기 위한 재구성 가능 프로세서 및 방법
US8799693B2 (en) * 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9098309B2 (en) 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US9367292B2 (en) * 2012-06-11 2016-06-14 Empire Technology Development Llc Modulating dynamic optimizations of a computer program
US9996325B2 (en) 2013-03-06 2018-06-12 Qualcomm Incorporated Dynamic reconfigurable compiler
US9027007B2 (en) 2013-03-06 2015-05-05 Qualcomm Incorporated Reducing excessive compilation times
US9311153B2 (en) 2013-05-15 2016-04-12 Empire Technology Development Llc Core affinity bitmask translation
US9542179B2 (en) * 2013-09-06 2017-01-10 Texas Instruments Incorporated System and method for energy aware program development
CN103500003B (zh) * 2013-09-30 2017-02-08 北京奇虎科技有限公司 便携式终端的cpu频率调节方法及调节装置
US9442706B2 (en) * 2014-05-30 2016-09-13 Apple Inc. Combining compute tasks for a graphics processing unit
US10437699B2 (en) 2015-01-21 2019-10-08 International Business Machines Corporation Measuring execution time of benchmark programs in a simulated environment
US10534691B2 (en) * 2017-01-27 2020-01-14 Fujitsu Limited Apparatus and method to improve accuracy of performance measurement for loop processing in a program code
US11367018B2 (en) * 2019-12-04 2022-06-21 Oracle International Corporation Autonomous cloud-node scoping framework for big-data machine learning use cases
CN112162851B (zh) * 2020-09-14 2022-12-13 Oppo(重庆)智能科技有限公司 dex预编译方法、装置、计算机设备及存储介质
US11729940B2 (en) 2021-11-02 2023-08-15 Oracle International Corporation Unified control of cooling in computers

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341371B1 (en) * 1999-02-23 2002-01-22 International Business Machines Corporation System and method for optimizing program execution in a computer system
US7111178B2 (en) * 2001-09-28 2006-09-19 Intel Corporation Method and apparatus for adjusting the voltage and frequency to minimize power dissipation in a multiprocessor system
US20050044538A1 (en) * 2003-08-18 2005-02-24 Srinivas Mantripragada Interprocedural computing code optimization method and system

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788793B2 (en) 2009-05-18 2014-07-22 Panasonic Corporation Instruction issue to plural computing units from plural stream buffers based on priority in instruction order table
WO2010134329A1 (ja) * 2009-05-18 2010-11-25 パナソニック株式会社 プロセッサ
JP5330507B2 (ja) * 2009-05-18 2013-10-30 パナソニック株式会社 プロセッサ
WO2010137220A1 (ja) * 2009-05-28 2010-12-02 パナソニック株式会社 マルチスレッドプロセッサ、コンパイラ装置およびオペレーティングシステム装置
JP2010277371A (ja) * 2009-05-28 2010-12-09 Panasonic Corp マルチスレッドプロセッサ、コンパイラおよびオペレーティングシステム
KR101770736B1 (ko) 2011-03-17 2017-09-06 삼성전자주식회사 응용프로그램의 질의 스케쥴링을 이용한 시스템의 소모전력 절감 방법 및 그 방법을 이용하여 소모전력을 절감하는 휴대단말기
US9588915B2 (en) 2012-12-18 2017-03-07 Samsung Electronics Co., Ltd. System on chip, method of operating the same, and apparatus including the same
JP2013250988A (ja) * 2013-07-22 2013-12-12 Panasonic Corp マルチスレッドプロセッサ
JP2013214331A (ja) * 2013-07-22 2013-10-17 Panasonic Corp コンパイラ
US9513685B2 (en) 2013-07-23 2016-12-06 Fujitsu Limited Measuring method of a processing load of a processor including a plurality of cores
JP2018124975A (ja) * 2017-01-27 2018-08-09 富士通株式会社 コンパイルプログラム、コンパイル方法及び並列処理装置
JP2019040317A (ja) * 2017-08-23 2019-03-14 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
CN114020137A (zh) * 2021-10-29 2022-02-08 西安超越申泰信息科技有限公司 一种自适应调整cpu频率控制系统功耗的方法

Also Published As

Publication number Publication date
US20090077351A1 (en) 2009-03-19
US20060095902A1 (en) 2006-05-04
US8181169B2 (en) 2012-05-15

Similar Documents

Publication Publication Date Title
JP2006127302A (ja) 情報処理装置、コンパイラ、及びコンパイラプログラム
JP5885920B2 (ja) 仮想cpuベースの、周波数、及び電圧制御
Tang et al. Compiling for niceness: Mitigating contention for qos in warehouse scale computers
US10416995B2 (en) Techniques for providing environmental impact information associated with code
US8276015B2 (en) Managing the power-performance range of an application
Lo et al. Dynamic management of TurboMode in modern multi-core chips
Tseng et al. User-centric energy-efficient scheduling on multi-core mobile devices
US20040168097A1 (en) Machine Code Builder Derived Power Consumption Reduction
EP1462915A2 (en) Clock controlling method and apparatus
US11157279B2 (en) Performance scaling for binary translation
GB2459968A (en) Using the number of times a processor has to wait for a response to determine an efficiency metric and an operational characteristic for the processor
JP3992102B2 (ja) コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体
TW201716998A (zh) 系統單晶片中應用程式設定檔驅動之排程及組態
WO2013109697A1 (en) Efficient code dispatch based on performance and energy consumption
US20190235849A1 (en) Technologies for translation cache management in binary translation systems
Hsiu et al. User-centric scheduling and governing on mobile devices with big. LITTLE processors
Cicotti et al. Efficient speed (ES): Adaptive DVFS and clock modulation for energy efficiency
JP6477260B2 (ja) アプリケーションを実行する方法及びリソースマネジャ
Brock et al. PAYJIT: space-optimal JIT compilation and its practical implementation
Beyler et al. Performance driven data cache prefetching in a dynamic software optimization system
KR101552953B1 (ko) Dvfs를 지원하는 멀티코어 플랫폼에서의 전력할당 방법 및 장치
Kunkel et al. Towards an energy-aware scientific i/o interface
JP3927510B2 (ja) コンパイラ装置、コンパイラプログラム、記録媒体、及びコンパイル方法
Sundriyal et al. Runtime Power Limiting in GAMESS on Dual-Socket Nodes
Pickett et al. Adaptive software return value prediction