JP2011197803A - プログラム実行制御方法 - Google Patents
プログラム実行制御方法 Download PDFInfo
- Publication number
- JP2011197803A JP2011197803A JP2010061384A JP2010061384A JP2011197803A JP 2011197803 A JP2011197803 A JP 2011197803A JP 2010061384 A JP2010061384 A JP 2010061384A JP 2010061384 A JP2010061384 A JP 2010061384A JP 2011197803 A JP2011197803 A JP 2011197803A
- Authority
- JP
- Japan
- Prior art keywords
- task
- processor
- executed
- general
- purpose processor
- 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
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
- Power Sources (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】ヘテロジーニアスプロセッサ方式を用いた情報処理装置において、省電力制御を行いつつパフォーマンスを向上させる。
【解決手段】ヘテロジーニアスプロセッサ方式による情報処理装置で実行されるプログラムの実行制御方法であって、コンパイラが、初期タスクスケジューリングの結果に基づき、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であるか否か判断する工程と、振り分けることが可能である場合に、前記コンパイラが、前記タスクを分割する工程と、前記情報処理装置が、前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数を変更して実行する工程とを備える。
【選択図】図2
【解決手段】ヘテロジーニアスプロセッサ方式による情報処理装置で実行されるプログラムの実行制御方法であって、コンパイラが、初期タスクスケジューリングの結果に基づき、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であるか否か判断する工程と、振り分けることが可能である場合に、前記コンパイラが、前記タスクを分割する工程と、前記情報処理装置が、前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数を変更して実行する工程とを備える。
【選択図】図2
Description
本発明は、マルチプロセッサ方式を用いた情報処理装置の制御技術に関する。
これまでマイクロプロセッサは動作周波数の向上により性能向上が進んできたが、現状ではその方法での性能向上は望めない状況となっている。近年では性能向上と低消費電力化のため、1つのチップ上に複数のプロセッサを集積するマルチプロセッサ方式が導入されてきている。
この種のマルチプロセッサ方式を用いた情報処理装置においては、省電力化を目的に、状態監視手段がシステムの動作状態を常に検知し、状態制御手段が各々のCPUごとに状態遷移制御を行う技術が知られている。ここで、状態遷移制御には、CPUの動作状態を通常状態から待機状態に遷移させる省電力制御と、CPUの動作状態を待機状態から通常状態に遷移させる復帰制御が含まれる。特に、省電力制御に際しては、システム全体における消費電力があらかじめ定めた最小電力より小さくなるまで、あるいは、通常状態にあるCPUがひとつになるまで、繰り返し省電力制御が行われる。省電力制御には、周波数・電源制御やプロセスのプロセッサ割当制御(コア割当制御)等が含まれる。
特許文献1には、省電力効率を高める目的で、マルチプロセッサ方式の情報処理装置に適応される省電力制御システムに関して、全体的な動作の整合性を損なわずに待機状態のシステムの消費電力が抑制されるように、各々のプロセッサの状態遷移制御およびその動作状態に応じた個別の省電力制御を行う方法が開示されている。
一方、当初のマルチプロセッサ方式は同種の汎用プロセッサを複数搭載するホモジーニアスプロセッサ方式であったが、メディアアプリケーション等を汎用プロセッサ以上に高速に動作させるため、動的に再構成可能な汎用プロセッサやアクセラレータプロセッサを集積したヘテロジーニアスプロセッサ方式が開発されている。このようなヘテロジーニアスプロセッサ方式では、通常、アクセラレータプロセッサは最速実行を目的に特定の処理を高速化する構造となっている。そのため、汎用プロセッサと比較してチップ上に占めるサイズは小さく、比較的消費電力が少ない構成で高速に特定処理を実行可能であるという特徴がある。アクセラレータプロセッサで実行できる命令(タスク)は、多少の実行速度の低下が懸念されるが、汎用プロセッサで実行することが可能であるが、その逆はサポートしている命令数の関係で困難な場合が多い。
前述した従来の状態遷移制御は、同種のプロセッサを複数搭載するホモジーニアスプロセッサ方式では特に問題にならなかったが、異種のプロセッサが混在するヘテロジーニアスプロセッサ方式においては、省電力制御がより複雑になるため、パフォーマンスダウンを招く場合があるという問題があった。省電力制御が複雑になるのは、ヘテロジーニアスプロセッサ方式ではプロセッサによって処理能力も消費電力も異なり、単純にプロセッサの空き状態等に基づいて制御することができないためである。
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、ヘテロジーニアスプロセッサ方式を用いた情報処理装置において、省電力制御を行いつつパフォーマンスを向上させることのできるプログラム実行制御方法を提供することにある。
上記の課題を解決するため、本発明にあっては、請求項1に記載されるように、ヘテロジーニアスプロセッサ方式による情報処理装置で実行されるプログラムの実行制御方法であって、コンパイラが、初期タスクスケジューリングの結果に基づき、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であるか否か判断する工程と、振り分けることが可能である場合に、前記コンパイラが、前記タスクを分割する工程と、前記情報処理装置が、前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数を変更して実行する工程とを備えるプログラム実行制御方法を要旨としている。
また、請求項2に記載されるように、請求項1に記載のプログラム実行制御方法において、前記コンパイラが、前記汎用プロセッサもしくは前記アクセラレータプロセッサのクロック周波数を変更する処理を前記汎用プロセッサもしくは前記アクセラレータプロセッサで実行されるプログラムに挿入する工程を備えるようにすることができる。
また、請求項3に記載されるように、請求項1または2のいずれか一項に記載のプログラム実行制御方法において、前記コンパイラが、前記汎用プロセッサもしくは前記アクセラレータプロセッサで実行される分割タスクのプログラムに実行の進捗を検出するためのチェックポイントを挿入する工程を備えるようにすることができる。
また、請求項4に記載されるように、請求項3に記載のプログラム実行制御方法において、前記情報処理装置が、前記チェックポイントの検出タイミングに基づき、前記汎用プロセッサもしくは前記アクセラレータプロセッサのクロック周波数を動的に変更する工程を備えるようにすることができる。
また、請求項5に記載されるように、ヘテロジーニアスプロセッサ方式による情報処理装置であって、各プロセッサに供給するクロック周波数および電源電圧を制御する省電力制御手段と、当該省電力制御手段の制御に従い、各プロセッサへのクロックおよび電源を生成するクロック・電源生成手段とを備え、前記省電力制御手段は、タスクスケジューリングの結果、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であった場合に、前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数をプログラム実行時に変更する情報処理装置として構成することができる。
また、請求項6に記載されるように、ヘテロジーニアスプロセッサ方式による情報処理装置で実行されるプログラムの実行制御プログラムであって、コンピュータに、初期タスクスケジューリングの結果に基づき、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であるか否か判断する手順、振り分けることが可能である場合に、前記タスクを分割する手順、前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数を変更して実行する手順を実行させるためのプログラム実行制御プログラムとして構成することができる。
本発明のプログラム実行制御方法にあっては、ヘテロジーニアスプロセッサ方式を用いた情報処理装置において、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサで並列実行させることでトータルの処理時間を短縮させ、更に汎用プロセッサでの待ち期間が生じないように汎用プロセッサのクロック周波数を変更することで、省電力制御を行いつつパフォーマンスを向上させることができる。
以下、本発明の好適な実施形態につき説明する。
<構成>
図1は本発明の一実施形態にかかる情報処理装置の配置パターン例を示す図である。
図1は本発明の一実施形態にかかる情報処理装置の配置パターン例を示す図である。
図1(a)では、開発側の情報処理装置2においてソースプログラムのコンパイルを行い、タスクスケジューリングされたオブジェクトプログラムをヘテロジーニアスプロセッサ方式の情報処理装置1で実行するようにしている。オブジェクトプログラムには、後述するFV制御処理(実行時のプロセッサの周波数・電源を制御する命令等)やチェックポイント(プログラムの処理が当該チェックポイントに到達したことを制御側に知らせる命令等)が含まれる。開発側の情報処理装置2はヘテロジーニアスプロセッサ方式である必要はない。
図1(b)では、ヘテロジーニアスプロセッサ方式の情報処理装置1においてソースプログラムのコンパイルを行い、更にタスクスケジューリングされたオブジェクトプログラムを同じ情報処理装置1内において実行するようにしている。
図2はヘテロジーニアスプロセッサ方式の情報処理装置1の構成例を示す図である。なお、メモリ、HDD(Hard Disk Drive)、ペリフェラルI/F(Interface)等については省略してある。
図2において、情報処理装置1は、m個の汎用プロセッサ11(11−1〜11−m)と、n個のアクセラレータプロセッサ12(12−1〜12−n)と、省電力制御部13と、クロック・電源生成部14とを備えている。
省電力制御部13は、予めコンパイラ(図1)が行ったタスクスケジューリングに基づき、必要に応じて各プロセッサ(11、12)に供給するクロック周波数・電源電圧を制御する機能を有している。また、省電力制御部13は、プログラム実行時の各プロセッサ(11、12)の動作状況を監視し、必要に応じて動的に各プロセッサ(11、12)に提供するクロック周波数・電源電圧を制御する機能も有している。
クロック・電源生成部14は、省電力制御部13の制御に従い、各プロセッサ(11、12)へのクロック・電源を生成する機能を有している。
図1(a)における情報処理装置2の内部構成については省略するが、一般的なコンピュータ装置の構成(CPU、メモリ、HDD、ペリフェラルI/F等)を有している。
<動作>
図3は上記の実施形態の全体的な処理例を示すフローチャートである。
図3は上記の実施形態の全体的な処理例を示すフローチャートである。
図3において、先ず、図1(a)の情報処理装置2もしくは図1(b)の情報処理装置1においてコンパイルが行われる。
そのコンパイルにおいては、先ず、通常のヘテロジーニアスプロセッサ方式に対するコンパイル(スタティックスケジューリング)を行う(ステップS1)。この通常コンパイルでは、画像処理等の高い性能の要求される処理を含むタスクについてはアクセラレータプロセッサ12に割り当てが行われる。
図4は通常コンパイル(図3のステップS1)によりスケジューリングされたタスクの状態の例を示す図である。ここでは、説明を簡略化するため、汎用プロセッサ11とアクセラレータプロセッサ12がそれぞれ1つずつ搭載された場合の例としている。
図4においては、コンパイラによる最初のスタティックスケジューリングによって、汎用プロセッサ11にタスク#1(処理コストの見積り「20」(参考値)、クロック周波数・電源電圧は「通常値」)、アクセラレータプロセッサ12にタスク#2(処理コストの見積り「70」(参考値)、分割可能、クロック周波数・電源電圧は「通常値」)、汎用プロセッサ11にタスク#3(処理コストの見積り「30」(参考値)、クロック周波数・電源電圧は「通常値」、タスク#1・タスク#2の後に実行する必要)がスケジューリングされた場合を示している。この場合、タスク#1に続いて長い待ち時間(IDLE状態)が続いている。タスク#2は処理コストは大きいが、並列化を視野に分割することが可能な状態となっている。
図5は通常コンパイル(図3のステップS1)により生成されるスケジューリングデータの例を示す図であり、「タスク名」「処理コスト(タスクサイズ)」「実行順序」「分割可否」「分割後サイズ」「実行プロセッサ」「FV制御」「チェックポイント」等の項目を有している。「分割後サイズ」は、タスクが分割可能である場合、分割した場合の各部分のサイズを示している。FV制御は、クロック周波数・電源電圧の制御を意味している。図5に示したタスク#1〜#3は図4に示したものと対応している。
図3に戻り、通常コンパイル(ステップS1)に続き、タスク分割可否判断を行う(ステップS2)。
図6はタスク分割可否判断(図3のステップS2)の処理例を示すフローチャートである。すなわち、アクセラレータプロセッサ12で実行するタスクを分割し、汎用プロセッサ11へタスクを割り振ることができるか否かを判断する処理である。なお、汎用プロセッサ11で実行するタスクは、サポートしている命令数の関係でアクセラレータプロセッサ12へ割り振ることは困難であるため、分割の対象としていない。
図6において、タスク分割可否判断の処理を開始すると、汎用プロセッサ11に長時間の待ちが発生する箇所があるか否か判断する(ステップS21)。具体的には、図5のスケジューリングデータから、タスク#1とタスク#2が汎用プロセッサ11とアクセラレータプロセッサ12でそれぞれ同時に実行開始し、タスク#1が処理コスト「20」で完了するのに対し、タスク#2が処理コスト「70」まで続き、タスク#3はタスク#1およびタスク#2の後でなければ開始できないため、「70−20=50」の待ちが汎用プロセッサ11に発生することが判断できる。ここで、長時間の待ちと判断する閾値が「50」未満に設定されていれば、長時間の待ちが発生すると判断する。
図6に戻り、汎用プロセッサ11に長時間の待ちが発生する箇所がないと判断した場合(ステップS21のNO)、処理を終了する。
汎用プロセッサ11に長時間の待ちが発生する箇所があると判断した場合(ステップS21のYES)、続いて、その時のアクセラレータプロセッサ12のタスクは分割可能か否か判断する(ステップS22)。具体的には、図5のスケジューリングデータから、長時間の待ちが発生する時のアクセラレータプロセッサ12のタスクはタスク#2であることがわかり、その分割可否の項目「○」から分割可能であると判断する。
図6に戻り、長時間の待ちが発生する時のアクセラレータプロセッサ12のタスクが分割可能でないと判断した場合(ステップS22のNO)、処理を終了する。
長時間の待ちが発生する時のアクセラレータプロセッサ12のタスクが分割可能であると判断した場合(ステップS22のYES)、続いて、分割後の一方(後半)のタスクは汎用プロセッサ11の待ち時間で実行可能か否か判断する(ステップS23)。具体的には、図5のスケジューリングデータから、分割可能と判断したタスク#2の分割後のサイズ「50、20」から後半の分割部分のサイズ「20」を取得し、タスク#1の後の長時間の待ち「50」と比較し、分割部分のサイズ「20」の方が小さいため、待ち時間で実行可能であると判断する。
図6に戻り、分割後の一方のタスクが汎用プロセッサ11の待ち時間で実行可能でないと判断した場合(ステップS23のNO)、処理を終了する。
分割後の一方のタスクが汎用プロセッサ11の待ち時間で実行可能であると判断した場合(ステップS23のYES)、その分割後の一方のタスクを汎用プロセッサ11で並列化を行う対象とする(ステップS24)。具体的には、その分割後の一方のタスクを汎用プロセッサ11で並列化を行う対象とする旨のデータを内部的に設定して保持する。そして、処理を終了する。
図3に戻り、タスク分割可否判断(ステップS2)の後、タスク分割を行う(ステップS3)。
図7はタスク分割(図3のステップS3)の処理例を示すフローチャートである。
図7において、タスク分割の処理を開始すると、先ず、タスクのプログラムを解析し、分割ポイントを決定する(ステップS31)。ここでは、処理の高速化を目的に、対象タスクに含まれる処理単位で分割ポイントを決定するものとする。
次いで、タスクのプログラムを解析し、分割後の依存関係をチェックする(ステップS32)。例えば、逐次処理では、処理#1→処理#2→処理#3と順番に実行させている処理が、タスク分割により処理順序がずれてしまう場合があるため、このことに注意してチェックを行う。分割後の依存関係が不正である場合には、適正な依存関係となるように処理に待ちを挿入する等のプログラムの修正を行う。
次いで、タスクの並列化を行う(ステップS33)。タスクの並列化は処理単位でタスクを分割した際に有効な並列化手法であり、手順並列法とも呼ばれるものである。具体的には、図8に示すように、タスク#2を分割の対象とした場合、それまでのタスク#2のスケジューリングデータに代え、分割後のタスク#2−1とタスク#2−2のスケジューリングデータを新たに生成する。
図7に戻り、並列化(ステップS33)の後、同期するタイミングのチェックを行う(ステップS34)。例えば、資源を共有する際に、同時にアクセスすることで発生する不具合を防ぐため、排他制御を行う必要があることから、これをチェックしている。同期するタイミングが不正である場合には、適正なタイミングとなるように処理に待ちを挿入する等のプログラムの修正を行う。
次いで、データ依存の除去を行う(ステップS35)。データ依存性の種類としては、フロー依存、逆依存、出力依存の3種類がある。フロー依存は、書き込んだデータをその後で読み出すものである。逆依存は、フロー依存と逆で、読み込み後に書き込みを行うものである。出力依存は、書き込みが行われた後に、また別の値の書き込みを行うものである。フロー依存の場合は、アクセス順序が重要なため、セマフォ等により同期をとるようにプログラムを修正する。逆依存と出力依存は、それぞれ違う変数を使用するリネーミングを行う。そして、処理を終了する。
図9はタスク分割(図3のステップS3)により再配置されたタスクの状態の例を示す図であり、図8に示したスケジューリングデータに対応している。
図9においては、アクセラレータプロセッサ12にてタスク#2として実行するはずであったタスクがタスク#2−1およびタスク#2−2として分割されている。そして、タスク#2−2を汎用プロセッサ11にて実行するようにスケジューリングの見直しがされ、ここまでのタスク#1およびタスク#2の実行完了までに必要とされる処理コストは各プロセッサとも「50」以内となっている。これによりスケジューリングの見直しをする前より処理コスト「20」に相当する分のタスクを効率的に各プロセッサに割り当て、パフォーマンス向上が達成できていることが確認できる。
図3に戻り、タスク分割(ステップS3)の後、分割タスクはプロセッサ間で同時完了できるか否か判断する(ステップS4)。具体的には、図8のスケジューリングデータから、分割したタスク#2−2の完了は、その前のタスク#1に続くものであることから、処理コスト「20+20=40」であることがわかり、タスク#1と同時に実行開始するタスク#2−1は処理コスト「50」で完了することから、同時完了できないと判断する。
図3に戻り、分割タスクはプロセッサ間で同時完了できると判断した場合(ステップS4のYES)、FV制御処理の埋め込み(ステップS5)をスキップする。
分割タスクはプロセッサ間で同時完了できないと判断した場合(ステップS4のNO)、FV制御処理の埋め込みを行う(ステップS5)。より具体的には、汎用プロセッサ11で実行されるタスクがアクセラレータプロセッサ12で実行されるタスクよりも早く完了してしまう場合、汎用プロセッサ11で実行されるタスクのクロック周波数を低くする制御命令をプログラムに挿入し、アクセラレータプロセッサ12で実行されるタスクと同時完了できるようにする。反対に、アクセラレータプロセッサ12で実行されるタスクが汎用プロセッサ11で実行されるタスクよりも早く完了してしまう場合、アクセラレータプロセッサ12の待ち期間においてクロック周波数を変更(周波数を「0」とすることによるOFF状態)する制御命令をタスクのプログラム(直前のタスクのプログラム終端等)あるいは追加プログラムに挿入する。
図10はFV制御処理の埋め込み(図3のステップS5)の例を示す図である。すなわち、並列化して汎用プロセッサ11で実行することになった分割タスクを、アクセラレータプロセッサ12で実行される分割タスクと同時に完了するように汎用プロセッサ11の周波数を変更するものである。
図9にて示した、パフォーマンス向上を目的にしたタスクスケジューリングの例では、汎用プロセッサ11にて実行するタスク#1、タスク#2−2の後に待ち(IDLE)状態が存在することが分かる。この待ち区間において、汎用プロセッサ11の周波数を低くしたり、周波数OFFまたは電源OFFにしたりして無駄な消費電力の削減を行うことも考えられるが、ここではタスク#2−2全体の実行区間を汎用プロセッサ11の周波数を低く、かつアクセラレータプロセッサ12のタスク#2−1と同じタイミングで完了するように設定している。
図10(a)は、タスク#2−2のFV制御を「通常」とし、その後の待ち区間においてFV制御を「OFF」とした場合を示しているが、図10(b)に示すように、タスク#2−2のFV制御を「低」とすることで、後のプログラム実行時(図3のステップS7〜S9)においては、タスク#2−2の完了とタスク#2−1の完了とを同時に行えるようにする。
これにより、タスク#2−2を実行している区間において、F(周波数)が低減されるため、次式
電力P[W]=αCFV2
(α:スイッチング確率、C:静電容量、F:周波数、V:電圧)
で示されるような、周波数Fに比例し、電圧Vの二乗に比例する電力を削減することができる。この電力削減の大きさは、場合によっては単に発生する待ち区間に対して汎用プロセッサ11の周波数を低くしたり、周波数OFFまたは電源OFFにしたりして削減される電力よりも大きくなる。もちろん、より大きな電力削減が期待できない場合は単に発生する待ち区間に対してのみ省エネ制御を行うことになるが、このあたりはコンパイラによるスケジューリングの際に見積もり、最適な方式を選択することになる。
電力P[W]=αCFV2
(α:スイッチング確率、C:静電容量、F:周波数、V:電圧)
で示されるような、周波数Fに比例し、電圧Vの二乗に比例する電力を削減することができる。この電力削減の大きさは、場合によっては単に発生する待ち区間に対して汎用プロセッサ11の周波数を低くしたり、周波数OFFまたは電源OFFにしたりして削減される電力よりも大きくなる。もちろん、より大きな電力削減が期待できない場合は単に発生する待ち区間に対してのみ省エネ制御を行うことになるが、このあたりはコンパイラによるスケジューリングの際に見積もり、最適な方式を選択することになる。
図11はFV制御処理の埋め込み(図3のステップS5)の他の例を示す図である。すなわち、並列化してアクセラレータプロセッサ12で実行することになった分割タスクを、汎用プロセッサ11で実行される分割タスクと同時に完了するようにアクセラレータプロセッサ12を周波数OFFまたは電源OFFする場合の例を示している。なお、この例ではこれまでのタスクとはサイズ等が異なる例を用いている。
ヘテロジーニアスプロセッサ方式においては、アクセラレータプロセッサは特定の処理を高速化する目的で搭載している。そのため、周波数制御を行って低周波数で動作させることはせずに、周波数OFFまたは電源OFFを行うことで省電力制御をすることが多い。そのため、図11(a)に示すように、タスク#2がタスク#2−1およびタスク#2−2に分割されアクセラレータプロセッサ12で実行されるタスク#2−1が処理コスト「40」(参考値)となり、汎用プロセッサ11にて実行されるタスク#1およびタスク#2−2の合計「20+30=50」よりも少なくなる場合には、図11(b)に示すように、アクセラレータプロセッサ12で待ち区間(IDLE状態)となる区間は周波数OFFまたは電源OFFを行うように設定することで省電力制御を実施する。
図3に戻り、分割タスクがプロセッサ間で同時完了できる場合(ステップS4のYES)、あるいは、FV制御処理の埋め込み(ステップS5)の後、チェックポイントの埋め込みを行う(ステップS6)。より具体的には、FV制御処理の埋め込み(ステップS5)により汎用プロセッサ11で実行されるタスクのクロック周波数を低くする制御命令をプログラムに挿入した場合は、その汎用プロセッサ11で実行されるタスクの進捗を判断できるように、そのタスク内に複数のチェックポイントとなる命令を挿入する。アクセラレータプロセッサ12の待ち期間においてOFF状態にする制御命令をプログラムに挿入した場合は、そのアクセラレータプロセッサ12で実行されるタスクの進捗を判断できるように、そのタスク内に複数のチェックポイントとなる命令を挿入する。
図12はチェックポイントの埋め込み(図3のステップS6)の例を示す図である。すなわち、並列化して汎用プロセッサ11で実行することになった分割タスクを、アクセラレータプロセッサ12で実行される分割タスクと同時に完了するように汎用プロセッサ11の周波数を変更してプログラムを実行した際に、コンパイル時に見積もった処理コストよりも実実行コストが大きくなってしまう場合の例である。タスクの具体例としては、図10(b)の場合に対応している。
図12において、タスク#2−2を汎用プロセッサ11にて実行する際に、タスクはデータや制御依存によって逐次実行をする部分が存在するため、実際にはプロセッサが常時プログラム実行に使用されるということはなく、見積りと比べて誤差が生じることがある。ここでは、この問題に対処するために、タスク#2−2に予め見積り値と実際の処理コストに差が生じていないかチェックを行うチェックポイントP1、P2を設けている。
例えば、後のプログラム実行時(図3のステップS7〜S9)において、区間Bで上記問題が顕在化し、チェックポイントP2にて予定していた完了時刻が区間Cではなく区間Dまで長引く可能性が確認された場合(この確認は図2の省電力制御部13がオペレーティングシステムの機能を用いて実現)は、区間Cにおける汎用プロセッサ11の周波数を動的に再度高めに設定することで(電源電圧は低めに設定することが可能)(図3のステップS9)、予定のタスク実行完了時刻を満たすように調整することができる。
図13はチェックポイントの埋め込み(図3のステップS6)の他の例を示す図である。すなわち、並列化して汎用プロセッサ11で実行することになった分割タスクを、アクセラレータプロセッサ12で実行される分割タスクと同時に完了するように汎用プロセッサ11の周波数を変更してプログラムを実行した際に、コンパイル時に見積もった処理コストよりも実実行コストが小さくなってしまう場合の例である。
図13では、図12とは逆に、例えば、区間Aにて上記問題が顕在化(見積りが減る方向のため、実際にはコンパイラの見積りミスの要因が多いことが考えられる)して、チェックポイントP1の段階でコンパイラが見積もった処理コストより実際の実行コストが小さくなる可能性が確認された場合は、区間Bにおける汎用プロセッサ11の周波数を動的にさらに遅めに設定することで(図3のステップS9)、予定のタスク実行完了時刻(区間Cまで)を満たすように調整することができる。
図14はチェックポイントの埋め込み(図3のステップS6)の他の例を示す図である。すなわち、並列化してアクセラレータプロセッサ12で実行することになった分割タスクを、汎用プロセッサ11で実行される分割タスクと同時に完了するようにアクセラレータプロセッサ12の周波数を変更(実際には周波数OFFもしくは電源電圧OFF)してプログラムを実行した際に、コンパイル時に見積もった処理コストよりも実実行コストが大きくなってしまう場合の例である。タスクの具体例としては、図11(b)の場合に対応している。
図14において、タスク#2−1をアクセラレータプロセッサ12にて実行する際に、タスクはデータや制御依存によって逐次実行をする部分が存在するため、実際にはプロセッサが常時プログラム実行に使用されるということはなく、見積りと比べて誤差が生じることがある。ここでは、この問題に対処するために、タスク#2−1に予め見積り値と実際の処理コストに差が生じていないかチェックを行うチェックポイントP1、P2を設けている。
例えば、後のプログラム実行時(図3のステップS7〜S9)において、区間Bで上記問題が顕在化し、チェックポイントP2にて予定していた完了時刻が区間Cではなく区間Dまで長引く可能性が確認された場合(この確認は図2の省電力制御部13がオペレーティングシステムの機能を用いて実現)は、区間Cおよび区間Dに相当する汎用プロセッサ11の周波数を動的に低めに設定することで(図3のステップS9)、汎用プロセッサ11とアクセラレータプロセッサ12のタスク実行完了時刻を合わせるように調整することができる。
図15はチェックポイントの埋め込み(図3のステップS6)の他の例を示す図である。すなわち、並列化してアクセラレータプロセッサ12で実行することになった分割タスクを、汎用プロセッサ11で実行される分割タスクが完了するまでアクセラレータプロセッサ12の周波数を変更(実際には周波数OFFもしくは電源電圧OFF)してプログラムを実行した際に、コンパイル時に見積もった処理コストよりも実実行コストが小さくなってしまう場合の例である。
図15では、図14とは逆に、例えば、区間Aにて上記問題が顕在化(見積りが減る方向のため、実際にはコンパイラの見積りミスの要因が多いことが考えられる)して、チェックポイントP1の段階でコンパイラが見積もった処理コストより実際の実行コストが小さくなる可能性が確認された場合は、区間Dにおけるアクセラレータプロセッサ12の周波数(および電源電圧)を動的にOFFに設定することで(図3のステップS9)、汎用プロセッサ11にて実行されているタスク#2−2の実行完了時刻までアクセラレータプロセッサ12の動作を止めて省電力効果を大きくするように調整することができる。なお、アクセラレータプロセッサ12で実行されるタスク#2−1の終端部でOFF設定のFV制御処理を埋め込んでいる場合には、タスク#2−1の完了とともにアクセラレータプロセッサ12はOFFとなるので、特に対処する必要はない。
図3に戻り、コンパイルの後、情報処理装置1においてプログラム実行を行う。すなわち、プログラムの実行過程でチェックポイントからの通知がなければ(ステップS7のNO)、通常のプログラム実行を行う(ステップS8)。プログラムの実行過程でチェックポイントからの通知があれば(ステップS7のYES)、FV制御処理を見直し、動的にFV制御を行ってプログラム実行を行う(ステップS9)。
<総括>
以上説明したように、本実施形態によれば、ヘテロジーニアスプロセッサ方式を用いた情報処理装置において、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサで並列実行させることでトータルの処理時間を短縮させ、更に汎用プロセッサでの待ち期間が生じないように汎用プロセッサのクロック周波数を変更することで、省電力制御を行いつつパフォーマンスを向上させることができる。
以上説明したように、本実施形態によれば、ヘテロジーニアスプロセッサ方式を用いた情報処理装置において、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサで並列実行させることでトータルの処理時間を短縮させ、更に汎用プロセッサでの待ち期間が生じないように汎用プロセッサのクロック周波数を変更することで、省電力制御を行いつつパフォーマンスを向上させることができる。
また、アクセラレータプロセッサに待ち期間が発生する場合はアクセラレータプロセッサのクロック周波数を「0」に変更することで、より一層の省電力化を図ることができる。
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
1 情報処理装置
11、11−1〜m 汎用プロセッサ
12、12−1〜n アクセラレータプロセッサ
13 省電力制御部
14 クロック・電源生成部
2 情報処理装置
11、11−1〜m 汎用プロセッサ
12、12−1〜n アクセラレータプロセッサ
13 省電力制御部
14 クロック・電源生成部
2 情報処理装置
Claims (6)
- ヘテロジーニアスプロセッサ方式による情報処理装置で実行されるプログラムの実行制御方法であって、
コンパイラが、初期タスクスケジューリングの結果に基づき、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であるか否か判断する工程と、
振り分けることが可能である場合に、前記コンパイラが、前記タスクを分割する工程と、
前記情報処理装置が、前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数を変更して実行する工程と
を備えたことを特徴とするプログラム実行制御方法。 - 請求項1に記載のプログラム実行制御方法において、
前記コンパイラが、前記汎用プロセッサもしくは前記アクセラレータプロセッサのクロック周波数を変更する処理を前記汎用プロセッサもしくは前記アクセラレータプロセッサで実行されるプログラムに挿入する工程
を備えたことを特徴とするプログラム実行制御方法。 - 請求項1または2のいずれか一項に記載のプログラム実行制御方法において、
前記コンパイラが、前記汎用プロセッサもしくは前記アクセラレータプロセッサで実行される分割タスクのプログラムに実行の進捗を検出するためのチェックポイントを挿入する工程
を備えたことを特徴とするプログラム実行制御方法。 - 請求項3に記載のプログラム実行制御方法において、
前記情報処理装置が、前記チェックポイントの検出タイミングに基づき、前記汎用プロセッサもしくは前記アクセラレータプロセッサのクロック周波数を動的に変更する工程
を備えたことを特徴とするプログラム実行制御方法。 - ヘテロジーニアスプロセッサ方式による情報処理装置であって、
各プロセッサに供給するクロック周波数および電源電圧を制御する省電力制御手段と、
当該省電力制御手段の制御に従い、各プロセッサへのクロックおよび電源を生成するクロック・電源生成手段と
を備え、
前記省電力制御手段は、タスクスケジューリングの結果、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であった場合に、前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数をプログラム実行時に変更する
ことを特徴とする情報処理装置。 - ヘテロジーニアスプロセッサ方式による情報処理装置で実行されるプログラムの実行制御プログラムであって、
コンピュータに、
初期タスクスケジューリングの結果に基づき、アクセラレータプロセッサで実行されるタスクを分割して汎用プロセッサに振り分けることが可能であるか否か判断する手順、
振り分けることが可能である場合に、前記タスクを分割する手順、
前記汎用プロセッサで実行することになった分割タスクを前記アクセラレータプロセッサで実行する分割タスクと同時に完了するように前記汎用プロセッサのクロック周波数を変更して実行する手順
を実行させるためのプログラム実行制御プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010061384A JP2011197803A (ja) | 2010-03-17 | 2010-03-17 | プログラム実行制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010061384A JP2011197803A (ja) | 2010-03-17 | 2010-03-17 | プログラム実行制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011197803A true JP2011197803A (ja) | 2011-10-06 |
Family
ID=44875964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010061384A Pending JP2011197803A (ja) | 2010-03-17 | 2010-03-17 | プログラム実行制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011197803A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2014068950A1 (ja) * | 2012-10-31 | 2016-09-08 | 日本電気株式会社 | データ処理システム、データ処理方法およびプログラム |
JP2016532183A (ja) * | 2013-10-03 | 2016-10-13 | 華為技術有限公司Huawei Technologies Co.,Ltd. | ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法及びシステム |
JPWO2014132608A1 (ja) * | 2013-02-26 | 2017-02-02 | 日本電気株式会社 | 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体 |
JP2018128811A (ja) * | 2017-02-08 | 2018-08-16 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
CN110262887A (zh) * | 2019-06-26 | 2019-09-20 | 北京邮电大学 | 基于特征识别的cpu-fpga任务调度方法及装置 |
JP7523964B2 (ja) | 2019-08-15 | 2024-07-29 | インテル コーポレイション | アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置 |
-
2010
- 2010-03-17 JP JP2010061384A patent/JP2011197803A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2014068950A1 (ja) * | 2012-10-31 | 2016-09-08 | 日本電気株式会社 | データ処理システム、データ処理方法およびプログラム |
JPWO2014132608A1 (ja) * | 2013-02-26 | 2017-02-02 | 日本電気株式会社 | 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体 |
US10025603B2 (en) | 2013-02-26 | 2018-07-17 | Nec Corporation | Parallel processing device, parallel processing method, and parallel processing program storage medium |
JP2016532183A (ja) * | 2013-10-03 | 2016-10-13 | 華為技術有限公司Huawei Technologies Co.,Ltd. | ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法及びシステム |
US10162679B2 (en) | 2013-10-03 | 2018-12-25 | Huawei Technologies Co., Ltd. | Method and system for assigning a computational block of a software program to cores of a multi-processor system |
JP2018128811A (ja) * | 2017-02-08 | 2018-08-16 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
CN110262887A (zh) * | 2019-06-26 | 2019-09-20 | 北京邮电大学 | 基于特征识别的cpu-fpga任务调度方法及装置 |
CN110262887B (zh) * | 2019-06-26 | 2022-04-01 | 北京邮电大学 | 基于特征识别的cpu-fpga任务调度方法及装置 |
JP7523964B2 (ja) | 2019-08-15 | 2024-07-29 | インテル コーポレイション | アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10078357B2 (en) | Power gating functional units of a processor | |
TWI550518B (zh) | 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統 | |
US8181047B2 (en) | Apparatus and method for controlling power management by comparing tick idle time data to power management state resume time data | |
Tosun | Energy-and reliability-aware task scheduling onto heterogeneous MPSoC architectures | |
JP2011197803A (ja) | プログラム実行制御方法 | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
WO2011011155A1 (en) | Core selection for applications running on multiprocessor systems based on core and application characteristics | |
JP2010257428A (ja) | 情報処理装置、並列処理最適化方法およびプログラム | |
Roy et al. | State-retentive power gating of register files in multicore processors featuring multithreaded in-order cores | |
US9563465B2 (en) | Multi-task scheduling method for assigning threads based on time slices to multi-core processors and multi-core processor system therefor | |
US9910717B2 (en) | Synchronization method | |
JP4412905B2 (ja) | 低電力動作制御装置、およびプログラム最適化装置 | |
WO2016085680A1 (en) | System and method for adaptive thread control in a portable computing device (pcd) | |
Niu et al. | Reliability-aware scheduling for reducing system-wide energy consumption for weakly hard real-time systems | |
US8516441B2 (en) | Software optimization device and software optimization method | |
JP2009080583A (ja) | 情報処理装置、並列処理最適化方法およびプログラム | |
US20110061032A1 (en) | High-level synthesis apparatus, high-level synthesis method, and computer readable medium comprising high-level synthesis program | |
JP2000353188A (ja) | ハイパフォーマンス/低電力vlsi設計のためのコモン・ケース用の低消費電力化計算回路 | |
CN106164816B (zh) | 在处理器之间的全局电压/频率缩放切换的调度 | |
US8095806B2 (en) | Method of power simulation and power simulator | |
KR20140010671A (ko) | 데이터를 기반으로 전력을 관리하는 장치 및 방법 | |
JP5928272B2 (ja) | 半導体集積回路及びコンパイラ | |
La Fratta et al. | Energy-efficient multithreading for a hierarchical heterogeneous multicore through locality-cognizant thread generation | |
JP2008197943A (ja) | コンピュータシステム | |
Luo | Software efficiency or performance optimization at the software and hardware architectural level |