(57)【要約】【課題】複数のプロセッサで実行されるスレッドの実行時間差の低減、即ち同期待ち時間の低減を行い、並列コンピューティングシステム全体の処理性能を向上させる。【解決手段】情報処理装置は、複数の演算処理装置と、前記複数の演算処理装置について共通に時間を計測する共通計時部と、前記複数の演算処理装置ごとにプログラムの実行時間を計測する個別計時部と、前記個別計時部による前記複数の演算処理装置のそれぞれのプログラムの実行時間と前記共通計時部による計測時間とを比較する比較部と、前記比較部による比較結果に基づき、前記複数の演算処理装置の処理を制御する制御部と、を備える。【選択図】図２
2015046020.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置と、
前記複数の演算処理装置について共通に時間を計測する共通計時部と、
前記複数の演算処理装置ごとにプログラムの実行時間を計測する個別計時部と、
前記個別計時部による前記複数の演算処理装置のそれぞれのプログラムの実行時間と前記共通計時部による計測時間とを比較する比較部と、
前記比較部による比較結果に基づき、前記複数の演算処理装置の処理を制御する制御部と、
を備える情報処理装置。
【請求項２】
前記制御部は、
前記比較部による比較結果に基づき、前記複数の演算処理装置のうち、前記共通計時部による計測時間よりも、個別計時部によるプログラムの実行時間が小さい演算処理装置の処理を促進させる請求項１記載の情報処理装置。
【請求項３】
前記制御部は、
前記比較部による比較結果に基づき、前記複数の演算処理装置のうち、他の演算子処理装置の個別計時部によるプログラムの実行時間よりも、自身の個別計時部によるプログラムの実行時間が大きい演算処理装置の処理を抑制させる請求項１記載の情報処理装置。
【請求項４】
前記制御部は、
前記比較部による比較結果に基づき、前記複数の演算処理装置のうち、他の演算子処理装置の個別計時部によるプログラムの実行時間よりも、自身の個別計時部によるプログラムの実行時間が所定時間だけ大きい演算処理装置の処理を抑制させる請求項３記載の情報処理装置。
【請求項５】
複数の演算処理装置と、前記複数の演算処理装置について共通に時間を計測する共通計時部と、前記複数の演算処理装置ごとにプログラムの実行時間を計測する個別計時部とを有する情報処理装置の制御方法において、
前記情報処理装置が有する比較する比較部が、前記個別計時部による前記複数の演算処理装置のそれぞれのプログラムの実行時間と前記共通計時部による計測時間と比較し、
前記比較部による比較結果に基づき、前記情報処理装置が有する制御部が、前記複数の演算処理装置の処理を制御する情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
近年、複数の演算処理装置としてのプロセッサを用いて、1つのタスクを分散して処理
の高速化を図る並列コンピューティング技術が広く用いられている。このような並列コンピューティングシステムではプロセッサの接続方式に、複数のコンピュータをネットワークで接続した疎結合マルチプロセッサシステムや、プロセッサをバスレベルで結合した密結合マルチプロセッサシステムと呼ばれるものがある。また、同一チップ上に複数のプロセッサを集積したチップマルチプロセッサ（CMP）も実用化され普及に至っている。
【０００３】
また、CMPにおいて、プロセッサ毎にそのクロック周波数や電圧を動的に変更して動作
させるようなDVFS（Dynamic Voltage and Frequency Scaling）技術や、複数あるプロセ
ッサの内の一部のプロセッサについてチップ全体の熱設計電力に余裕がある場合に定格動作周波数を超えて高速動作をさせるような技術（Intel Turbo Boost Technology）などが、市場に登場してきている。
【０００４】
ここで、あるタスクを並列コンピューティングシステムで処理する際には、例えば、オペレーティングシステム（OS）が、まず、タスクを適当な処理単位に分割する。処理単位としてはプログラム、プロセス、スレッド等が考えられる。タスクがスレッドに分割されたとすると、このタスクは分割されたスレッドを複数のプロセッサに割り当て、並列に処理を行う。そして、タスクは各プロセッサでの処理が完了するのを待ち、次の処理へ移っていく。なお、タスク等が各プロセッサでの処理が完了するのを待つことを、同期をとる、ともいう。このように、複数のプロセッサがスレッド等の処理を並列して行う分散処理の方法によって、並列コンピューティングシステムは高速に処理を行うことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１３４８０４号公報
【特許文献２】特開２００２−２５８９８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述の並列処理の方法では、処理効率の観点から各プロセッサに割り当てた処理が、極力時間差なく完了することが望ましい。しかし、各プロセッサに均等に処理が割り当てられたとしても、プロセッサ間の通信、メモリ帯域の不均衡、キャッシュミス、オペレーティングシステムの処理などの要因により遅延が生じるため、すべてのプロセッサでの処理が同時に終了することはほとんどない。各プロセッサでの処理の完了に時間差が生じると、同期を待つ時間が増加するため、全体の処理性能が低下する。従って、各プロセッサでの処理の完了に時間差が生じない、または少ないことが望まれている。
【０００７】
そこで、本発明の一態様は、複数のプロセッサで実行されるスレッドの実行時間差の低減、即ち同期待ち時間の低減を行い、並列コンピューティングシステム全体の処理性能を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の一側面は、情報処理装置によって例示される。本情報処理装置は、複数の
演算処理装置と、前記複数の演算処理装置について共通に時間を計測する共通計時部と、前記複数の演算処理装置ごとにプログラムの実行時間を計測する個別計時部と、前記個別計時部による前記複数の演算処理装置のそれぞれのプログラムの実行時間と前記共通計時部による計測時間とを比較する比較部と、前記比較部による比較結果に基づき、前記複数の演算処理装置の処理を制御する制御部と、を備える。
【発明の効果】
【０００９】
開示の技術によれば、複数のプロセッサで実行されるスレッドの実行時間差の低減、即ち同期待ち時間の低減を行い、並列コンピューティングシステム全体の処理性能を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】実施例１における情報処理装置の機能ブロック図である。
【図３】実施例１におけるプロセッサの実行制御処理手順の一例を示すフローチャートである。
【図４】実施例２における情報処理装置の機能ブロック図である。
【図５】実施例２におけるプロセッサの実行制御処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１２】
＜発明の概要＞
本発明の実施の一態様である情報処理装置としてのコンピュータは、複数の演算処理装置としてのプロセッサを有する。また、情報処理装置が実行する１まとまりの処理の単位をタスクと呼ぶことにする。情報処理装置は、タスクをさらにスレッドと呼ばれる複数の処理単位に分割する。本実施例においては、処理単位をスレッドとするが、プログラム、プロセス等であってもよい。情報処理装置は、分割したスレッドを、各プロセッサに割り当てる。各プロセッサは、他のプロセッサとのスレッドの実行時間差を低減するため、自身のプロセッサのクロック周波数および電圧値を制御して、処理を促進させたり抑制させたりする。具体的には、各プロセッサは、スレッドの処理時間を計測し、処理が遅れている場合には処理を促進させる。一方、各プロセッサは、処理が進んでいる場合には処理を抑制させる。上記の処理速度の制御を一定間隔で行うことにより、各プロセッサ間のスレッドの実行時間差を低減させることができる。
【００１３】
なお、本発明の実施に係る並列コンピューティングシステムにおいて、複数のプロセッサは、情報処理装置においてバスレベルで結合される場合に限られない。複数のプロセッサが、ネットワークで接続した複数のコンピュータに含まれる場合や、同一チップ上に含まれる場合のような並列コンピューティングシステムであってもよい。
【００１４】
[実施例１]
実施例１では、複数のプロセッサは、それぞれの処理環境でのスレッドの実行時間を、情報処理装置１において共通に時間を計測するグローバルタイマーによる計測時間と比較することにより、自身のプロセッサの処理が遅れているか否かを判断する。各プロセッサは、自身の処理が遅れていると判断した場合には、処理を促進させる。
【００１５】
＜ハードウェア構成＞
図１は、情報処理装置１のハードウェア構成の一例を示す図である。図１において、情
報処理装置１は、主記憶２、メモリバス３、メインクロック供給回路４、グローバルタイムレジスタ５、ローカルタイムレジスタ６ａ、６ｂ、６ｃ、プロセッサ７ａ、７ｂ、７ｃ、電力供給回路８ａ、８ｂ、８ｃ、クロック供給回路９ａ、９ｂ、９ｃ、クロック制御レジスタ１０ａ、１０ｂ、１０ｃおよび電圧制御レジスタ１１ａ、１１ｂ、１１ｃを備える。
【００１６】
ローカルタイムレジスタ６ａ、６ｂ、６ｃを総称する場合には、ローカルタイムレジスタ６という。また、プロセッサ７ａ、７ｂ、７ｃを総称する場合には、プロセッサ７という。電力供給回路８ａ、８ｂ、８ｃを総称する場合には、電力供給回路８という。クロック供給回路９ａ、９ｂ、９ｃを総称する場合には、クロック供給回路９という。クロック制御レジスタ１０ａ、１０ｂ、１０ｃを総称する場合には、クロック制御レジスタ１０という。電圧制御レジスタ１１ａ、１１ｂ、１１ｃを総称する場合には、電圧制御レジスタ１１という。
【００１７】
なお、各プロセッサ７は、特定のローカルタイムレジスタ６、電力供給回路８、クロック供給回路９、クロック制御レジスタ１０および電圧制御レジスタ１１を使用して処理を行う。すなわち、プロセッサ７ａは、ローカルタイムレジスタ６ａ、電力供給回路８ａ、クロック供給回路９ａ、クロック制御レジスタ１０ａおよび電圧制御レジスタ１１ａを使用する。また、プロセッサ７ｂは、ローカルタイムレジスタ６ｂ、電力供給回路８ｂ、クロック供給回路９ｂ、クロック制御レジスタ１０ｂおよび電圧制御レジスタ１１ｂを使用する。プロセッサ７ｃは、ローカルタイムレジスタ６ｃ、電力供給回路８ｃ、クロック供給回路９ｃ、クロック制御レジスタ１０ｃおよび電圧制御レジスタ１１ｃを使用する。
【００１８】
主記憶２は、プロセッサ７に、プログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。主記憶２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ
Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような半導体メモリである。メモリバス３は、主記憶２とプロセッサ７との間の信号線で、データやアドレス等の信号をやりとりするために用いられる。メインクロック供給回路４は、複数のプロセッサから共通に参照できるメインクロックの時刻を供給する。
【００１９】
グローバルタイムレジスタ５は、タスクの開始時点から、メインクロックの時刻を計数し、タスクの開始時点からの経過時間を、グローバルタイムとして記憶する。ローカルタイムレジスタ６は、プロセッサ７が実行するスレッドの実行時間を計測し、ローカルタイムとして記憶する。
【００２０】
プロセッサ７は、情報処理装置１により割り当てられたスレッドを実行する。電力供給回路８は、プロセッサ７に電力を供給し、プロセッサ７を駆動する。クロック供給回路９は、プロセッサ７から参照できるクロックの時刻を供給する。クロック制御レジスタ１０は、プロセッサ７が指定したクロック周波数を記憶する。電圧制御レジスタ１１は、プロセッサ７が指定した電圧値を記憶する。
【００２１】
なお、図１では、それぞれ３つのローカルタイムレジスタ６、プロセッサ７、電力供給回路８、クロック供給回路９、クロック制御レジスタ１０および電圧制御レジスタ１１が例示されているが、いずれも数に限定がある訳ではない。情報処理装置１は、複数のプロセッサ７を有し、各プロセッサ７はそれぞれにローカルタイムレジスタ６、電力供給回路８、クロック供給回路９、クロック制御レジスタ１０および電圧制御レジスタ１１を有していればよい。
【００２２】
＜情報処理装置の機能ブロック＞
図２は、実施例１における情報処理装置１の機能ブロック図である。図２において、試
情報処理装置１は、主記憶２、グローバルタイマー５０、プロセッサ７ａ、７ｂ、７ｃ、電源供給部８０ａ、８０ｂ、８０ｃ、およびクロック供給部９０ａ、９０ｂ、９０ｃを有する。
【００２３】
グローバルタイマー５０は、複数のプロセッサについて共通に時間を計測する共通計時部である。グローバルタイマー５０は、タスクの開始時点から、メインクロックの時刻を計数し、タスクの開始時点からの経過時間を、グローバルタイムとして計測する。グローバルタイムは、複数のプロセッサから共通に参照することができる。
【００２４】
プロセッサ７ａは、個々のプロセッサについての実行時間を計測する個別計時部であるローカルタイマー６０ａを有する。また、プロセッサ７ｂは、ローカルタイマー６０ｂを有する。プロセッサ７ｃは、ローカルタイマー６０ｃを有する。ローカルタイマー６０ａ、６０ｂ、６０ｃを総称する場合には、ローカルタイマー６０という。なお、図２では、３つのプロセッサ７が例示されているが、数に限定がある訳ではない。情報処理装置１は、複数のプロセッサ７を有し、各プロセッサは、それぞれのローカルタイマー６０を有していればよい。
【００２５】
ローカルタイマー６０は、プロセッサ７のそれぞれの処理環境でのスレッドの実行時間を、ローカルタイムとして計測する。ローカルタイマー６０は、以下のいずれかの方法によって、ローカルタイムを計測する。第１の方法では、ローカルタイマー６０は、スレッドの実行開始時点でメインクロックの計数を開始し、ＯＳ処理やＩＯ処理中はメインクロックの計数を停止することで、スレッドの実行時間を計測する。第２の方法では、ローカルタイマー６０は、スレッドの実行開始時点からの実行時間を、独自に計測する。
【００２６】
電源供給部８０ａは、プロセッサ７ａに電力を供給する。また、電源供給部８０ｂは、プロセッサ７ｂに電力を供給する。電源供給部８０ｃは、プロセッサ７ｃに電力を供給する。電源供給部８０ａ、８０ｂ、８０ｃを総称する場合には、電源供給部８０という。なお、情報処理装置１は、プロセッサ７と同数の電源供給部８０を有する。各プロセッサ７は、独自の電源供給部から電力供給を受ける。
【００２７】
クロック供給部９０ａは、プロセッサ７ａにクロックを供給する。また、クロック供給部９０ｂは、プロセッサ７ｂにクロックを供給する。クロック供給部９０ｃは、プロセッサ７ｃにクロックを供給する。クロック供給部９０ａ、９０ｂ、９０ｃを総称する場合には、クロック供給部９０という。なお、情報処理装置１は、プロセッサ７と同数のクロック供給部９０を有する。各プロセッサ７は、独自のクロック供給部からクロック供給を受ける。
【００２８】
主記憶２は、比較部２１および制御部２２として機能するプログラムモジュールを格納する。プログラムモジュールは、サブプログラムなどとも呼ばれる。但し、比較部２１および制御部２２のいずれかを、ハードウェア回路、専用ＬＳＩ等で実現してもよい。
【００２９】
比較部２１は、グローバルタイマー５０が計測するグローバルタイムと、ローカルタイマー６０が計測するローカルタイムとを比較する。制御部２２は、ローカルタイムがグローバルタイムより小さい場合に、処理が遅延しているプロセッサ７のクロック周波数および電圧値を制御して、処理を促進させる。
【００３０】
＜処理フロー＞
図３は、実施例１におけるプロセッサの実行制御処理手順の一例を示すフローチャートである。ステップＳ１１において、プロセッサ７は、ローカルタイマー６０が計測するローカルタイムと、グローバルタイマー５０が計測するグローバルタイムとを比較する。
【００３１】
ステップＳ１２において、プロセッサ７は、ステップＳ１１の比較により、自身のプロセッサ７の処理が、一定時間遅れているか否かを判定する。プロセッサ７は、自身のプロセッサ７の処理が一定時間遅れている場合にはステップＳ１３に、遅れていない場合にはステップＳ１１に戻る。
【００３２】
ステップＳ１３において、プロセッサ７は、自身のプロセッサのクロック周波数および電圧値の少なくとも一方を制御して、処理を促進させる。例えば、プロセッサ７は、クロック供給部９０を制御して、クロックを所定値に増加させる。具体的には、プロセッサ７は、図示しないレジスタに設定されるクロック周波数の設定値を増加させる。クロック周波数の増加値に限定があるわけではない。例えば、プロセッサ７は、クロック周波数を固定値（Δｆ）増加させてもよい。また、プロセッサ７は、所定比Ｒ（１＜Ｒ）により、クロック周波数ｆをｆ×Ｒに増加してもよい。プロセッサ７は、所定値Δｆまたは所定比Ｒを、図示しないレジスタまたは主記憶２にパラメータとして保持しておけばよい。また、例えば、プロセッサ７は、電源電圧が可変の情報処理装置において、電源電圧を増加すればよい。例えば、プロセッサ７は、電源電圧を可変範囲での最大値としてもよい。
【００３３】
ステップＳ１４において、プロセッサ７は、各プロセッサでの処理がすべて完了したか否かを判定する。プロセッサ７は、各プロセッサでの処理がすべて完了していない場合には、ステップＳ１１に戻る。プロセッサ７は、各プロセッサでの処理がすべて完了した場合には、プロセッサの実行制御処理を終了する。
【００３４】
プロセッサ７は、自身のプロセッサが実行するスレッドの処理時間が、グローバルタイムと比較して一定時間遅れている場合には、処理を促進させる。その結果、複数のプロセッサにより処理を行う並列コンピューティングシステムにおいて、性能向上の阻害要因であったスレッド間での同期待ち時間が減少する。同期待ち時間の減少により、情報処理装置１は、並列コンピューティングシステム全体の処理性能を向上させることができる。
【００３５】
[実施例２]
実施例２では、複数のプロセッサは、それぞれの処理環境でのスレッドの実行時間を、他のプロセッサの処理環境でのスレッドの実行時間と比較することにより、自身のプロセッサの処理が進んでいるか否かを判断する。各プロセッサは、自身の処理が進んでいると判断した場合には、処理を抑制させる。
【００３６】
＜ハードウェア構成＞
実施例２における、情報処理装置１のハードウェア構成は、実施例１と同様であるため、その説明を省略する。
【００３７】
＜情報処理装置の機能ブロック＞
図４は、実施例２における情報処理装置の機能ブロック図である。図４において、情報処理装置１は、グローバルタイマー５０を有しない点を除いて実施例１と同様であるため、その説明を省略する。なお、実施例２において、プロセッサ７は、他のプロセッサが有するローカルタイマー６０が計測するローカルタイムを参照することができるものとする。
【００３８】
＜処理フロー＞
図５は、実施例２におけるプロセッサの実行制御処理手順の一例を示すフローチャートである。
【００３９】
ステップＳ２１において、プロセッサ７は、自身のプロセッサ７のローカルタイマー６
０が計測するローカルタイムと、他のプロセッサ７のローカルタイマー６０が計測するローカルタイムとを比較する。例えば、プロセッサ７ａは、ローカルタイマー６０ａが計測するローカルタイムと、他のプロセッサ７ｂのローカルタイマー６０ｂが計測するローカルタイムとを比較する。また、プロセッサ７ａは、ローカルタイマー６０ａが計測するローカルタイムと、他のプロセッサ７ｃのローカルタイマー６０ｃが計測するローカルタイムとを比較する。
【００４０】
ステップＳ２２において、プロセッサ７は、ステップＳ２１の比較により、自身のプロセッサの処理が、自身のローカルタイマー６０ｂが計測するローカルタイムが、他のプロセッサのローカルタイマー６０ｂが計測するローカルタイムよりも大きいことにより、他のプロセッサの処理と比べて一定時間進んでいるか否かを判定する。プロセッサ７は、自身のプロセッサ７の処理が一定時間進んでいる場合にはステップＳ２３に、遅れていない場合にはステップＳ２１に戻る。
【００４１】
ステップＳ２３において、プロセッサ７は、自身のプロセッサのクロック周波数および電圧値の少なくとも一方を制御して、処理を抑制させる。例えば、プロセッサ７は、クロック供給部９０を制御して、クロックを所定値に減少させる。また、例えば、プロセッサ７は、電源電圧が可変の情報処理装置において、電源電圧を減少すればよい。例えば、プロセッサ７は、電源電圧を可変範囲での最小値としてもよい。
【００４２】
ステップＳ２４において、プロセッサ７は、各プロセッサでの処理がすべて完了したか否かを判定する。プロセッサ７は、各プロセッサでの処理がすべて完了していない場合には、ステップＳ２１に戻る。プロセッサ７は、各プロセッサでの処理がすべて完了した場合には、プロセッサの実行制御処理を終了する。
【００４３】
プロセッサ７は、自身のプロセッサが実行するスレッドの処理時間が、他のプロセッサのローカルタイムと比較して大きい場合には、処理を抑制させる。遅れが生じた他のプロセッサに合わせて処理を抑制させるため、プロセッサ７は、クロック周波数を下げる。その結果、並列コンピューティングシステム全体の消費電力を低減することができる。
【符号の説明】
【００４４】
１    情報処理装置
２    主記憶
３    メモリバス
４    メインクロック供給回路
５    グローバルタイムレジスタ
６ａ、６ｂ、６ｃ  ローカルタイムレジスタ
７ａ、７ｂ、７ｃ  プロセッサ
８ａ、８ｂ、８ｃ  電力供給回路
９ａ、９ｂ、９ｃ  クロック供給回路
１０ａ、１０ｂ、１０ｃ  クロック制御レジスタ
１１ａ、１１ｂ、１１ｃ  電圧制御レジスタ
２１  比較部
２２  制御部
５０  グローバルタイマー
６０ａ、６０ｂ、６０ｃ  ローカルタイマー
８０ａ、８０ｂ、８０ｃ  電源供給部
９０ａ、９０ｂ、９０ｃ  クロック供給部
【図１】
2015046020.tif 000003
【図２】
2015046020.tif 000004
【図３】
2015046020.tif 000005
【図４】
2015046020.tif 000006
【図５】
2015046020.tif 000007