(58)【調査した分野】(Int.Cl.,DB名)
複数の演算処理装置と、前記複数の演算処理装置について共通に時間を計測する共通計時部と、前記複数の演算処理装置ごとにプログラムの実行時間を計測する個別計時部とを有する情報処理装置の制御方法において、
前記情報処理装置が有する比較する比較部が、前記個別計時部による前記複数の演算処理装置のそれぞれのプログラムの実行時間と前記共通計時部による計測時間と比較し、
前記比較部による比較結果に基づき、前記情報処理装置が有する制御部が、前記複数の演算処理装置の処理を制御し、
前記制御では、
前記制御部が、前記比較部による比較結果に基づき、前記複数の演算処理装置のうち、前記共通計時部による計測時間よりも、個別計時部によるプログラムの実行時間が小さい演算処理装置の処理を促進させる、
情報処理装置の制御方法。
【背景技術】
【0002】
近年、複数の演算処理装置としてのプロセッサを用いて、1つのタスクを分散して処理
の高速化を図る並列コンピューティング技術が広く用いられている。このような並列コンピューティングシステムではプロセッサの接続方式に、複数のコンピュータをネットワークで接続した疎結合マルチプロセッサシステムや、プロセッサをバスレベルで結合した密結合マルチプロセッサシステムと呼ばれるものがある。また、同一チップ上に複数のプロセッサを集積したチップマルチプロセッサ(CMP)も実用化され普及に至っている。
【0003】
また、CMPにおいて、プロセッサ毎にそのクロック周波数や電圧を動的に変更して動作
させるようなDVFS(Dynamic Voltage and Frequency Scaling)技術や、複数あるプロセ
ッサの内の一部のプロセッサについてチップ全体の熱設計電力に余裕がある場合に定格動作周波数を超えて高速動作をさせるような技術(Intel Turbo Boost Technology)などが、市場に登場してきている。
【0004】
ここで、あるタスクを並列コンピューティングシステムで処理する際には、例えば、オペレーティングシステム(OS)が、まず、タスクを適当な処理単位に分割する。処理単位としてはプログラム、プロセス、スレッド等が考えられる。タスクがスレッドに分割されたとすると、このタスクは分割されたスレッドを複数のプロセッサに割り当て、並列に処理を行う。そして、タスクは各プロセッサでの処理が完了するのを待ち、次の処理へ移っていく。なお、タスク等が各プロセッサでの処理が完了するのを待つことを、同期をとる、ともいう。このように、複数のプロセッサがスレッド等の処理を並列して行う分散処理の方法によって、並列コンピューティングシステムは高速に処理を行うことができる。
【発明を実施するための形態】
【0011】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【0012】
<発明の概要>
本発明の実施の一態様である情報処理装置としてのコンピュータは、複数の演算処理装置としてのプロセッサを有する。また、情報処理装置が実行する1まとまりの処理の単位をタスクと呼ぶことにする。情報処理装置は、タスクをさらにスレッドと呼ばれる複数の処理単位に分割する。本実施例においては、処理単位をスレッドとするが、プログラム、プロセス等であってもよい。情報処理装置は、分割したスレッドを、各プロセッサに割り当てる。各プロセッサは、他のプロセッサとのスレッドの実行時間差を低減するため、自身のプロセッサのクロック周波数および電圧値を制御して、処理を促進させたり抑制させたりする。具体的には、各プロセッサは、スレッドの処理時間を計測し、処理が遅れている場合には処理を促進させる。一方、各プロセッサは、処理が進んでいる場合には処理を抑制させる。上記の処理速度の制御を一定間隔で行うことにより、各プロセッサ間のスレッドの実行時間差を低減させることができる。
【0013】
なお、本発明の実施に係る並列コンピューティングシステムにおいて、複数のプロセッサは、情報処理装置においてバスレベルで結合される場合に限られない。複数のプロセッサが、ネットワークで接続した複数のコンピュータに含まれる場合や、同一チップ上に含まれる場合のような並列コンピューティングシステムであってもよい。
【0014】
[実施例1]
実施例1では、複数のプロセッサは、それぞれの処理環境でのスレッドの実行時間を、情報処理装置1において共通に時間を計測するグローバルタイマーによる計測時間と比較することにより、自身のプロセッサの処理が遅れているか否かを判断する。各プロセッサは、自身の処理が遅れていると判断した場合には、処理を促進させる。
【0015】
<ハードウェア構成>
図1は、情報処理装置1のハードウェア構成の一例を示す図である。
図1において、情
報処理装置1は、主記憶2、メモリバス3、メインクロック供給回路4、グローバルタイムレジスタ5、ローカルタイムレジスタ6a、6b、6c、プロセッサ7a、7b、7c、電力供給回路8a、8b、8c、クロック供給回路9a、9b、9c、クロック制御レジスタ10a、10b、10cおよび電圧制御レジスタ11a、11b、11cを備える。
【0016】
ローカルタイムレジスタ6a、6b、6cを総称する場合には、ローカルタイムレジスタ6という。また、プロセッサ7a、7b、7cを総称する場合には、プロセッサ7という。電力供給回路8a、8b、8cを総称する場合には、電力供給回路8という。クロック供給回路9a、9b、9cを総称する場合には、クロック供給回路9という。クロック制御レジスタ10a、10b、10cを総称する場合には、クロック制御レジスタ10という。電圧制御レジスタ11a、11b、11cを総称する場合には、電圧制御レジスタ11という。
【0017】
なお、各プロセッサ7は、特定のローカルタイムレジスタ6、電力供給回路8、クロック供給回路9、クロック制御レジスタ10および電圧制御レジスタ11を使用して処理を行う。すなわち、プロセッサ7aは、ローカルタイムレジスタ6a、電力供給回路8a、クロック供給回路9a、クロック制御レジスタ10aおよび電圧制御レジスタ11aを使用する。また、プロセッサ7bは、ローカルタイムレジスタ6b、電力供給回路8b、クロック供給回路9b、クロック制御レジスタ10bおよび電圧制御レジスタ11bを使用する。プロセッサ7cは、ローカルタイムレジスタ6c、電力供給回路8c、クロック供給回路9c、クロック制御レジスタ10cおよび電圧制御レジスタ11cを使用する。
【0018】
主記憶2は、プロセッサ7に、プログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。主記憶2は、例えば、RAM(Random
Access Memory)のような半導体メモリである。メモリバス3は、主記憶2とプロセッサ7との間の信号線で、データやアドレス等の信号をやりとりするために用いられる。メインクロック供給回路4は、複数のプロセッサから共通に参照できるメインクロックの時刻を供給する。
【0019】
グローバルタイムレジスタ5は、タスクの開始時点から、メインクロックの時刻を計数し、タスクの開始時点からの経過時間を、グローバルタイムとして記憶する。ローカルタイムレジスタ6は、プロセッサ7が実行するスレッドの実行時間を計測し、ローカルタイムとして記憶する。
【0020】
プロセッサ7は、情報処理装置1により割り当てられたスレッドを実行する。電力供給回路8は、プロセッサ7に電力を供給し、プロセッサ7を駆動する。クロック供給回路9は、プロセッサ7から参照できるクロックの時刻を供給する。クロック制御レジスタ10は、プロセッサ7が指定したクロック周波数を記憶する。電圧制御レジスタ11は、プロセッサ7が指定した電圧値を記憶する。
【0021】
なお、
図1では、それぞれ3つのローカルタイムレジスタ6、プロセッサ7、電力供給回路8、クロック供給回路9、クロック制御レジスタ10および電圧制御レジスタ11が例示されているが、いずれも数に限定がある訳ではない。情報処理装置1は、複数のプロセッサ7を有し、各プロセッサ7はそれぞれにローカルタイムレジスタ6、電力供給回路8、クロック供給回路9、クロック制御レジスタ10および電圧制御レジスタ11を有していればよい。
【0022】
<情報処理装置の機能ブロック>
図2は、実施例1における情報処理装置1の機能ブロック図である。
図2において、試
情報処理装置1は、主記憶2、グローバルタイマー50、プロセッサ7a、7b、7c、電源供給部80a、80b、80c、およびクロック供給部90a、90b、90cを有する。
【0023】
グローバルタイマー50は、複数のプロセッサについて共通に時間を計測する共通計時部である。グローバルタイマー50は、タスクの開始時点から、メインクロックの時刻を計数し、タスクの開始時点からの経過時間を、グローバルタイムとして計測する。グローバルタイムは、複数のプロセッサから共通に参照することができる。
【0024】
プロセッサ7aは、個々のプロセッサについての実行時間を計測する個別計時部であるローカルタイマー60aを有する。また、プロセッサ7bは、ローカルタイマー60bを有する。プロセッサ7cは、ローカルタイマー60cを有する。ローカルタイマー60a、60b、60cを総称する場合には、ローカルタイマー60という。なお、
図2では、3つのプロセッサ7が例示されているが、数に限定がある訳ではない。情報処理装置1は、複数のプロセッサ7を有し、各プロセッサは、それぞれのローカルタイマー60を有していればよい。
【0025】
ローカルタイマー60は、プロセッサ7のそれぞれの処理環境でのスレッドの実行時間を、ローカルタイムとして計測する。ローカルタイマー60は、以下のいずれかの方法によって、ローカルタイムを計測する。第1の方法では、ローカルタイマー60は、スレッドの実行開始時点でメインクロックの計数を開始し、OS処理やIO処理中はメインクロックの計数を停止することで、スレッドの実行時間を計測する。第2の方法では、ローカルタイマー60は、スレッドの実行開始時点からの実行時間を、独自に計測する。
【0026】
電源供給部80aは、プロセッサ7aに電力を供給する。また、電源供給部80bは、プロセッサ7bに電力を供給する。電源供給部80cは、プロセッサ7cに電力を供給する。電源供給部80a、80b、80cを総称する場合には、電源供給部80という。なお、情報処理装置1は、プロセッサ7と同数の電源供給部80を有する。各プロセッサ7は、独自の電源供給部から電力供給を受ける。
【0027】
クロック供給部90aは、プロセッサ7aにクロックを供給する。また、クロック供給部90bは、プロセッサ7bにクロックを供給する。クロック供給部90cは、プロセッサ7cにクロックを供給する。クロック供給部90a、90b、90cを総称する場合には、クロック供給部90という。なお、情報処理装置1は、プロセッサ7と同数のクロック供給部90を有する。各プロセッサ7は、独自のクロック供給部からクロック供給を受ける。
【0028】
主記憶2は、比較部21および制御部22として機能するプログラムモジュールを格納する。プログラムモジュールは、サブプログラムなどとも呼ばれる。但し、比較部21および制御部22のいずれかを、ハードウェア回路、専用LSI等で実現してもよい。
【0029】
比較部21は、グローバルタイマー50が計測するグローバルタイムと、ローカルタイマー60が計測するローカルタイムとを比較する。制御部22は、ローカルタイムがグローバルタイムより小さい場合に、処理が遅延しているプロセッサ7のクロック周波数および電圧値を制御して、処理を促進させる。
【0030】
<処理フロー>
図3は、実施例1におけるプロセッサの実行制御処理手順の一例を示すフローチャートである。ステップS11において、プロセッサ7は、ローカルタイマー60が計測するローカルタイムと、グローバルタイマー50が計測するグローバルタイムとを比較する。
【0031】
ステップS12において、プロセッサ7は、ステップS11の比較により、自身のプロセッサ7の処理が、一定時間遅れているか否かを判定する。プロセッサ7は、自身のプロセッサ7の処理が一定時間遅れている場合にはステップS13に、遅れていない場合にはステップS11に戻る。
【0032】
ステップS13において、プロセッサ7は、自身のプロセッサのクロック周波数および電圧値の少なくとも一方を制御して、処理を促進させる。例えば、プロセッサ7は、クロック供給部90を制御して、クロックを所定値に増加させる。具体的には、プロセッサ7は、図示しないレジスタに設定されるクロック周波数の設定値を増加させる。クロック周波数の増加値に限定があるわけではない。例えば、プロセッサ7は、クロック周波数を固定値(Δf)増加させてもよい。また、プロセッサ7は、所定比R(1<R)により、クロック周波数fをf×Rに増加してもよい。プロセッサ7は、所定値Δfまたは所定比Rを、図示しないレジスタまたは主記憶2にパラメータとして保持しておけばよい。また、例えば、プロセッサ7は、電源電圧が可変の情報処理装置において、電源電圧を増加すればよい。例えば、プロセッサ7は、電源電圧を可変範囲での最大値としてもよい。
【0033】
ステップS14において、プロセッサ7は、各プロセッサでの処理がすべて完了したか否かを判定する。プロセッサ7は、各プロセッサでの処理がすべて完了していない場合には、ステップS11に戻る。プロセッサ7は、各プロセッサでの処理がすべて完了した場合には、プロセッサの実行制御処理を終了する。
【0034】
プロセッサ7は、自身のプロセッサが実行するスレッドの処理時間が、グローバルタイムと比較して一定時間遅れている場合には、処理を促進させる。その結果、複数のプロセッサにより処理を行う並列コンピューティングシステムにおいて、性能向上の阻害要因であったスレッド間での同期待ち時間が減少する。同期待ち時間の減少により、情報処理装置1は、並列コンピューティングシステム全体の処理性能を向上させることができる。
【0035】
[実施例2]
実施例2では、複数のプロセッサは、それぞれの処理環境でのスレッドの実行時間を、他のプロセッサの処理環境でのスレッドの実行時間と比較することにより、自身のプロセッサの処理が進んでいるか否かを判断する。各プロセッサは、自身の処理が進んでいると判断した場合には、処理を抑制させる。
【0036】
<ハードウェア構成>
実施例2における、情報処理装置1のハードウェア構成は、実施例1と同様であるため、その説明を省略する。
【0037】
<情報処理装置の機能ブロック>
図4は、実施例2における情報処理装置の機能ブロック図である。
図4において、情報処理装置1は、グローバルタイマー50を有しない点を除いて実施例1と同様であるため、その説明を省略する。なお、実施例2において、プロセッサ7は、他のプロセッサが有するローカルタイマー60が計測するローカルタイムを参照することができるものとする。
【0038】
<処理フロー>
図5は、実施例2におけるプロセッサの実行制御処理手順の一例を示すフローチャートである。
【0039】
ステップS21において、プロセッサ7は、自身のプロセッサ7のローカルタイマー6
0が計測するローカルタイムと、他のプロセッサ7のローカルタイマー60が計測するローカルタイムとを比較する。例えば、プロセッサ7aは、ローカルタイマー60aが計測するローカルタイムと、他のプロセッサ7bのローカルタイマー60bが計測するローカルタイムとを比較する。また、プロセッサ7aは、ローカルタイマー60aが計測するローカルタイムと、他のプロセッサ7cのローカルタイマー60cが計測するローカルタイムとを比較する。
【0040】
ステップS22において、プロセッサ7は、ステップS21の比較により、自身のプロセッサの処理が、自身のローカルタイマー60bが計測するローカルタイムが、他のプロセッサのローカルタイマー60bが計測するローカルタイムよりも大きいことにより、他のプロセッサの処理と比べて一定時間進んでいるか否かを判定する。プロセッサ7は、自身のプロセッサ7の処理が一定時間進んでいる場合にはステップS23に、遅れていない場合にはステップS21に戻る。
【0041】
ステップS23において、プロセッサ7は、自身のプロセッサのクロック周波数および電圧値の少なくとも一方を制御して、処理を抑制させる。例えば、プロセッサ7は、クロック供給部90を制御して、クロックを所定値に減少させる。また、例えば、プロセッサ7は、電源電圧が可変の情報処理装置において、電源電圧を減少すればよい。例えば、プロセッサ7は、電源電圧を可変範囲での最小値としてもよい。
【0042】
ステップS24において、プロセッサ7は、各プロセッサでの処理がすべて完了したか否かを判定する。プロセッサ7は、各プロセッサでの処理がすべて完了していない場合には、ステップS21に戻る。プロセッサ7は、各プロセッサでの処理がすべて完了した場合には、プロセッサの実行制御処理を終了する。
【0043】
プロセッサ7は、自身のプロセッサが実行するスレッドの処理時間が、他のプロセッサのローカルタイムと比較して大きい場合には、処理を抑制させる。遅れが生じた他のプロセッサに合わせて処理を抑制させるため、プロセッサ7は、クロック周波数を下げる。その結果、並列コンピューティングシステム全体の消費電力を低減することができる。