JP2007334497A - 情報処理装置の省電力化方法、プログラム、およびプログラム実行システム - Google Patents
情報処理装置の省電力化方法、プログラム、およびプログラム実行システム Download PDFInfo
- Publication number
- JP2007334497A JP2007334497A JP2006163548A JP2006163548A JP2007334497A JP 2007334497 A JP2007334497 A JP 2007334497A JP 2006163548 A JP2006163548 A JP 2006163548A JP 2006163548 A JP2006163548 A JP 2006163548A JP 2007334497 A JP2007334497 A JP 2007334497A
- Authority
- JP
- Japan
- Prior art keywords
- program
- time
- profile information
- execution
- power saving
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 132
- 238000012545 processing Methods 0.000 claims abstract description 96
- 238000011084 recovery Methods 0.000 claims description 11
- 230000010365 information processing Effects 0.000 claims description 10
- 239000000284 extract Substances 0.000 abstract description 2
- 230000003247 decreasing effect Effects 0.000 abstract 1
- 238000004904 shortening Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- 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
- Devices For Executing Special Programs (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】特にマルチコア環境において、プロファイル情報の解析結果を利用して、プログラム実行速度を低下させることなく、当該スケジューリングの結果発生したアイドル期間のクロック周波数を下げることで消費電力を低減させる技術を提供する。
【解決手段】プログラム実行を担当するタスクで、中間コードもしくはネイティブコードを入力してプログラムを実行し、プログラムブロック毎の「実行時刻」から成る「プロファイル情報」を抽出する。次に、プログラムのコンパイルを担当するタスクで、中間コードと「プロファイル情報」を入力し、プロファイル情報解析を行ってコンパイル処理の「省電力スケジューリング情報」を出力し、前記「省電力スケジューリング情報」を用いてコンパイル処理を実施する。このコンパイルの結果生成されたネイティブコードをプログラム実行を担当するタスクで活用する。
【選択図】図1
【解決手段】プログラム実行を担当するタスクで、中間コードもしくはネイティブコードを入力してプログラムを実行し、プログラムブロック毎の「実行時刻」から成る「プロファイル情報」を抽出する。次に、プログラムのコンパイルを担当するタスクで、中間コードと「プロファイル情報」を入力し、プロファイル情報解析を行ってコンパイル処理の「省電力スケジューリング情報」を出力し、前記「省電力スケジューリング情報」を用いてコンパイル処理を実施する。このコンパイルの結果生成されたネイティブコードをプログラム実行を担当するタスクで活用する。
【選択図】図1
Description
本発明は、情報処理装置の省電力化技術に関し、特にマルチコアCPUを備えた情報処理装置の省電力方法、プログラム、およびプログラム実行システムに適用して有効な技術に関する。
中間コードの実行においてクロック周波数を下げることにより消費電力を削減する技術、およびプログラム設計情報から検出したアイドル時間のクロック周波数を下げて省電力化するプログラミング技術等は既存である。例えば特許文献1に記載の方法では、クロック周波数調整機能を搭載した環境においてタスク1の処理時間を見積もり、見積もり時間が大きい場合はクロック周波数を上げてタスク2の実行を停止し、見積もり時間が小さい場合はクロック周波数を低いままにしてタスク2を並列実行させる。これにより、指定された消費電力量の範囲でタスクの優先度を決定することが可能となる。
また、特許文献2に記載の方法では、クロック周波数を制御する命令を備えたハードウェアの実現方法が示されており、これにより、プログラミングの際、タスクスケジューリング、タイミング等の設計情報を利用して、アイドル期間を検出し、クロック周波数調整命令を用いてスローダウンさせ消費電力を削減することが可能となる。
また、非特許文献1では、クロック周波数調整機能を搭載した環境において、タスク1のデッドラインミス率を一定の範囲に制御しながら、消費電力の低減を実現している。
纏めると、手動プログラミングによる省電力制御に対応したハードウェアの実現方法、手動プログラミングにより省電力制御を実現する方法に関する技術は既存であるが、これらを自動化したシステムソフトウェアの実現方法は未だ発表されていない。
特開2003−345567号公報
特開2001−202155号公報
中村哲朗など:リアルタイム性を考慮したフィードバック制御による動的周波数制御方法、情報処理学会研究報告2006−SLDM−124、2006年3月
高速化や省電力化への期待からマルチコア環境が注目されている。一般にマルチコア環境では、シングルコア環境に比べて、CPUパワーの増大や入力プログラム自体に十分な並列性がない可能性があること等から、アイドル期間の総計が増大する傾向にある。従来、アイドル時間や消費電力を最小化するスケジューリング技術については、各々単独では様々な検討がなされてきた。しかし、高速化の目的でスケジューリングされた結果発生したアイドル時間を活用し、高速化の効果を損なうことなく省電力化も併せて実現していく技術については、十分な検討がなされていない。
そこで、本発明は、上記事情に鑑みてなされたものであり、その目的は、特にマルチコア環境において、プロファイル情報の解析結果を利用して、プログラム実行速度を低下させることなく、当該スケジューリングの結果発生したアイドル期間のクロック周波数を下げることで消費電力を低減させることにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
本発明は、上記課題を解決すべく、プログラム実行を担当するタスクで、中間コードもしくはネイティブコードを入力してプログラムを実行し、プログラムブロック毎の「実行時刻」から成る「プロファイル情報」を抽出する。次に、プログラムのコンパイルを担当するタスクで、中間コードと「プロファイル情報」を入力し、プロファイル情報解析を行ってコンパイル処理の「省電力スケジューリング情報」を出力し、前記「省電力スケジューリング情報」を用いてコンパイル処理を実施する。このコンパイルの結果生成されたネイティブコードをプログラム実行を担当するタスクで活用する。なお、前記プロファイル情報解析処理では、「プロファイル情報」を入力して、各プログラムブロックの「実行時期」を検出し、当該プログラムブロックの「コンパイル時間」を見積り、「実行時期」と「コンパイル時間」から「アイドル時間」を見積り、「アイドル時間」を利用して「実行時期」に間に合う程度の「クロック周波数」を決定する。
また、上記課題を解決すべく、コンパイルを実行するタスクで、「省電力スケジューリング情報」が存在しない場合に、「プロファイル情報」から実行回数の増加速度が高いプログラムブロックを検出し、低い「クロック周波数」でコンパイルする。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
本発明によれば、特にマルチコア環境において、「プロファイル情報」を入力して、各プログラムブロックの「実行時期」を検出し、当該プログラムブロックの「コンパイル時間」を見積り、「実行時期」と「コンパイル時間」から「アイドル時間」を見積り、「アイドル時間」を利用して「実行時期」に間に合う程度の「クロック周波数」を決定することにより、プログラム実行速度を下げることなく消費電力を低減することができる。
また、「省電力スケジューリング情報」が存在しない場合に、「プロファイル情報」から実行回数の増加速度が高いプログラムブロックを検出し、実際にコンパイル対象と判定される閾値に達する前から低い「クロック周波数」でゆっくりコンパイルすることにより、プログラム実行速度を下げることなく消費電力を低減することができる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、これにより本発明が限定されるものではない。
本発明の実施の形態では、プログラム実行システムについて述べる。
図1は、本実施の形態のプログラム実行システムの概要を示すブロック図である。本発明は、計算機上で実施され、プロファイル情報を解析してコンパイル結果が必要となるタイミングとコンパイル時間を見積もり、これらを利用して算出したアイドル時間を使って間に合う程度のスピードでコンパイル処理を実施するようクロック周波数を調整し、プログラムの実行速度を落とすことなく、省電力を実現する方法である。
図1において、仮想マシン2は、高級言語で記述されたソースプログラムを変換した中間コード1を入力し実行する。仮想マシン2は、中間コード1の実行を担当するタスクとコンパイルを担当するタスクをマルチコア環境において任意のコア(CPU)に割当てるタスク割当部3と、中間コード1の実行を制御するプログラム実行制御部4と、中間コード1のコンパイルを制御するコンパイル制御部6と、「プログラムブロック毎の実行タイミングログ」から成るプロファイル情報21と、プログラム実行経過時間の区間を示すエリア毎の「クロック周波数」と「エリア時間」と「プログラムブロック数」、およびプログラムブロック毎の「プログラムブロック名称」と「実行回数」と「実行時間」と「コンパイル済フラグ」から成る省電力スケジューリング情報22と、中間コード1のコンパイル結果であるネイティブコード23から構成される。
また、プログラム実行制御部4は、プロファイル情報の検出を行うプロファイル情報検出部5を含み、コンパイル制御部6は、中間コードを入力しプロファイル情報解析を行って省電力スケジューリング情報22を出力するプロファイル情報解析部7と、中間コード1とプロファイル情報21と省電力スケジューリング情報22を入力しコンパイル処理を行ってネイティブコード23を出力するコンパイル部8から構成される。
さらに、プロファイル情報解析部7は、プロファイル情報21を入力し実行時期の解析を行い省電力スケジューリング情報22を出力する実行時期決定部71と、中間コード1と省電力スケジューリング情報22を入力しコンパイル時間の解析を行い省電力スケジューリング情報22を出力するコンパイル時間見積部72と、中間コード1と省電力スケジューリング情報22を入力しアイドル時間の解析を行い省電力スケジューリング情報22を出力するアイドル時間見積部73と、中間コード1と省電力スケジューリング情報22を入力しクロック周波数の解析を行い省電力スケジューリング情報22を出力するクロック周波数決定部74から構成される。
また、コンパイル部8は、中間コード1とプロファイル情報21と省電力スケジューリング情報22を入力し予定よりコンパイル処理が遅れている場合にリカバリを行いネイティブコード23を出力するリカバリ部9と、中間コード1とプロファイル情報21と省電力スケジューリング情報22を入力し投機的にコンパイルを行いネイティブコード23を出力する投機コンパイル部10から構成される。
図2〜図15により、本発明の情報処理装置の省電力化方法の第一実施例を説明する。
図2は、図1におけるタスク割当部3の動作フロチャートである。図2を用いて、仮想マシン2の起動後に実施されるタスク割当処理の流れを説明する。
まず、処理ステップ31で中間コード1を入力する。次に、処理ステップ32でコア番号を判定し、“1”の場合、処理ステップ33へ進み中間コード1の実行処理を実施し、プロファイル情報を取得する。処理ステップ32でコア番号が“1”以外の場合、処理ステップ34へ進む。次に、処理ステップ34でコア番号を判定し、“2”の場合で、かつプロファイル情報ありの場合、処理ステップ35へ進む。処理ステップ34でコア番号が“2”以外、もしくはプロファイル情報なしの場合、処理ステップ34へ戻り、判定を繰り返す。処理ステップ35では、プロファイル情報解析を行い、省電力スケジューリング情報を生成する。
次に、処理ステップ36でコア番号を判定し、“1”の場合、処理ステップ38へ進む。処理ステップ38では、中間コード1を実行し、その後本タスク割当処理を終了する。処理ステップ36でコア番号が“1”以外の場合、処理ステップ37へ進む。次に、処理ステップ37でコア番号を判定し、“2”の場合、処理ステップ39へ進み、コア番号が“2”以外の場合、本タスク割当処理を終了する。処理ステップ39では、中間コード1の事前コンパイル処理を実施し、その後本タスク割当処理を終了する。
図3は、図1におけるプロファイル情報解析部7の動作フロチャートである。図3を用いて、プロファイル情報解析処理の流れを説明する。
まず、処理ステップ60で中間コード1とプロファイル情報21を入力する。次に、処理ステップ61でコンパイル結果が必要となるタイミングの解析を実施する。具体的には、まず、中間コード1の実行区間を10秒毎に分割して本単位をエリアと定義し、エリア毎に実行頻度が高いプログラムブロックを検出する。次に、実行回数閾値、実行回数順位からコンパイル対象プログラムを決定する。次に、当該エリアの開始時点をコンパイル結果が必要になるタイミングと決定する。次に、処理ステップ62でコンパイル時間の見積もりを実施する。具体的には、エリア毎にコンパイル対象プログラムブロックのコンパイル時間の合計を算出する(中間コード数から見積り)。
次に、処理ステップ63でアイドル時間の見積もりを実施する。具体的には、まず、コンパイル対象プログラムブロックの中間コードとネイティブコードの実行時間の差分を求め、元の10秒から差し引くことでエリア時間を算出する。次に、「エリア時間−コンパイル時間」を当該エリアのアイドル時間と決定する。次に、処理ステップ64でクロック周波数の決定を行う。具体的には、まず、コンパイル時間とアイドル時間の比を算出する。次に、上記比、クロック周波数決定表からクロック周波数を決定する。最後に、処理ステップ65で、上記解析結果を省電力スケジューリング情報22として出力し、本プロファイル情報解析処理を終了する。
図4は、図1における実行時期決定部71の動作フロチャートである。図4を用いて、実行時期決定処理の流れを説明する。
まず、処理ステップ7101でプロファイル情報21としてログテーブルを入力する。図8に例を示す。ログテーブルは、項目“プログラムブロック名称”2101、“起動時刻(msec)”2102から構成される。ログテーブルには、中間コード1の実行開始から終了までの、実行されたプログラムブロック名称と起動時刻の集合が記録されている。なお、プロファイル情報21は、図1におけるプロファイル情報検出部5で生成される。次に、処理ステップ7102で最終ログテーブルからプログラムの実行時間を検出する。
次に、処理ステップ7103でプログラム実行時間を10秒間隔に分割して各々をエリアと定義し、全エリアに対してエリアテーブルを生成する。エリアテーブルは、省電力スケジューリング情報を構成する1テーブルとなる。図10に例を示す。エリアテーブルは、項目“エリアID”2201、“クロック周波数”2202、“エリア時間(msec)”2203、“所属プログラムブロック数”2204、“プログラムブロックテーブルID”2205から構成される。例えば、中間コード1の実行開始から20100msec経過した時点までのログテーブルとして2103から2121が登録されていた場合、2211、2212に示すエリアテーブルが生成される。ただし、初期値は、項目“エリアID”は“通し番号”、“クロック周波数”は“NULL”、“エリア時間(msec)”は“1000”、“所属プログラムブロック数”は“NULL”、“プログラムブロックテーブルID”は“NULL”が設定される。
次に、処理ステップ7104でエリアテーブルの有無を判定し、2211が存在するため、処理ステップ7105へ進む。存在しない場合、本実行時期決定処理を終了する。次に、処理ステップ7105で当該エリアで実行されるログテーブルの有無を判定し、最初の10秒で実行されたログテーブル2103が存在するため、処理ステップ7106へ進む。存在しない場合、処理ステップ7111へ進む。次に、処理ステップ7106で当該ログテーブル2103のプログラムブロック名称“method4”を検出する。
次に、処理ステップ7107で当該プログラムブロック名称と一致するプログラムブロックテーブルの有無を判定する。図12に例を示す。プログラムブロックテーブルは、項目“プログラムブロックID”2221、“プログラムブロック名称”2222、“実行回数”2223、“実行時間”2224、“コンパイル済フラグ”2225、“NEXTプログラムブロックテーブルID”2226から構成される。プログラムブロックテーブルは、省電力スケジューリング情報を構成する1テーブルとなる。処理ステップ7107では、プログラムブロックテーブルは存在しないので、処理ステップ7108へ進む。
処理ステップ7108では、プログラムブロックテーブル2231を生成し、初期値として、項目“プログラムブロックID”に“1”、“プログラムブロック名称”に“method4”、“実行回数”に“0”、“実行時間”に“0”、“コンパイル済フラグ”に“FALSE”、“NEXTプログラムブロックテーブルID”に“NULL”が設定される。次に、当該エリアテーブル2211の項目“プログラムブロックID”2205に“1”を設定し、テーブル間の接続を行う。なお、処理ステップ7107で当該プログラムブロック名称と一致するプログラムブロックテーブルが存在しない場合、処理ステップ7109へ進む。
次に、処理ステップ7109で、当該プログラムブロックテーブル2231の項目“実行回数”をインクリメントし“1”を設定する。また、項目“実行時間”に当該プログラムブロックの実行時間を加算して“444”を設定する。次に、処理ステップ7110で他ログテーブルの有無を判定し、ログテーブル2104が存在するため、処理ステップ7106へ戻り、上記処理を繰り返す。存在しない場合、処理ステップ7111へ進む。当該エリアテーブルに所属するログテーブルに関する処理が完了した時点でプログラムブロックテーブル2231、2232、2233、2234が生成される。次に、処理ステップ7111で、当該エリアテーブルに所属するプログラムブロックテーブルのうち、実行回数が閾値未満のプログラムブロックテーブルを削除する。ここでは、閾値を2未満と仮定すると、図12のプログラムブロックテーブル2234が削除され、図13の構成(プログラムブロックテーブル2235、2236、2237)となる。
次に、処理ステップ7112で、当該エリアテーブルに所属するプログラムブロックテーブルを実行回数の昇順でソートする。その結果、図14に示すようなプログラムブロックテーブル2238、2239、2240が生成される。次に、処理ステップ7113で当該エリアテーブル所属プログラムブロック数を判定し、許容プログラムブロック数以上の場合、処理ステップ7114へ進む。許容プログラムブロック数未満の場合、処理ステップ7115へ進む。ここでは、許容プログラムブロック数を2と仮定し、処理ステップ7114へ進む。
処理ステップ7114では、実行回数昇順で許容プログラムブロック数2未満のプログラムブロックテーブル2240を削除し、図15に示すような構成(プログラムブロックテーブル2241、2242)となる。次に、処理ステップ7115で所属プログラムブロック数2を図10の当該エリアテーブル2211の項目“所属プログラムブロック数”へ登録する。また、項目“プログラムブロックテーブルID”を更新し、“2”を登録する。次に、処理ステップ7116で他エリアテーブルの有無を判定し、エリアテーブル2212が存在するため、処理ステップ7105へ戻り、上記処理を繰り返す。他にエリアテーブルが存在しない場合、本実行時期決定処理を終了する。
図5は、図1におけるコンパイル時間見積部72、アイドル時間見積部73、クロック周波数決定部74の動作フロチャートである。図5を用いて、コンパイル時間見積処理、アイドル時間見積処理、クロック周波数決定処理の流れを説明する。
まず、処理ステップ7201で中間コード1を入力する。次に処理ステップ7202でエリアテーブル、プログラムブロックテーブルから構成される省電力スケジューリング情報22を入力する。次に、処理ステップ7203でエリアテーブルの有無を判定する。本例ではエリアテーブル2211が存在するため、処理ステップ7204へ進む。なお、処理ステップ7203でエリアテーブルが存在しない場合、本コンパイル時間見積処理、アイドル時間見積処理、クロック周波数決定処理を終了する。次に、処理ステップ7204でエリアコンパイル時間に0を設定し、エリア短縮時間に0を設定する。
次に、処理ステップ7205で当該エリアテーブルに所属するプログラムブロックテーブルの有無を判定する。本例では、プログラムブロックテーブル2241が存在するため、処理ステップ7206へ進む。なお、処理ステップ7205でプログラムブロックテーブルが存在しない場合、処理ステップ7209へ進む。次に、処理ステップ7206では、当該プログラムブロックの中間コード数を検出し、当該プログラムブロックコンパイル時間を算出する(中間コード数×1msec)。次に、エリアコンパイル時間に、当該プログラムブロックコンパイル時間を加算する。
次に、処理ステップ7207で、当該エリアテーブルから当該プログラムブロックの実行時間を検出し、当該プログラムブロック短縮時間を算出する(当該プログラムブロック実行時間÷10×9)。次に、エリア短縮時間に当該プログラムブロック短縮時間を加算する。本例では最終的に、プログラムブロックテーブル2241の実行時間“4867”+プログラムブロックテーブル2242の実行時間“2847”÷10×9=6942がエリア短縮時間として設定される。次に、処理ステップ7208で他プログラムブロックテーブルの有無を判定する。本例の場合、プログラムブロックテーブル2242が存在するため、処理ステップ7206へ戻り、上記処理を繰り返す。処理ステップ7208で他プログラムブロックテーブルが存在しない場合、処理ステップ7209へ進む。
次に、処理ステップ7209でエリア時間を算出する(10sec−エリア短縮時間)。本例では、10000−6942=3058が設定される。次に、アイドル時間を算出する(エリア時間−エリアコンパイル時間)。例えば、エリアコンパイル時間が558であったと仮定すると、アイドル時間は、3058−558=2500となる。次に、処理ステップ7210でクロック周波数決定ポイントを算出する(エリアコンパイル時間÷アイドル時間)。本例では、クロック周波数決定ポイントは2000÷2500=0.8となる。
次に、処理ステップ7211でクロック周波数決定ポイント、クロック周波数決定表から当該エリアのクロック周波数を決定する。本例では、クロック周波数ポイントが0.8であるため、クロック周波数は80となる。図9にクロック周波数決定表の例を示す。項目“クロック周波数決定ポイント範囲”211、“クロック周波数(MHz)”212から構成され、本例では213、214、215、216に示すような4つのクロック周波数が選択可能となる。次に、処理ステップ7212で図11に示すように当該エリアテーブル2213へ、クロック周波数、エリア時間を登録する。
次に、処理ステップ7213で他エリアテーブルの有無を判定し、本例では他エリアテーブル2212が存在するため、処理ステップ7204へ戻り、上記処理を繰り返す。処理ステップ7213で、他エリアテーブルが存在しない場合、本コンパイル時間見積処理、アイドル時間見積処理、クロック周波数決定処理を終了する。
図6は、図1におけるコンパイル部8、リカバリ部9の動作フロチャートである。図6を用いて、コンパイル処理、リカバリ処理の流れを説明する。
まず、処理ステップ801で中間コード1を入力する。次に、処理ステップ802で省電力スケジューリング情報22を入力する。次に、処理ステップ803で次エリアのエリアテーブルの有無を判定する。本例では、次エリアのエリアテーブル2214が存在するため、処理ステップ804へ進む。次に、処理ステップ804でリカバリフラグに“FALSE”を設定する。次に、処理ステップ805で当該エリアテーブル2213のクロック周波数、エリア時間を検出する。次に、処理ステップ806で当該エリアに所属するプログラムブロックテーブルの有無を判定し、存在する場合、処理ステップ807へ進む。なお、処理ステップ806でプログラムブロックテーブルが存在しない場合、処理ステップ816へ進む。
次に、処理ステップ807では、当該エリアの処理がエリア時間の半分以上経過、かつリカバリフラグがFALSEであるいか否かを判定し、条件を満たしている場合、処理ステップ808へ進む。条件を満たさない場合、処理ステップ813へ進む。次に、処理ステップ808では、リカバリフラグにTRUEを設定する。次に、処理ステップ809で当該エリアテーブルのプログラムブロック数を検出する。次に、処理ステップ810で当該エリアテーブルに所属するプログラムブロックテーブルのうち、コンパイル済フラグがTRUEのテーブル数をカウントする。次に、処理ステップ811でコンパイル済プログラムブロック数がプログラムブロック数の半分以下であるか否かを判定し、半分以下の場合、処理ステップ812へ進む。半分以上の場合、処理ステップ813へ進む。
次に、処理ステップ812で当該クロック周波数に最大値(100)を設定する。次に、処理ステップ813で当該プログラムブロックの中間コードを検出し、当該クロック周波数でコンパイルする。次に、処理ステップ814で当該プログラムブロックテーブルのコンパイル済フラグにTRUEに設定する。次に、処理ステップ815で他プログラムブロックテーブルの有無を判定し、存在する場合、処理ステップ807へ戻り、上記処理を繰り返す。存在しない場合、処理ステップ816へ進む。処理ステップ816では、次エリアテーブルの有無を判定し、存在する場合、処理ステップ804へ戻り、上記処理を繰り返す。存在しない場合、本コンパイル処理、リカバリ処理を終了する。
以上で、本発明の情報処理装置の省電力化方法の第一実施例の説明を終了する。
この第一実施例によれば、特にマルチコア環境において、各プログラムブロックの「実行時期」を検出し、当該プログラムブロックの「コンパイル時間」を見積り、「実行時期」と「コンパイル時間」から「アイドル時間」を見積り、「アイドル時間」を利用して「実行時期」に間に合う程度の「クロック周波数」を決定することにより、プログラム実行速度を下げることなく消費電力を低減することができる。
次に、第二実施例について説明する。第一実施例中の図6で説明したコンパイル処理、リカバリ処理において、処理ステップ803で次エリアのエリアテーブルが存在しない場合、投機コンパイル処理を行う点が異なる。詳細を図7を用いて説明する。
図7は、図1における投機コンパイル部10の動作フロチャートである。図7を用いて投機コンパイル処理の流れを説明する。
図6の処理ステップ803で次エリアのエリアテーブルが存在しない場合、図7に示す処理ステップ101へ進む。処理ステップ101では、プロファイル情報(ログテーブル)21を入力する。次に、処理ステップ102で、実行回数の増加ペースが著しく速いプログラムブロックが存在するか否かを判定し、存在する場合、処理ステップ103へ進む。存在しない場合、本投機コンパイル処理を終了する。次に、処理ステップ103で、当該プログラムブロックをクロック周波数80(通常100)でコンパイルする。
この第二実施例によれば、「省電力スケジューリング情報」が存在しない場合に、「プロファイル情報」から実行回数の増加速度が高いプログラムブロックを検出し、実際にコンパイル対象と判定される閾値に達する前から低い「クロック周波数」でゆっくりコンパイルすることにより、プログラム実行速度を下げることなく消費電力を低減することができる。
最後に、本実施の形態のプログラム実行システムを実現するハードウェア構成を説明する。図16は、図1におけるプログラム実行システムを実現するプログラム実行処理装置の概要を示すブロック図である。
図16において、プログラム実行処理装置は、プログラム実行用のCPU1(1001)、プログラムブロックの事前コンパイルを行うCPU2(1002)、主記憶装置1003、二次記憶装置1004、これらを結合する結合装置1005から構成される。二次記憶装置1004には中間コード1が格納され、また主記憶装置1003で仮想マシン2が構築される。このようなマルチコア環境において、プロファイル情報の解析結果を利用して、アイドル期間を検出してクロック周波数を調整することにより、プログラム実行速度を低下させることなく、当該スケジューリングの結果発生したアイドル期間のクロック周波数を下げることで、消費電力を低減させることができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
本発明は、情報処理装置の省電力化技術に関し、特にマルチコアCPUを備えた情報処理装置の省電力方法、プログラム、およびプログラム実行システムに利用可能である。
1…中間コード、2…仮想マシン、3…タスク割当部、4…プログラム実行制御部、5…プロファイル情報検出部、6…コンパイル制御部、7…プロファイル情報解析部、8…コンパイル部、9…リカバリ部、10…投機コンパイル部、21…プロファイル情報、22…省電力スケジューリング情報、23…ネイティブコード、71…実行時期決定部、72…コンパイル時間見積部、73…アイドル時間見積部、74…クロック周波数決定部、1001…CPU1、1002…CPU2、1003…主記憶装置、1004…二次記憶装置、1005…結合装置。
Claims (5)
- ソースプログラムから変換された中間コードを入力し、プログラム実行を担当するタスクとプログラムの事前コンパイルを担当するタスクを割当てるステップと、
中間コードもしくはネイティブコードを入力してプログラムを実行し、プログラムブロック毎の「実行時刻」から成る「プロファイル情報」を抽出するプログラム実行制御ステップと、
中間コードと「プロファイル情報」を入力し、プロファイル情報解析を行ってコンパイル処理の「省電力スケジューリング情報」を出力し、前記「省電力スケジューリング情報」を用いてコンパイル処理を実施するコンパイル制御ステップとを有し、
前記コンパイル制御ステップ中のプロファイル情報解析を行うステップは、
「プロファイル情報」を入力して、各プログラムブロックの「実行時期」を検出するステップと、
当該プログラムブロックの「コンパイル時間」を見積るステップと、
「実行時期」と「コンパイル時間」から「アイドル時間」を見積るステップと、
「アイドル時間」を利用して「実行時期」に間に合う程度の「クロック周波数」を決定するステップとを含むことを特徴とする情報処理装置の省電力化方法。 - 請求項1記載の情報処理装置の省電力化方法において、
前記コンパイル制御ステップ中のコンパイルを実施するステップは、コンパイル処理の進捗を管理し、「プロファイル情報解析」の結果得られた「コンパイルに利用できる時間」の半分まで経過した時点で、コンパイル結果が半分出力されていない場合に「クロック周波数」を上げるリカバリステップを有することを特徴とする情報処理装置の省電力化方法。 - 請求項1記載の情報処理装置の省電力化方法において、
前記コンパイル制御ステップは、「省電力スケジューリング情報」が存在しない場合に、「プロファイル情報」から実行回数の増加速度が高いプログラムブロックを検出し、低い「クロック周波数」でコンパイルする投機コンパイルステップを含むことを特徴とする情報処理装置の省電力化方法。 - ソースプログラムから変換された中間コードを入力し、プログラム実行を担当するタスクとプログラムの事前コンパイルを担当するタスクを割当てるステップと、
中間コードもしくはネイティブコードを入力してプログラムを実行し、プログラムブロック毎の「実行時刻」から成る「プロファイル情報」を抽出するプログラム実行制御ステップと、
中間コードと「プロファイル情報」を入力し、プロファイル情報解析を行ってコンパイル処理の「省電力スケジューリング情報」を出力し、前記「省電力スケジューリング情報」を用いてコンパイル処理を実施するコンパイル制御ステップとを計算機に実行させ、
前記コンパイル制御ステップ中のプロファイル情報解析を行うステップは、
「プロファイル情報」を入力して、各プログラムブロックの「実行時期」を検出するステップと、
当該プログラムブロックの「コンパイル時間」を見積るステップと、
「実行時期」と「コンパイル時間」から「アイドル時間」を見積るステップと、
「アイドル時間」を利用して「実行時期」に間に合う程度の「クロック周波数」を決定するステップとを含むことを特徴とするプログラム。 - ソースプログラムから変換された中間コードを入力し、プログラム実行を担当するタスクとプログラムの事前コンパイルを担当するタスクを割当てる手段と、
中間コードもしくはネイティブコードを入力してプログラムを実行し、プログラムブロック毎の「実行時刻」から成る「プロファイル情報」を抽出するプログラム実行制御手段と、
中間コードと「プロファイル情報」を入力し、プロファイル情報解析を行ってコンパイル処理の「省電力スケジューリング情報」を出力し、前記「省電力スケジューリング情報」を用いてコンパイル処理を実施するコンパイル制御手段とを有し、
前記コンパイル制御手段中のプロファイル情報解析を行う手段は、
「プロファイル情報」を入力して、各プログラムブロックの「実行時期」を検出する手段と、
当該プログラムブロックの「コンパイル時間」を見積る手段と、
「実行時期」と「コンパイル時間」から「アイドル時間」を見積る手段と、
「アイドル時間」を利用して「実行時期」に間に合う程度の「クロック周波数」を決定する手段とを含むことを特徴とするプログラム実行システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006163548A JP2007334497A (ja) | 2006-06-13 | 2006-06-13 | 情報処理装置の省電力化方法、プログラム、およびプログラム実行システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006163548A JP2007334497A (ja) | 2006-06-13 | 2006-06-13 | 情報処理装置の省電力化方法、プログラム、およびプログラム実行システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007334497A true JP2007334497A (ja) | 2007-12-27 |
Family
ID=38933940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006163548A Pending JP2007334497A (ja) | 2006-06-13 | 2006-06-13 | 情報処理装置の省電力化方法、プログラム、およびプログラム実行システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007334497A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012120654A1 (ja) * | 2011-03-08 | 2012-09-13 | 富士通株式会社 | タスクスケジューリング方法およびマルチコアシステム |
JP2013131081A (ja) * | 2011-12-21 | 2013-07-04 | Fujitsu Ltd | 情報処理装置の制御プログラム、制御方法及び情報処理装置 |
KR101416822B1 (ko) | 2012-12-28 | 2014-07-09 | 경상대학교산학협력단 | 변동하는 계산량을 갖는 복수개의 주기적 실시간 작업을 위한 멀티 코어 프로세서의 누수 전력 소모를 고려한 확률적 최소 전력 스케줄링 방법 |
US9286107B2 (en) | 2013-08-30 | 2016-03-15 | Fujitsu Limited | Information processing system for scheduling jobs, job management apparatus for scheduling jobs, program for scheduling jobs, and method for scheduling jobs |
JP2019040317A (ja) * | 2017-08-23 | 2019-03-14 | 富士通株式会社 | 情報処理装置、コンパイル方法及びコンパイルプログラム |
US10496149B2 (en) | 2015-08-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Method of operating CPU and method of operating system having the CPU |
-
2006
- 2006-06-13 JP JP2006163548A patent/JP2007334497A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012120654A1 (ja) * | 2011-03-08 | 2012-09-13 | 富士通株式会社 | タスクスケジューリング方法およびマルチコアシステム |
JPWO2012120654A1 (ja) * | 2011-03-08 | 2014-07-07 | 富士通株式会社 | タスクスケジューリング方法およびマルチコアシステム |
JP2013131081A (ja) * | 2011-12-21 | 2013-07-04 | Fujitsu Ltd | 情報処理装置の制御プログラム、制御方法及び情報処理装置 |
KR101416822B1 (ko) | 2012-12-28 | 2014-07-09 | 경상대학교산학협력단 | 변동하는 계산량을 갖는 복수개의 주기적 실시간 작업을 위한 멀티 코어 프로세서의 누수 전력 소모를 고려한 확률적 최소 전력 스케줄링 방법 |
US9286107B2 (en) | 2013-08-30 | 2016-03-15 | Fujitsu Limited | Information processing system for scheduling jobs, job management apparatus for scheduling jobs, program for scheduling jobs, and method for scheduling jobs |
US10496149B2 (en) | 2015-08-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Method of operating CPU and method of operating system having the CPU |
JP2019040317A (ja) * | 2017-08-23 | 2019-03-14 | 富士通株式会社 | 情報処理装置、コンパイル方法及びコンパイルプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9417935B2 (en) | Many-core process scheduling to maximize cache usage | |
US20070074217A1 (en) | Scheduling optimizations for user-level threads | |
US20120324454A1 (en) | Control Flow Graph Driven Operating System | |
Tian et al. | Speculative parallelization using state separation and multiple value prediction | |
JP2007334497A (ja) | 情報処理装置の省電力化方法、プログラム、およびプログラム実行システム | |
KR102402584B1 (ko) | 사용자 어플리케이션의 특성에 따른 연산 디바이스 동적 제어 기법 | |
US6978285B2 (en) | Methods and apparatus for concurrent enumeration of an object reference root set | |
Streit et al. | Sambamba: A runtime system for online adaptive parallelization | |
Rauber et al. | Modeling and analyzing the energy consumption of fork‐join‐based task parallel programs | |
Whaley et al. | Heuristics for profile-driven method-level speculative parallelization | |
Gottschlag et al. | Mechanism to mitigate avx-induced frequency reduction | |
Gottschlag et al. | AVX overhead profiling: how much does your fast code slow you down? | |
Fonseca et al. | Controlling the granularity of automatic parallel programs | |
Jacobs et al. | A framework for the derivation of WCET analyses for multi-core processors | |
JP2007334643A (ja) | プログラム実行方法、プログラム、およびプログラム実行システム | |
JP2009009253A (ja) | プログラム実行方法、プログラム、およびプログラム実行システム | |
Campanoni et al. | Dynamic look ahead compilation: a technique to hide jit compilation latencies in multicore environment | |
KR101349561B1 (ko) | 임계성에 기초한 파티션 스케쥴링 장치 및 방법 | |
Huang et al. | Exploring sub-block value reuse for superscalar processors | |
GB2611964A (en) | Managing asynchronous operations in cloud computing environments | |
Fonseca et al. | Understanding the impact of task granularity in the energy consumption of parallel programs | |
Kulkarni et al. | JIT compilation policy on single-core and multi-core machines | |
Yue et al. | Loop-level process control: an effective processor allocation policy for multiprogrammed shared-memory multiprocessors | |
JP2007141153A (ja) | インタプリタ | |
JP6776914B2 (ja) | 並列化方法、並列化ツール |