JP5505522B2 - プログラム実行方法 - Google Patents
プログラム実行方法 Download PDFInfo
- Publication number
- JP5505522B2 JP5505522B2 JP2012555619A JP2012555619A JP5505522B2 JP 5505522 B2 JP5505522 B2 JP 5505522B2 JP 2012555619 A JP2012555619 A JP 2012555619A JP 2012555619 A JP2012555619 A JP 2012555619A JP 5505522 B2 JP5505522 B2 JP 5505522B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- code
- power consumption
- execution
- application
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4432—Reducing the energy consumption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
Description
本発明は、対象アプリケーションのプログラムを実行するプログラム実行方法に関する。
従来、グリッドコンピュータなどを用いて分散処理を行う場合、個々のマシンの構成が異なるため、各マシンにはアプリケーションのJava(登録商標)バイトコード(以下、「バイトコード」と称する。)を配布する。そして、各マシンではJava仮想マシン(以下、「JavaVM(Virtual Machine)」と称する。)を用いてバイトコードで実行する。
バイトコードはJavaのコンパイラが生成する実行用コードである。バイトコードは中間コードの一種で、特定の実行環境に依存しない。バイトコードはJavaVM内のインタプリタによってネイティブコードに変換されてから実行される(たとえば、下記特許文献1を参照。)。たとえば、JavaVMとしては、JIT(Just In Time)コンパイラ(たとえば、下記特許文献2,3を参照。)が挙げられる。ネイティブコードとは、端末固有の機械語で記述されたプログラムである。
また、従来、携帯端末においては、アプリケーションはバイトコードでダウンロードされ、JavaVMを用いて該バイトコードでアプリケーションが実行されている。
また、設計者がJavaで記述したソースコードと中間語にコンパイルされたバイトコードとの実行比率を電力要求に応じて決定することで、消費電力を削減する技術が知られている(たとえば、下記特許文献4を参照。)。
また、CPU(Central Processing Unit)は複数のアプリケーションが割り当てられた場合、各アプリケーションの実行時間に基づいて実行の優先度を決定する。そして、CPUは、アプリケーションの実行時に空き時間が生じる場合、優先度の順に応じて該空き時間に他のアプリケーションを実行する技術が知られている(たとえば、下記特許文献5を参照。)。
しかしながら、携帯端末のように端末によって性能が異なる場合、従来技術を用いれば消費電力を削減することはできても、電力要求がいずれの端末であっても同条件であれば、個々の端末の性能を引き出せない場合があるという問題点があった。
本発明は、上述した従来技術による問題点を解消するため、消費電力を抑制しつつ、各端末の性能に沿ったコードでアプリケーションを実行するプログラム実行方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一観点によれば、第1のコードによって記述される第1プログラムの実行時の第1の消費電力を算出し、前記第1プログラムと同じ機能を有するとともに第2のコードによって記述される第2プログラムの実行時の第2の消費電力を算出し、前記第2の消費電力が前記第1の消費電力よりも小さいとき、前記第1プログラムを前記第2プログラムに変換して前記第2プログラムを実行するプログラム実行方法が提案される。
本発明の一観点によれば消費電力を抑制しつつ、各端末の性能に沿ったコードでアプリケーションを実行するという効果を奏する。
以下に添付図面を参照して、本発明にかかるプログラム実行方法の実施の形態を詳細に説明する。本実施の形態では、第1のコードによって記述される第1のプログラムを対象アプリケーションのバイトコードと称する。第1のプログラムと同じ機能を有するとともに第2のコードによって記述される第2のプログラムを対象アプリケーションのネイティブコードと称する。
図1は、本発明の一例を示す説明図である。ここでは、プログラム実行装置が、バイトコードからネイティブコードに変換しつつバイトコードで実行し、変換終了後にネイティブコードで実行する場合と、バイトコードで実行する場合と、のいずれの場合で消費電力が低くなるかを判断する。プログラム実行装置が、判断結果に基づいてバイトコードからネイティブコードに変換するか否かを決定する。グラフ100では、バイトコードからネイティブコードに変換しつつバイトコードで実行し、変換終了後にネイティブコードで実行する場合の消費電力を示している。グラフ101では、バイトコードで実行する場合の消費電力を示している。
プログラム実行装置が、対象アプリケーションをダウンロードする。該対象アプリケーションに関する情報は、バイトコードと、バイトコードでの実行時間(T)と、バイトコードのコード量(Code)である。対象アプリケーションのバイトコードでの実行時間(T)は、バイトコードでの実行時に要求される実行性能である。図1では、バイトコードでの実行性能と同一性能でネイティブコードでの実行を行った場合に、消費電力の値が小さくなるか否かを判断している。プログラム実行装置が、コード量を用いて、対象アプリケーションのバイトコードから対象アプリケーションのネイティブコードへの変換にかかる変換時間(Tc)を算出する。Tcは下記式(1)に基づいて算出される。
Tc≒k×Code+C ・・・(1)
ここで、kはCPUの性能とコンパイラの性能によって決まる比例係数である。CはCPUの性能とコンパイラの性能によって決まる定数である。つぎに、プログラム実行装置が、バイトコードからネイティブコードへの変換後に、対象アプリケーションをネイティブコードで実行する実行時間(Tn)を下記式(2)に基づいて算出する。
Tn=T−Tc ・・・(2)
つぎに、プログラム実行装置が、下記式(3)が成り立つ場合、対象アプリケーションのバイトコードをネイティブコードに変換すると決定する。下記式(3)が成り立たない場合、対象アプリケーションのバイトコードをネイティブコードに変換しないと決定する。
Pc×Tc+Pn×Tn<P×Tn ・・・(3)
ここで、Pcはバイトコードからネイティブコードへの変換時の単位時間当たりの消費電力の値であり、Pnがネイティブコードでの実行時の単位時間当たりの消費電力の値であり、Pがバイトコードでの実行時の単位時間当たりの消費電力の値である。Pn<P<Pcである。バイトコードでの実行にはJavaVMを実行させなければならないため、バイトコードでの実行はネイティブコードでの実行よりも単位時間当たりの消費電力の値が大きくなる。
また、Pn、P、Pcは、各端末が有するCPUの性能に沿ってあらかじめ決定されている。ここでのCPUの性能とは、具体的には、たとえば、計算能力や各実行時に供給されるクロックの周波数などである。グラフ100とグラフ101において、P×Tc(斜線部)は共通であるため、式(3)にはP×Tcが含まれていない。
また、本実施の形態では、対象アプリケーションの実行時間に基づいて消費電力を算出している。占いアプリケーションなどの実行時間が予測可能なゲームやバナー上の広告などは実行時間が一定であるため、プログラム実行装置が、上述のようにバイトコードと併せて実行時間をダウンロードすることができる。アプリケーションの実行時間がアプリケーションの開発者によってHtml(Hyper text markup language)に埋め込まれていてもよい。また、プログラム実行装置が、対象アプリケーションの実行時間の統計データから対象アプリケーションの実行時間を予測してもよい。
本プログラム実行装置は、シングルコアシステムであってもマルチコアプロセッサシステムであってもよいが、本実施の形態ではマルチコアプロセッサシステムを例に挙げて説明する。ここで、マルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(マルチコアプロセッサシステムのハードウェア)
図2は、マルチコアプロセッサシステムのハードウェアを示す説明図である。図2において、マルチコアプロセッサシステム200は、CPU#0と、CPU#1と、ディスプレイ201と、キーボード202と、I/F(InterFace)203と、RAM(Randam Access Memory)206と、を有している。さらに、マルチコアプロセッサシステム200は、フラッシュROM(Read Only Memory)コントローラ204と、フラッシュROM205と、ROM207と、フラッシュROM208と、クロック供給回路209と、を有している。CPU#0と、CPU#1と、ディスプレイ201と、キーボード202と、I/F203と、フラッシュROMコントローラ204と、RAM206と、ROM207と、フラッシュROM208とは、バス212を介して接続されている。
図2は、マルチコアプロセッサシステムのハードウェアを示す説明図である。図2において、マルチコアプロセッサシステム200は、CPU#0と、CPU#1と、ディスプレイ201と、キーボード202と、I/F(InterFace)203と、RAM(Randam Access Memory)206と、を有している。さらに、マルチコアプロセッサシステム200は、フラッシュROM(Read Only Memory)コントローラ204と、フラッシュROM205と、ROM207と、フラッシュROM208と、クロック供給回路209と、を有している。CPU#0と、CPU#1と、ディスプレイ201と、キーボード202と、I/F203と、フラッシュROMコントローラ204と、RAM206と、ROM207と、フラッシュROM208とは、バス212を介して接続されている。
ここで、CPU#0とCPU#1は、それぞれレジスタとコアを有している。コアは、演算機能を有している。各CPU内のレジスタは、PC(Program Counter)やリセットレジスタを有している。
CPU#0はマスタCPUであり、マルチコアプロセッサシステム200の全体の制御を司り、OS240を実行する。OS240はマスタOSであり、CPU#0に割り当てられたアプリケーションを実行する。OS240はスケジューラを有し、スケジューラは起動指示を受け付けたアプリケーションをマルチコアプロセッサのうちのいずれのCPUに割り当てるかを制御する機能を有している。スケジューラはCPU#0に割り当てられたアプリケーションの実行順序を制御する機能を有する。
CPU#1は、スレーブCPUであり、OS241を実行する。OS241は、スレーブOSであり、CPU#1に割り当てられたアプリケーションを実行する。OS241は、スケジューラを有し、スケジューラはCPU#1に割り当てられたアプリケーションの実行順序を制御する機能を有する。
1次キャッシュ230と1次キャッシュ231とは、それぞれキャッシュメモリとキャッシュコントローラとを有している。1次キャッシュ230はOS240が実行するアプリケーションのスレッドからRAM206への書込処理を一時的に記憶する。1次キャッシュ230は、RAM206から読み出されたデータを一時的に記憶する。1次キャッシュ231はOS241が実行するアプリケーションのスレッドからRAM206への書込処理を一時的に記憶する。1次キャッシュ231は、RAM206から読み出されたデータを一時的に記憶する。
1次キャッシュ230と1次キャッシュ231とが共有するデータがいずれか一方のキャッシュで更新された場合、スヌープコントローラ210は、該更新を検出し、他の1次キャッシュ内の該データも更新する機能を有している。
2次キャッシュ211は、キャッシュメモリとキャッシュコントローラとを有している。2次キャッシュ211では、1次キャッシュ230や1次キャッシュ231から追い出されたデータを記憶する。2次キャッシュ211では、OS240とOS241とが共有するデータを記憶する。2次キャッシュ211は、1次キャッシュ230や1次キャッシュ231よりも、記憶容量が大きくかつ各CPUからのアクセス速度が遅い。2次キャッシュ211はRAM206よりも、記憶容量が小さくかつ各CPUからのアクセス速度が速い。
ディスプレイ201は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ201は、たとえば、TFT液晶ディスプレイなどを採用することができる。キーボード202は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード202は、タッチパネル式の入力パッドやテンキーなどであってもよい。
I/F203は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F203は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F203には、たとえばモデムやLANアダプタなどを採用することができる。本実施の形態では、I/F203を介してフラッシュROM208へアプリケーションをダウンロードしている。
フラッシュROMコントローラ204と、フラッシュROM205と、RAM206と、ROM207と、フラッシュROM208とは、CPU#0とCPU#1に共有されるメモリである。図示していないが、メモリコントローラが、各CPUから各メモリへのアクセス要求を調停する。
ROM207は、ブートプログラムなどのプログラムを記憶している。RAM206は、各CPUのワークエリアとして使用される。フラッシュROM208は、OS240やOS241などのシステムソフトウェアやアプリケーションのバイトコードやアプリケーションのネイティブコードを記憶している。
フラッシュROMコントローラ204は、各CPUの制御に従ってフラッシュROMに対するデータのリード/ライトを制御する。フラッシュROM205は、フラッシュROMコントローラ204の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム200を使用するユーザがI/F203を通して取得した画像データ、映像データなどである。フラッシュROM205は、たとえば、メモリカード、SDカードなどを採用することができる。
クロック供給回路209は、CPUなど各部へクロックを供給する。ここでは、クロック供給回路209がCPUへ供給可能なクロックの周波数は100[MHz]と200[MHz]と300[MHz]とする。クロック供給回路209は、レジスタ220とレジスタ221を有する。レジスタ220はCPU#0へ与えるクロックの周波数を設定可能であり、レジスタ221はCPU#1へ与えるクロックの周波数を設定可能である。
レジスタ220の値が1であれば、CPU#0へ与えるクロックの周波数が100[MHz]となり、レジスタ220の値が2であれば、CPU#0へ与えるクロックの周波数が200[MHz]となる。レジスタ220の値が3であれば、CPU#0へ与えるクロックの周波数が300[MHz]となる。レジスタ221の値が1であれば、CPU#1へ与えるクロックの周波数が100[MHz]となり、レジスタ221の値が2であれば、CPU#1へ与えるクロックの周波数が200[MHz]となる。レジスタ221の値が3であれば、CPU#1へ与えるクロックの周波数が300[MHz]となる。
(マルチコアプロセッサシステム200の機能ブロック図)
図3は、マルチコアプロセッサシステム200の機能ブロック図である。マルチコアプロセッサシステム200は、取得部301と、変換時間算出部302と、第1の算出部303と、第2の算出部304と、判断部305と、変換部306と、実行部307と、制御部308と、を有している。具体的には、たとえば、フラッシュROM208などの記憶装置に取得部301〜制御部308に関する処理がコーディングされたプログラムが記憶されている。マルチコアプロセッサのうちのCPUが該記憶装置にアクセスして該プログラムを読み出し、該プログラム内にコーディングされている処理を実行することにより、取得部301〜制御部308に関する処理が実行される。本実施の形態では、該プログラムはOS240とOS241と後述するコンパイルスケジューラである。
図3は、マルチコアプロセッサシステム200の機能ブロック図である。マルチコアプロセッサシステム200は、取得部301と、変換時間算出部302と、第1の算出部303と、第2の算出部304と、判断部305と、変換部306と、実行部307と、制御部308と、を有している。具体的には、たとえば、フラッシュROM208などの記憶装置に取得部301〜制御部308に関する処理がコーディングされたプログラムが記憶されている。マルチコアプロセッサのうちのCPUが該記憶装置にアクセスして該プログラムを読み出し、該プログラム内にコーディングされている処理を実行することにより、取得部301〜制御部308に関する処理が実行される。本実施の形態では、該プログラムはOS240とOS241と後述するコンパイルスケジューラである。
取得部301は、対象アプリケーションの機械語でないバイトコードから機械語であるネイティブコードへの変換にかかる変換時間(Tc)と、バイトコードでの実行時間(T)を取得する。変換時間(Tc)については、取得してもよいし算出してもよい。変換時間(Tc)を算出する場合には、取得部301は、バイトコードのコード量を取得する。変換時間算出部302は、変換時間(Tc)をバイトコードのコード量とCPUの性能とに応じて算出する。具体的には、たとえば、変換時間算出部302は、上記式(2)に基づいて算出する。
第1の算出部303は、バイトコードでの実行時の第1の消費電力を算出する。具体的には、たとえば、第1の算出部303は、取得部301により取得された実行時間(T)と変換時間算出部302により算出された変換時間(Tc)との差分値(Tn)を算出する。第1の算出部303は、差分値(Tn)と、バイトコードでの実行時の単位時間当たりの消費電力の値(P)とにより、バイトコードでの実行時の消費電力の値(P×Tn)を算出する。ここでは、バイトコードでの実行時の消費電力の値(P×Tn)が第1の消費電力である。
第2の算出部304は、ネイティブコードでの実行時の第2の消費電力を算出する。具体的には、たとえば、第2の算出部304は、変換時間算出部302により算出された変換時間(Tc)と変換時の単位時間当たりの消費電力の値(Pc)とにより変換時間(Tc)での消費電力の値(Pc×Tc)を算出する。
そして、第2の算出部304は、差分値(Tn)と、ネイティブコードでの実行時の単位時間当たりの消費電力の値(Pn)とにより、ネイティブコードでの実行時の消費電力の値(Pn×Tn)を算出する。第2の算出部304は、第1の算出部303により算出された変換時間での消費電力の値と第2の算出部304により算出されたネイティブコードでの実行時の消費電力の値との加算値を算出する。ここでは、加算値が、第2の消費電力である。
また、第2の算出部304では、バイトコードでの実行時の単位時間当たりの消費電力の値(P)に対する変換時の単位時間当たりの消費電力の値(Pc)の比率(Y)に基づいて第2の消費電力を算出してもよい。さらに、第2の算出部304では、バイトコードでの実行時の単位時間当たりの消費電力の値(P)に対するネイティブコードでの実行時の単位時間当たりの消費電力の値(Pn)の比率(X)に基づいて第2の消費電力を算出してもよい。
判断部305は、第2の算出部304により算出された加算値が、第1の算出部303により算出されたバイトコードでの実行時の消費電力の値未満となるか否かを判断する。
変換部306は、判断部305によって加算値が算出されたバイトコードでの実行時の消費電力の値未満であると判断された場合、バイトコードをネイティブコードへ変換する。変換部306は、判断部305によって加算値が算出されたバイトコードでの実行時の消費電力の値未満でないと判断された場合、バイトコードをネイティブコードへ変換しない。
実行部307は、判断部305によって加算値が算出されたバイトコードでの実行時の消費電力の値未満であると判断された場合、変換部306によるバイトコードからネイティブコードへの変換が終了するまで、バイトコードで実行する。そして、実行部307は、変換部306によりバイトコードからネイティブコードへの変換が終了すると、ネイティブコードで実行する。実行部307は、判断部305によって加算値が算出されたバイトコードでの実行時の消費電力の値未満でないと判断された場合、バイトコードで実行する。
制御部308は、変換部306によりバイトコードをネイティブコードに変換するときに設定される動作クロックの周波数を、バイトコードでの実行時に設定される動作クロックの周波数よりも高く設定する。制御部308は、ネイティブコードで実行するときに設定されるクロックの周波数をバイトコードで実行するときに設定されるクロックの周波数よりも低く設定する。
以上を踏まえて、実施例1,2を用いて詳細に説明する。実施例1では、PとPcとPnとを基づいてバイトコードからネイティブコードへ変換するか否かを決定する例を示す。実施例2では、XとYとに基づいてバイトコードからネイティブコードへ変換するか否かを決定する例を示す。
(実施例1)
図4は、割り当て管理テーブルの一例を示す説明図である。割り当て管理テーブル400には、各CPUにいずれのアプリが割り当てられているかが登録される。割り当て管理テーブル400は、CPUの識別情報の項目401と、アプリの識別情報の項目402と、を有している。CPUの識別情報の項目401には、CPUの識別情報が登録される。ここでは、CPU#0とCPU#1を示す識別情報が登録されている。
図4は、割り当て管理テーブルの一例を示す説明図である。割り当て管理テーブル400には、各CPUにいずれのアプリが割り当てられているかが登録される。割り当て管理テーブル400は、CPUの識別情報の項目401と、アプリの識別情報の項目402と、を有している。CPUの識別情報の項目401には、CPUの識別情報が登録される。ここでは、CPU#0とCPU#1を示す識別情報が登録されている。
アプリの識別情報の項目402には、CPUの識別情報の項目401に識別情報が登録された各CPUに割り当てられたアプリケーションの識別情報が登録される。割り当て管理テーブル400は、RAM206、1次キャッシュ230および1次キャッシュ231、2次キャッシュ211などの記憶装置に記憶されていることとする。
図5は、実施例1で用いる消費電力テーブルの一例を示す説明図である。消費電力テーブル500は、実行の項目501と、クロック周波数の項目502と、単位時間当たりの消費電力の項目503と、を有している。実行の項目501には、ネイティブコードでの実行と、バイトコードでの実行と、コンパイラの実行と、のいずれかが登録されている。クロック周波数の項目502には、実行の項目501に登録された実行に沿ったCPUへ供給するクロックの周波数が登録されている。単位時間当たりの消費電力の項目503には、実行の項目501に登録された実行時における単位時間当たりの消費電力が登録されている。
消費電力テーブル500では、Pcが100[mW]であり、Pnが25[mW]であり、Pが50[mW]である(Pn<P<Pc)。消費電力テーブル500では、コンパイラを実行時にCPUへ与えるクロックの周波数(Cc)が300[MHz]であり、ネイティブコードでの実行時にCPUへ与えるクロックの周波数(Cn)は100[MHz]である。消費電力テーブル500では、バイトコードでの実行時にCPUへ与えるクロックの周波数(Cb)は200[MHz]である。
CnとCbとCcとの関係は、Cn<Cb<Ccである。バイトコードではJavaVMがネイティブコードに変換しながら実行するため、バイトコードでの実行はネイティブコードでの実行と比較して処理量が多い。そのため、ネイティブコードでの実行時にバイトコードでの実行時よりもクロックの周波数が低くなっても、バイトコードでの実行時に要求された動作を満たすことができる。消費電力テーブル500は、RAM206、1次キャッシュ230および1次キャッシュ231、2次キャッシュ211などの記憶装置に記憶されていることとする。
図6は、変換管理テーブルの一例を示す説明図である。変換管理テーブル600では、バイトコードからネイティブコードに変換すると決定されたアプリケーションの変換状態が管理される。変換管理テーブル600は、アプリの識別情報の項目601と変換状態の項目602を有している。アプリの識別情報の項目601には、バイトコードからネイティブコードに変換すると決定されたアプリケーションの識別情報が登録される。
変換状態の項目602は、アプリの識別情報の項目601に識別情報が登録されたアプリケーションのバイトコードがネイティブコードへ変換されたか否かが登録される。変換が終了したアプリケーションに関する変換状態の項目602には、「完了」が登録され、変換が終了していないアプリケーションに関する変換状態の項目602には、「未完了」が登録される。変換管理テーブル600は、RAM206、1次キャッシュ230および1次キャッシュ231、2次キャッシュ211などの記憶装置に記憶されていることとする。
図7は、アプリ#Aのダウンロードを示す説明図である。OS240が、アプリ#AをI/F203を介してダウンロードする。ここでは、アプリ#Aのバイトコードと、アプリ#Aのバイトコードでの実行時間(T)と、アプリ#Aのバイトコードのコード量(Code)とが、ダウンロードされる。そして、OS240が、コンパイルスケジューラ700を起動する。コンパイルスケジューラ700は、アプリケーションのバイトコードからCPU#0やCPU#1が解釈可能な機械語で示されたネイティブコードへ変換する機能を有する。コンパイルスケジューラ700が、ダウンロードされたアプリ#Aの実行時間(T)とアプリ#Aのコード量(Code)を取得する。たとえば、TとCodeとkとCとが下記であるとする。
・T=500[ms]
・Code=160バイト
・k=0.5
・C=10
・Code=160バイト
・k=0.5
・C=10
コンパイルスケジューラ700が、上記式(1)に基づいてアプリ#Aのバイトコード701からアプリ#Aのネイティブコードへの変換時間(Tc)を算出し、上記式(2)に基づいて変換後のネイティブコードでの実行時間(Tn)を算出する。
・Tc=0.5×160+10=90[ms]
・Tn=500[ms]−90[ms]=410[ms]
・Tn=500[ms]−90[ms]=410[ms]
コンパイルスケジューラ700が、消費電力テーブル500からPとPcとPnとを取得し、式(3)を判断する。上述のようにPcが100[mW]であり、Pnが25[mW]であり、Pが50[mW]である。
・式(3)の左辺=100[mW]×90[ms]+25[mW]×410[ms]
=19250
・式(3)の右辺=50[mW]×410[ms]
=20500
=19250
・式(3)の右辺=50[mW]×410[ms]
=20500
式(3)の左辺が式(3)の右辺よりも小さいので、式(3)が成り立つ。よって、コンパイルスケジューラ700が、アプリ#Aのバイトコード701をアプリ#Aのネイティブコードに変換すると決定する。コンパイルスケジューラ700が、決定結果をOS240へ通知する。
図8は、変換管理テーブル600の登録例を示す説明図である。OS240が、決定結果を受け付けると、変換管理テーブル600のアプリの識別情報の項目601にアプリ#Aの識別情報を登録し、変換状態の項目602に未完了を登録する。
図9は、変換例を示す説明図である。OS240が、コンパイラ900をCPU#1に割り当てる。OS241が、コンパイラ900の割り当てを受け付けると、クロック供給回路209のレジスタ221を3に設定することにより、CPU#1に供給されるクロックの周波数がCc=300[MHz]となるように制御する。OS241がコンパイラ900を実行し、コンパイラ900がアプリ#Aのバイトコード701をアプリ#Aのネイティブコード901に変換する。
OS240が、JavaVM902をCPU#0に割り当てて、クロック供給回路209のレジスタ220を2に設定することにより、CPU#0に供給されるクロックの周波数がCb=200[MHz]となるように制御する。OS240が、JavaVM902上でアプリ#Aをアプリ#Aのバイトコード701で実行する。
図10は、コンパイラ900とアプリ#Aの割り当てによる割り当て管理テーブル400の更新例を示す説明図である。割り当て管理テーブル400のCPUの識別情報の項目401がCPU#0であるアプリの識別情報の項目402にJavaVM:アプリ#Aを登録する。JavaVM:アプリ#Aとは、JavaVM902によってアプリ#Aが実行されていることを示す。割り当て管理テーブル400のCPUの識別情報の項目401がCPU#1であるアプリの識別情報の項目402にコンパイラ900を登録する。
図11は、コンパイル終了例を示す説明図である。アプリ#Aのバイトコード701からアプリ#Aのネイティブコード901への変換が終了する。コンパイラ900が変換管理テーブル600のアプリの識別情報の項目601がアプリ#Aである変換状態の項目602に完了を登録する。そして、コンパイラ900が終了する。
図12は、変換終了後の変換管理テーブル600の更新例を示す説明図である。変換管理テーブル600は、アプリの識別情報の項目601がアプリ#Aである変換状態の項目602に完了が登録されている。
図11に戻って、コンパイラ900が終了すると、他にCPU#1へ割り当てられているアプリケーションのスレッドがないため、OS241がクロック供給回路209のレジスタ221の値を1に設定する。これにより、CPU#1へ与えられるクロックの周波数が100[MHz]となる。OS241が割り当て管理テーブル400のCPUの識別情報の項目401がCPU#1であるアプリの識別情報の項目402からコンパイラ900を削除する。
OS240が、アプリ#Aのバイトコード701からアプリ#Aのネイティブコード901への変換終了通知を受け付けると、JavaVM902を終了させる。OS240が、クロック供給回路209のレジスタ220の値を1に設定する。これにより、CPU#0へ与えられるクロックの周波数が100[MHz]となる。OS240が、アプリ#Aをアプリ#Aのネイティブコード901で実行する。OS240が、割り当て管理テーブル400のCPUの識別情報の項目401がCPU#0であるアプリの識別情報の項目402からJavaVM:アプリ#Aを削除して、アプリ#Aを登録する。
図13は、変換終了後の割り当て管理テーブル400の更新例を示す説明図である。割り当て管理テーブル400では、CPUの識別情報の項目401がCPU#1であるアプリの識別情報の項目402からコンパイラ900が削除されている。割り当て管理テーブル400では、CPUの識別情報の項目401がCPU#0であるアプリの識別情報の項目402にアプリ#Aが登録されている。
(ダウンロード時の各OSによる変換制御処理)
図14は、ダウンロード時の各OSによる変換制御処理手順の一例を示すフローチャートである。ダウンロードに関しては、いずれのOSが行ってもよい。OSが、対象アプリケーションをダウンロードすると(ステップS1401)、コンパイルスケジューラ700を起動する(ステップS1402)。OSが、コンパイルスケジューラ700から決定結果を受け付けたか否かを判断する(ステップS1403)。
図14は、ダウンロード時の各OSによる変換制御処理手順の一例を示すフローチャートである。ダウンロードに関しては、いずれのOSが行ってもよい。OSが、対象アプリケーションをダウンロードすると(ステップS1401)、コンパイルスケジューラ700を起動する(ステップS1402)。OSが、コンパイルスケジューラ700から決定結果を受け付けたか否かを判断する(ステップS1403)。
OSが、コンパイルスケジューラ700から決定結果を受け付けていないと判断した場合(ステップS1403:No)、ステップS1403へ戻る。OSが、コンパイルスケジューラ700から決定結果を受け付けたと判断した場合(ステップS1403:Yes)、決定結果がダウンロードしたアプリケーションを変換することを示すか否かを判断する(ステップS1404)。
OSが、決定結果がダウンロードしたアプリケーションを変換することを示している場合(ステップS1404:Yes)、負荷が小さいCPUにコンパイラ900を割り当て(ステップS1405)、ステップS1406へ移行する。ステップS1404において、OSが、決定結果がダウンロードしたアプリケーションを変換しないことを示している場合(ステップS1404:No)、ステップS1406へ移行する。OSが、ダウンロードしたアプリケーションを負荷が小さいCPUによりJavaVM上で実行し(ステップS1406)、一連の処理を終了する。
(実施例1にかかるコンパイルスケジューラ700による変換制御処理手順)
図15は、実施例1にかかるコンパイルスケジューラ700による変換制御処理手順の一例を示すフローチャートである。コンパイルスケジューラ700が、対象アプリケーションの実行時間(T)とコード量(Code)を取得し(ステップS1501)、Tc=k×Code+Cを算出し(ステップS1502)、Tn=T−Tcを算出する(ステップS1503)。コンパイルスケジューラ700が、Pと、Pcと、Pnとを取得し(ステップS1504)、Pc×Tc+Pn×Tn<P×Tnであるか否かを判断する(ステップS1505)。
図15は、実施例1にかかるコンパイルスケジューラ700による変換制御処理手順の一例を示すフローチャートである。コンパイルスケジューラ700が、対象アプリケーションの実行時間(T)とコード量(Code)を取得し(ステップS1501)、Tc=k×Code+Cを算出し(ステップS1502)、Tn=T−Tcを算出する(ステップS1503)。コンパイルスケジューラ700が、Pと、Pcと、Pnとを取得し(ステップS1504)、Pc×Tc+Pn×Tn<P×Tnであるか否かを判断する(ステップS1505)。
コンパイルスケジューラ700が、Pc×Tc+Pn×Tn<P×Tnであると判断した場合(ステップS1505:Yes)、ネイティブコードへ変換すると決定する(ステップS1506)。コンパイルスケジューラ700が、Pc×Tc+Pn×Tn<P×Tnでないと判断した場合(ステップS1505:No)、ネイティブコードへ変換しないと決定する(ステップS1507)。コンパイルスケジューラ700が、ステップS1506、ステップS1507のつぎに、決定結果をOSへ通知し(ステップS1508)、一連の処理を終了する。
(各OSによるプログラム実行処理手順)
図16は、各OSによるプログラム実行処理手順を示すフローチャートである。OSが、ディスパッチまたはスイッチ、または処理終了を検出したか否かを判断する(ステップS1601)。OSが、ディスパッチまたはスイッチ、および処理終了を検出していないと判断した場合(ステップS1601:No)、ステップS1601へ戻る。
図16は、各OSによるプログラム実行処理手順を示すフローチャートである。OSが、ディスパッチまたはスイッチ、または処理終了を検出したか否かを判断する(ステップS1601)。OSが、ディスパッチまたはスイッチ、および処理終了を検出していないと判断した場合(ステップS1601:No)、ステップS1601へ戻る。
OSが、ディスパッチまたはスイッチを検出したと判断した場合(ステップS1601:ディスパッチまたはスイッチ)、ステップS1602へ移行する。OSが、ディスパッチまたはスイッチされたアプリケーションがネイティブコードへ変換するアプリケーション、またはコンパイラ900であるか否かを判断する(ステップS1602)。OSが、ディスパッチまたはスイッチされたアプリケーションがネイティブコードへ変換するアプリケーション、およびコンパイラ900でないと判断した場合(ステップS1602:No)、クロックの周波数をCbに設定する(ステップS1603)。そして、OSが、JavaVM上でアプリケーションをバイトコードで実行し(ステップS1604)、ステップS1601へ戻る。
OSが、ディスパッチまたはスイッチされたアプリケーションがネイティブコードへ変換するアプリケーションであると判断した場合(ステップS1602:変換)、ネイティブコードに変換済か否かを判断する(ステップS1605)。OSが、ネイティブコードに変換済でないと判断した場合(ステップS1605:No)、ステップS1603へ移行する。OSが、ネイティブコードに変換済であると判断した場合(ステップS1605:Yes)、クロックの周波数をCnに設定し(ステップS1606)、アプリケーションをネイティブコードで実行し(ステップS1607)、ステップS1601へ戻る。
OSが、ディスパッチまたはスイッチされたアプリケーションがコンパイラ900であると判断した場合(ステップS1602:コンパイラ)、クロックの周波数をCcに設定する(ステップS1608)。OSが、コンパイラ900を実行し(ステップS1609)、ステップS1601へ戻る。
OSが、処理終了を検出したと判断した場合(ステップS1601:処理終了)、処理終了が検出されたアプリケーションはコンパイラ900であるか否かを判断する(ステップS1610)。OSが、処理終了が検出されたアプリケーションはコンパイラ900であると判断した場合(ステップS1610:Yes)、変換管理テーブル600を更新し(ステップS1611)、すべてのアプリケーションの処理が終了したか否かを判断する(ステップS1612)。
OSが、すべてのアプリケーションの処理が終了していないと判断した場合(ステップS1612:No)、ステップS1601へ戻る。OSが、すべてのアプリケーションの処理が終了したと判断した場合(ステップS1612:Yes)、一連の処理を終了する。ステップS1610において、処理終了が検出されたアプリケーションはコンパイラ900でないと判断した場合(ステップS1610:No)、ステップS1612へ移行する。
(実施例2)
図17は、実施例2にかかる判断例を示す説明図である。実施例2では、PcをY×Pとし、PnをX×Pとする。すなわち、Xは、バイトコードでの実行時の単位時間当たりの消費電力の値に対するネイティブコードでの実行時の単位時間当たりの消費電力の値の比率である。Yは、バイトコードでの実行時の単位時間当たりの消費電力の値に対するコンパイラ900を実行時の単位時間当たりの消費電力の値の比率である。
図17は、実施例2にかかる判断例を示す説明図である。実施例2では、PcをY×Pとし、PnをX×Pとする。すなわち、Xは、バイトコードでの実行時の単位時間当たりの消費電力の値に対するネイティブコードでの実行時の単位時間当たりの消費電力の値の比率である。Yは、バイトコードでの実行時の単位時間当たりの消費電力の値に対するコンパイラ900を実行時の単位時間当たりの消費電力の値の比率である。
グラフ1700では、バイトコードからネイティブコードに変換しつつバイトコードで実行し、変換終了後にネイティブコードで実行する場合の消費電力を示している。グラフ1701では、バイトコードで実行する場合の消費電力を示している。図17については、下記式(4)のように表すことができる。
P×Tc+Y×P×Tc+X×P×Tn<P×T ・・・(4)
ここで、TcとTnについてはそれぞれ上述の式(1),(2)により算出される。そして、式(4)はPで共通化されると、下記式(5)の様になる。
(1+Y)×Tc+X×Tn<T ・・・(5)
コンパイルスケジューラ700は、式(5)が成り立てば、バイトコードからネイティブコードへ変換すると決定する。コンパイルスケジューラ700は、式(5)が成り立たなければ、バイトコードからネイティブコードへ変換しないと決定する。
実施例2では、実施例1と同様にアプリ#Aがダウンロードされた場合において、式(3)に代わって前述した式(4)または式(5)が成り立つか否かによって、アプリ#Aのバイトコード701をアプリ#Aのネイティブコード901へ変換するか否かを決定する。実施例2では、OS240やOS241の処理については実施例1で示した処理と同一であるため、コンパイルスケジューラ700の処理のみ詳細に説明する。また、XとYについてはあらかじめ消費電力テーブルに格納されていることとする。
図18は、実施例2で用いる消費電力テーブルの一例を示す説明図である。消費電力テーブル1800は、実行の項目1801と、クロック周波数の項目1802と、比率の項目1803と、を有している。実行の項目1801には、ネイティブコードでの実行と、バイトコードでの実行と、コンパイラの実行と、が登録されている。クロック周波数の項目1802には、実行の項目1801に登録された実行時にCPUへ供給するクロックの周波数が登録されている。
消費電力テーブル1800では、コンパイラ900の実行時にCPUへ与えるクロックの周波数(Cc)が300[MHz]であり、ネイティブコードでの実行時にCPUへ与えるクロックの周波数(Cn)は100[MHz]である。消費電力テーブル1800では、バイトコードでの実行時にCPUへ与えるクロックの周波数(Cb)は200[MHz]である。Cn<Cb<Ccである。
比率の項目1803には、バイトコードでの実行時の単位時間当たりの消費電力と実行の項目1801に登録された実行時の単位時間当たりの消費電力との比率が登録されている。Pc(Y×P)が100[mW]であり、Pn(X×P)が25[mW]であり、Pが50[mW]であるため、消費電力テーブル1800では、X(0<X<1)が1/2であり、Y(1<Y)が2である。消費電力テーブル1800は、RAM206、1次キャッシュ230および1次キャッシュ231、2次キャッシュ211などの記憶装置に記憶されていることとする。
TcとTnは実施例1と同様に下記とする。
・Tc=90[ms]
・Tn=410[ms]
・Tc=90[ms]
・Tn=410[ms]
コンパイルスケジューラ700が、消費電力テーブル1800からXとYとを取得し、式(5)を判断する。
・式(5)の左辺=(1+2)×90[ms]+(1/2)×410[ms]
=270+205
=475
・式(5)の右辺=500[ms]
・式(5)の左辺=(1+2)×90[ms]+(1/2)×410[ms]
=270+205
=475
・式(5)の右辺=500[ms]
式(5)の左辺が式(5)の右辺よりも小さいので、式(5)が成り立つため、コンパイルスケジューラ700が、アプリ#Aのバイトコード701をアプリ#Aのネイティブコード901に変換すると決定する。コンパイルスケジューラ700が、決定結果をOSへ通知する。OSが決定結果を受け付け後の処理については実施例1と同一であるため、詳細な説明を省略する。
つぎに、各OSによるプログラム実行処理手順やコンパイルスケジューラ700によるプログラム変換制御処理手順について説明する。実施例2にかかる各OSのプログラム実行処理手順については実施例1で説明した各OSのプログラム実行処理手順と同一であるため、詳細な説明は省略する。
(実施例2にかかるコンパイルスケジューラ700による変換制御処理手順)
図19は、実施例2にかかるコンパイルスケジューラ700による変換制御処理手順の一例を示すフローチャートである。コンパイルスケジューラ700が、対象アプリケーションの実行時間(T)と対象アプリケーションのバイトコードのコード量(Code)を取得し(ステップS1901)、Tc=k×Code+Cを算出し(ステップS1902)、Tn=T−Tcを算出する(ステップS1903)。コンパイルスケジューラ700が、XとYを取得し(ステップS1904)、(1+Y)Tc+X×Tn<Tであるか否かを判断する(ステップS1905)。
図19は、実施例2にかかるコンパイルスケジューラ700による変換制御処理手順の一例を示すフローチャートである。コンパイルスケジューラ700が、対象アプリケーションの実行時間(T)と対象アプリケーションのバイトコードのコード量(Code)を取得し(ステップS1901)、Tc=k×Code+Cを算出し(ステップS1902)、Tn=T−Tcを算出する(ステップS1903)。コンパイルスケジューラ700が、XとYを取得し(ステップS1904)、(1+Y)Tc+X×Tn<Tであるか否かを判断する(ステップS1905)。
コンパイルスケジューラ700が、(1+Y)Tc+X×Tn<Tであると判断した場合(ステップS1905:Yes)、ネイティブコードへ変換すると決定する(ステップS1906)。コンパイルスケジューラ700が、(1+Y)Tc+X×Tn<Tでないと判断した場合(ステップS1905:No)、ネイティブコードへ変換しないと決定する(ステップS1907)。コンパイルスケジューラ700が、ステップS1906、ステップS1907のつぎに、決定結果をOSへ通知し(ステップS1908)、一連の処理を終了する。
以上説明したように、プログラム実行方法によれば、対象アプリケーションのバイトコードをネイティブコードに変換して対象アプリケーションを実行するか否かを、各コードでの実行時の消費電力の値に基づいて決定する。これにより、消費電力を抑制することができ、ネイティブコードに変換して対象アプリケーションを実行する場合、各端末の性能に沿ったコードでアプリケーションを実行させることができる。
また、バイトコードでの実行時の消費電力の値が、ネイティブコードでの実行時の消費電力の値よりも小さいとき、対象アプリケーションのバイトコードをネイティブコードに変換せず、対象アプリケーションをバイトコードで実行する。これにより、消費電力を抑制することができる。
また、ネイティブコードでの実行時の消費電力の値を、対象アプリケーションの実行時間とバイトコードからネイティブコードへの変換時間と、CPUの性能とに基づいて算出する。これにより、各CPUの性能によって異なる単位時間当たりの消費電力の値によってネイティブコードでの実行時の消費電力の値が変化することが表され、各端末の性能に沿ったコードでアプリケーションを実行させることができる。
また、変換時間は、バイトコードのコード量に基づいて算出する。これにより、コード量が増えると、コンパイラによる変換時間が長くなるため、ネイティブコードでの実行時に消費電力の値が増加することを表すことができる。したがって、実行前に算出するネイティブコードでの実行時に消費電力の値の精度を向上させることができる。
また、変換時間は、CPUの特性に基づいて算出する。CPUの特性によってはコンパイラによる変換に時間がかかり変換時間が長くなる。すなわち、端末によって変換時間が変わることが表され、実行前に算出するネイティブコードでの実行時に消費電力の値の精度を向上させることができる。さらに、変換時間が端末によって変わるため、端末の性能によって変換するか否かが異なり、各端末の性能に沿ったコードでアプリケーションを実行させることができる。
また、バイトコードからネイティブコードへの変換時にCPUへ与えられるクロックの周波数を、バイトコードでの実行時にCPUへ与えられるクロックの周波数よりも高くする。変換とバイトコードでの実行とを同時に行うと消費電力が増大するが、変換時のクロック周波数が高くなることで、変換時間を短縮することができ、消費電力を削減することができる。
また、ネイティブコードでの実行時にCPUへ与えられるクロックの周波数を、バイトコードでの実行時にCPUへ与えられるクロックの周波数よりも低くする。ネイティブコードでの実行は、バイトコードでの実行よりも処理量が少ないため、ネイティブコードでの実行時にクロックの周波数が低くても、バイトコードでの実行時に要求された動作を満たすことができる。よって、ネイティブコードでの実行時にクロックの周波数を低くすることで、消費電力を抑制することができる。
また、コンパイルスケジューラが、バイトコードからネイティブコードに変換するか否かを判断することで、OSの実行に負荷がかかるのを防止することができる。
また、バイトコードからネイティブコードへの変換中に、アプリケーションをバイトコードで実行する。変換終了後にアプリケーションをネイティブコードで実行することにより、ダウンロードしてすぐにアプリケーションを実行させる場合に、ユーザの応答性を向上させることができる。
なお、プログラム実行方法は、あらかじめ用意されたプログラムをマルチコアプロセッサのうちのいずれかのCPUで実行することにより実現することができる。たとえば、実施例1,2では該プログラムはOS240やOS241やコンパイルスケジューラ700に含まれている。また、該プログラムは、フラッシュROM205などのマルチコアプロセッサのいずれかのCPUが読み取り可能な記録媒体に記録され、マルチコアプロセッサのいずれかのCPUによって記録媒体から読み出されることによって実行されてもよい。また、該プログラムは、インターネット等のネットワークを介して配布されてもよい。
上述した実施の形態1および2に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
第1のコードによって記述される第1プログラムの実行時の第1の消費電力を算出し、
前記第1プログラムと同じ機能を有するとともに第2のコードによって記述される第2プログラムの実行時の第2の消費電力を算出し、
前記第2の消費電力が前記第1の消費電力よりも小さいとき、前記第1プログラムを前記第2プログラムに変換して前記第2プログラムを実行すること
を特徴とするプログラム実行方法。
第1のコードによって記述される第1プログラムの実行時の第1の消費電力を算出し、
前記第1プログラムと同じ機能を有するとともに第2のコードによって記述される第2プログラムの実行時の第2の消費電力を算出し、
前記第2の消費電力が前記第1の消費電力よりも小さいとき、前記第1プログラムを前記第2プログラムに変換して前記第2プログラムを実行すること
を特徴とするプログラム実行方法。
(付記2)前記第2の消費電力が前記第1の消費電力よりも大きいとき、前記第1プログラムを実行すること
を特徴とする付記1に記載のプログラム実行方法。
を特徴とする付記1に記載のプログラム実行方法。
(付記3)前記第2の消費電力は、
前記第1プログラムの実行時間、前記第1プログラムを前記第2プログラムに変換するときの変換時間、および前記コンピュータに含まれるCPUの特性に基づいて算出されること
を特徴とする付記1または付記2に記載のプログラム実行方法。
前記第1プログラムの実行時間、前記第1プログラムを前記第2プログラムに変換するときの変換時間、および前記コンピュータに含まれるCPUの特性に基づいて算出されること
を特徴とする付記1または付記2に記載のプログラム実行方法。
(付記4)前記変換時間は、前記第1プログラムの第1のコード量に基づいて算出されること
を特徴とする付記3に記載のプログラム実行方法。
を特徴とする付記3に記載のプログラム実行方法。
(付記5)さらに、前記変換時間は、
前記コンピュータに含まれるCPUの特性に基づいて算出されること
を特徴とする付記4に記載のプログラム実行方法。
前記コンピュータに含まれるCPUの特性に基づいて算出されること
を特徴とする付記4に記載のプログラム実行方法。
(付記6)前記第1プログラムを前記第2プログラムに変換するときに設定される第2クロックの周波数を、前記第1プログラムを実行するときに設定される第1クロックの周波数よりも高く設定すること
を特徴とする付記1乃至付記5の何れか一に記載のプログラム実行方法。
を特徴とする付記1乃至付記5の何れか一に記載のプログラム実行方法。
(付記7)前記第2プログラムを実行するときに設定される第3クロックの周波数は、前記第1プログラムを実行するときに設定される第1クロックの周波数よりも低く設定されること
を特徴とする付記1乃至付記6の何れか一に記載のプログラム実行方法。
を特徴とする付記1乃至付記6の何れか一に記載のプログラム実行方法。
(付記8)コンパイルスケジューラを起動し、
前記コンパイルスケジューラが前記第1プログラムを前記第2プログラムに変換するか否かを判定すること
を特徴とする付記1乃至付記7の何れか一に記載のプログラム実行方法。
前記コンパイルスケジューラが前記第1プログラムを前記第2プログラムに変換するか否かを判定すること
を特徴とする付記1乃至付記7の何れか一に記載のプログラム実行方法。
(付記9)前記第1プログラムを前記第2プログラムに変換する間に前記第1プログラムを実行し、
前記変換終了後に前記第2プログラムを実行すること
を特徴とする付記1乃至付記8の何れか一に記載のプログラム実行方法。
前記変換終了後に前記第2プログラムを実行すること
を特徴とする付記1乃至付記8の何れか一に記載のプログラム実行方法。
700 コンパイルスケジューラ
701 アプリ#Aのバイトコード
900 コンパイラ
901 アプリ#Aのネイティブコード
#0,#1 CPU
701 アプリ#Aのバイトコード
900 コンパイラ
901 アプリ#Aのネイティブコード
#0,#1 CPU
Claims (8)
- コンピュータが、
第1のコードによって記述される第1プログラムの実行時の第1の消費電力を算出し、
前記第1プログラムと同じ機能を有するとともに第2のコードによって記述される第2プログラムの実行時の第2の消費電力を算出し、
前記第2の消費電力が前記第1の消費電力よりも小さいとき、前記第1プログラムを前記第2プログラムに変換して前記第2プログラムを実行すること
を特徴とするプログラム実行方法。 - 前記第2の消費電力が前記第1の消費電力よりも大きいとき、前記第1プログラムを実行すること
を特徴とする請求項1に記載のプログラム実行方法。 - 前記第2の消費電力は、
前記第1プログラムの実行時間、前記第1プログラムを前記第2プログラムに変換するときの変換時間、および前記コンピュータに含まれるCPUの特性に基づいて算出されること
を特徴とする請求項1または請求項2に記載のプログラム実行方法。 - 前記変換時間は、前記第1プログラムの第1のコード量に基づいて算出されること
を特徴とする請求項3に記載のプログラム実行方法。 - 前記第1プログラムを前記第2プログラムに変換するときに設定される第2クロックの周波数を、前記第1プログラムを実行するときに設定される第1クロックの周波数よりも高く設定すること
を特徴とする請求項1乃至請求項4の何れか一に記載のプログラム実行方法。 - 前記第2プログラムを実行するときに設定される第3クロックの周波数は、前記第1プログラムを実行するときに設定される第1クロックの周波数よりも低く設定されること
を特徴とする請求項1乃至請求項5の何れか一に記載のプログラム実行方法。 - コンパイルスケジューラを起動し、
前記コンパイルスケジューラが前記第1プログラムを前記第2プログラムに変換するか否かを判定すること
を特徴とする請求項1乃至請求項6の何れか一に記載のプログラム実行方法。 - 前記第1プログラムを前記第2プログラムに変換する間に前記第1プログラムを実行し、
前記変換終了後に前記第2プログラムを実行すること
を特徴とする請求項1乃至請求項7の何れか一に記載のプログラム実行方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/052064 WO2012105000A1 (ja) | 2011-02-01 | 2011-02-01 | プログラム実行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5505522B2 true JP5505522B2 (ja) | 2014-05-28 |
JPWO2012105000A1 JPWO2012105000A1 (ja) | 2014-07-03 |
Family
ID=46602242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012555619A Expired - Fee Related JP5505522B2 (ja) | 2011-02-01 | 2011-02-01 | プログラム実行方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9336052B2 (ja) |
JP (1) | JP5505522B2 (ja) |
WO (1) | WO2012105000A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160224325A1 (en) * | 2015-01-29 | 2016-08-04 | Mentor Graphics Corporation | Hiding compilation latency |
JP6631374B2 (ja) * | 2016-04-13 | 2020-01-15 | 富士通株式会社 | 情報処理装置、動作状況収集プログラム及び動作状況収集方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001195264A (ja) * | 2000-01-07 | 2001-07-19 | Toshiba Corp | コンパイル方法および計算機システム |
JP2004355277A (ja) * | 2003-05-28 | 2004-12-16 | Matsushita Electric Ind Co Ltd | プログラム実行制御装置、プログラム実行制御方法 |
US20050229149A1 (en) * | 2004-03-17 | 2005-10-13 | Munter Joel D | Power and/or energy optimized compile/execution |
JP2006126947A (ja) * | 2004-10-26 | 2006-05-18 | Hitachi Software Eng Co Ltd | 情報処理装置、情報処理方法、およびプログラム |
JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
JP2007141153A (ja) * | 2005-11-22 | 2007-06-07 | Hitachi Software Eng Co Ltd | インタプリタ |
JP2009151375A (ja) * | 2007-12-18 | 2009-07-09 | Toshiba Corp | ジョブスケジューリング方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11232147A (ja) * | 1998-02-16 | 1999-08-27 | Toshiba Corp | パワーエスティメーション装置、パワーエスティメーション方法、及びパワーエスティメーションプログラムを記録した機械読み取り可能な記録媒体 |
JP4231516B2 (ja) * | 2006-08-04 | 2009-03-04 | 株式会社日立製作所 | 実行コードの生成方法及びプログラム |
-
2011
- 2011-02-01 WO PCT/JP2011/052064 patent/WO2012105000A1/ja active Application Filing
- 2011-02-01 JP JP2012555619A patent/JP5505522B2/ja not_active Expired - Fee Related
-
2013
- 2013-08-01 US US13/956,710 patent/US9336052B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001195264A (ja) * | 2000-01-07 | 2001-07-19 | Toshiba Corp | コンパイル方法および計算機システム |
JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
JP2004355277A (ja) * | 2003-05-28 | 2004-12-16 | Matsushita Electric Ind Co Ltd | プログラム実行制御装置、プログラム実行制御方法 |
US20050229149A1 (en) * | 2004-03-17 | 2005-10-13 | Munter Joel D | Power and/or energy optimized compile/execution |
JP2006126947A (ja) * | 2004-10-26 | 2006-05-18 | Hitachi Software Eng Co Ltd | 情報処理装置、情報処理方法、およびプログラム |
JP2007141153A (ja) * | 2005-11-22 | 2007-06-07 | Hitachi Software Eng Co Ltd | インタプリタ |
JP2009151375A (ja) * | 2007-12-18 | 2009-07-09 | Toshiba Corp | ジョブスケジューリング方法 |
Also Published As
Publication number | Publication date |
---|---|
US9336052B2 (en) | 2016-05-10 |
US20130318375A1 (en) | 2013-11-28 |
WO2012105000A1 (ja) | 2012-08-09 |
JPWO2012105000A1 (ja) | 2014-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Barbalace et al. | Breaking the boundaries in heterogeneous-ISA datacenters | |
Newburn et al. | Offload compiler runtime for the Intel® Xeon Phi coprocessor | |
US9063783B2 (en) | Coordinating parallel execution of processes using agents | |
Saez et al. | PMCTrack: Delivering performance monitoring counter support to the OS scheduler | |
EP3014423B1 (en) | Binary translation for multi-processor and multi-core platforms | |
US20140181182A1 (en) | Method and system of displaying frame | |
KR20110094764A (ko) | 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법 | |
US20130311751A1 (en) | System and data loading method | |
US10613606B2 (en) | Wireless component state based power management | |
JPWO2011104823A1 (ja) | マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム | |
US20130298132A1 (en) | Multi-core processor system and scheduling method | |
US20130125131A1 (en) | Multi-core processor system, thread control method, and computer product | |
US20150194198A1 (en) | Multi-core processor system, memory controller control method, and computer product | |
JP5708450B2 (ja) | マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム | |
JP5505522B2 (ja) | プログラム実行方法 | |
US9588817B2 (en) | Scheduling method and scheduling system for assigning application to processor | |
US9690619B2 (en) | Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory | |
US20130007765A1 (en) | Software control device, software control method, and computer product | |
US9141429B2 (en) | Multicore processor system, computer product, and control method | |
Hsu et al. | A dynamic binary translation system in a client/server environment | |
US7945901B2 (en) | System and method for facilitating software profiling procedures | |
Alonso et al. | Energy-efficient execution of dense linear algebra algorithms on multi-core processors | |
US20130191839A1 (en) | Information processing apparatus, control method therefor, and computer-readable storage medium | |
WO2023225991A1 (en) | Dynamic establishment of polling periods for virtual machine switching operations | |
Zhu et al. | Revisiting swapping in mobile systems with SwapBench |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140303 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5505522 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |