(57)【要約】  本発明は、処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置に関する。本発明に係る並列計算装置は、新たにコアを起動させて前記新たなコアと稼動中のコアとに前記複数のタスクを割り当てる場合、前記稼動中のコアの演算周波数を高くする。
2014061141.tif 000002
【特許請求の範囲】
【請求項１】
処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置であって、
前記並列計算装置は、新たに起動される新たなコアと稼動中のコアとに前記複数のタスクを割り当てる場合、前記稼動中のコアの演算周波数を高くすることを特徴とする並列計算装置。
【請求項２】
前記並列計算装置は、前記新たなコアを起動するサイクルの次のサイクルにて前記新たなコアと前記稼動中のコアとに前記複数のタスクを割り当て、前記新たなコアを起動するサイクルの間、前記稼動中のコアの演算周波数を高くすることを特徴とする請求項１に記載の並列計算装置。
【請求項３】
前記並列計算装置は、前記新たなコアを起動するサイクルにて前記新たなコアと前記稼動中のコアとに前記複数のタスクを割り当てるとともに、前記サイクルの間、前記稼動中のコアの演算周波数を高くすることを特徴とする請求項１に記載の並列計算装置。
【請求項４】
前記並列計算装置は、前記新たなコアを起動した次の前記サイクルの間、前記新たなコアの演算周波数も高くすることを特徴とする請求項３に記載の並列計算装置。
【請求項５】
処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置であって、
前記並列計算装置は、稼動中のコアのうち一部のコアを休止させて継続して稼動させるコアに前記複数のタスクを割り当てる場合、前記継続して稼動させるコアの演算周波数を高くすることを特徴とする並列計算装置。
【請求項６】
前記並列計算装置は、前記一部のコアを休止させるサイクルにて前記継続して稼動させるコアに前記複数のタスクを割り当てるとともに、前記サイクルの間、前記継続して稼動させるコアの演算周波数を高くすることを特徴とする請求項５に記載の並列計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアタイプの並列計算装置に関する。詳しくは、処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置に関する。
【背景技術】
【０００２】
演算周波数が可変のＣＰＵコアを備える計算装置の場合、計算装置の演算能力、具体的には、単位時間当たりの演算量は、コアの演算周波数を高めることによって高くすることができる。しかし、コアの演算周波数を高くするほど、コアで消費される電力は大きくなる。しかも、コアの演算周波数と演算能力との関係は略線形であるのに対し、演算周波数の変化に対する消費電力の変化率は演算周波数が高くなるほど大きくなる。このため、消費電力に対する演算能力、すなわち、電力効率の観点では、演算周波数の高周波数化による高性能化には限界があった。【０００３】
そこで、近年では、１つの半導体チップ上に複数のコアを搭載したマルチコアタイプの並列計算装置が注目されている。マルチコアタイプの並列計算装置によれば、処理すべきタスクが複数存在する場合、それらを複数のコアに割り当てて並列計算することにより、１コア当りの演算負荷を低減することができる。すなわち、同じ量の演算を処理するのであれば、マルチコアタイプの並列計算装置は、シングルコアタイプの計算装置に比較して各コアの演算周波数を低くすることができる。コアの電力効率は演算周波数が高くなるほど低下することから、マルチコアタイプの並列計算装置によれば、シングルコアタイプの計算装置よりも計算装置全体としての電力効率を高めることができる。【０００４】
ただし、計算装置の電力効率に関する上記の理屈は、必ずしも全ての状況で成立するものではない。実際には複数のタスクをマルチコアタイプの並列計算装置で並列計算する場合、タスクの処理に要する演算時間とは別にコア間通信に伴うオーバーヘッドが発生する。このため、処理するタスクの数は同じであっても、その処理のための演算時間の総和はマルチコアタイプの並列計算装置の方がシングルコアタイプの計算装置よりも大きくなる。タスク処理のための演算量が多いときには、全体に対するオーバーヘッドの割合は小さいため、上述のように、マルチコアタイプの並列計算装置の方が高い電力効率を得ることができる。しかしながら、タスク処理のための演算量が少ないときには、全体に対するオーバーヘッドの割合が大きくなるため、逆にシングルコアタイプの計算装置の方が電力効率は高くなる。【０００５】
以上の例では、シングルコアタイプの計算装置とマルチコアタイプの並列計算装置との比較について述べたが、電力効率に関する上述の問題は、マルチコアタイプの並列計算装置において稼動コア数を変更する場合にも当てはまる問題でもある。マルチコアタイプの並列計算装置において稼動コア数を変更する場合、稼動コア数に応じてコア間通信に伴うオーバーヘッドが増減するからである。この点に関し、先行技術である特開２００６−３４４１６２号公報に開示された並列計算装置は、複数のコアによる消費電力量の合計が最小になるように、並列処理によるオーバーヘッドを考慮して稼動するコアの数と演算周波数とを決定するようになっている。【０００６】
しかしながら、上記先行技術には問題がある。その問題とは処理すべきタスクの抜けが発生しうることである。コアを新たに稼動する場合、その起動にはある程度の時間を要する。このため、稼動コア数を増やす必要が生じてから、実際に新たなコアが稼動し、その新たなコアを含む複数のコアにタスクが割り当てられるようになるまでには、コアの起動処理に起因するタイムラグが生じることになる。このタイムラグの間は、既に稼動中のコアのみで全てのタスクを処理することになる。繰り返し処理されるタスクの場合、その処理完了時間には制約があるため、オーバーヘッドと演算時間とを含む必要処理時間と、要求されている処理完了時間との関係によっては、一部のタスクが処理完了時間内で処理しきれない可能性がある。【０００７】
また、稼動中のコアのうちの一部のコアを休止する場合にもタスクの抜けが発生する可能性がある。コアを休止する場合には、演算に必要な情報が休止させるコアから継続して稼動させるコアに送信される。このため、ある演算サイクルにおいてコアを休止する場合、休止処理に伴うコア間通信によってオーバーヘッドが発生し、継続して稼動されるコアの演算時間にそのオーバーヘッドが加算されることになる。結果、オーバーヘッドと演算時間とを含む必要処理時間と、要求されている処理完了時間との関係によっては、一部のタスクが処理完了時間内で処理しきれない可能性がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−３４４１６２号公報
【発明の概要】
【０００９】
本発明は、処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置において、前記複数のタスクの処理に使用するコアの数を増減させる際に生じうるタスクの抜けを防止することを課題とする。そして、そのような課題を達成するために、本発明は次のようなマルチコアタイプの並列計算装置を提供する。
【００１０】
本発明が提供する第１の並列計算装置は、新たにコアを起動させてその新たなコアと稼動中のコアとに処理対象タスクを割り当てる場合、稼動中のコアの演算周波数を高くする。演算周波数が高くなれば稼動中のコアの演算能力は高まることから、要求されている処理完了時間が短くなったとしても、或いは、新たなコアの起動に伴うコア間通信によってオーバーヘッドが増大したとしても、要求されている処理完了時間内で全てのタスクを処理できるようになる。
【００１１】
新たにコアを起動させる場合、好ましくは、新たなコアを起動するサイクルの次のサイクルにて新たなコアと稼動中のコアとに処理対象タスクを割り当てる。そして、好ましくは、新たなコアを起動するサイクルの間、稼動中のコアの演算周波数を一時的に高くする。これによれば、コアの演算周波数を高める時間を短くして消費電力の増大を最小限に抑えながら、タスク処理に使用するコアの数を増やす際のタスクの抜けを防止することができる。
【００１２】
新たにコアを起動させる場合、その起動サイクルにて新たなコアと稼動中のコアとに処理対象である複数のタスクを割り当てるとともに、同起動サイクルの間、稼動中のコアの演算周波数を一時的に高くすることも好ましい。より好ましくは、新たなコアを起動した後の同起動サイクルの間、新たなコアの演算周波数も一時的に高くする。これによれば、コアの演算周波数を高める時間を短くして消費電力の増大を最小限に抑えながら、タスク処理に使用するコアの数を増やす際のタスクの抜けを防止することができる。
【００１３】
本発明が提供する第２の並列計算装置は、稼動中のコアのうち一部のコアを休止させて継続して稼動させるコアに処理対象タスクを割り当てる場合、継続して稼動させるコアの演算周波数を高くする。演算周波数が高くなれば継続して稼動されるコアの演算能力は高まることから、一部のコアの休止に伴うコア間通信によってオーバーヘッドが生じたとしても、要求されている処理完了時間内で全てのタスクを処理できるようになる。
【００１４】
一部のコアを休止させる場合、好ましくは、一部のコアを休止させるサイクルにおいて継続して稼動させるコアに対し処理対象タスクを割り当てる。そして、好ましくは、一部のコアを休止させるサイクルの間、継続して稼動させるコアの演算周波数を一時的に高くする。これによれば、コアの演算周波数を高める時間を短くして消費電力の増大を最小限に抑えながら、タスク処理に使用するコアの数を減らす際のタスクの抜けを防止することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１の並列計算装置の構成の概略を示す図である。
【図２】演算周波数が可変のコアの周波数−消費電力特性を示す図である。
【図３】マルチコアタイプの並列計算装置における単位時間当たり要求演算量と要求演算周波数との関係を示す図である。
【図４】演算負荷が大きい場合の１コア時の合計消費電力と２コア時の合計消費電力とを比較する図である。
【図５】演算負荷が小さい場合の１コア時の合計消費電力と２コア時の合計消費電力とを比較する図である。
【図６】合計消費電力と要求演算周波数との関係を１コア時と２コア時とで比較して示す図である。
【図７】稼動コア数を１コアから２コアに増やす場合に生じうる問題について説明するための図である。
【図８】稼動コア数を２コアから１コアに減らす場合に生じうる問題について説明するための図である。
【図９】本発明の実施の形態１による追加コアの起動時の制御方法を説明するための図である。
【図１０】本発明の実施の形態１の並列計算装置により追加コアの起動時に実行されるルーチンを示すフローチャートである。
【図１１】本発明の実施の形態１による一部コアの休止時の制御方法を説明するための図である。
【図１２】本発明の実施の形態１の並列計算装置により一部コアの休止時に実行されるルーチンを示すフローチャートである。
【図１３】本発明の実施の形態２による追加コアの起動時の制御方法を説明するための図である。
【図１４】本発明の実施の形態２の並列計算装置により追加コアの起動時に実行されるルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１６】
実施の形態１．
本発明の実施の形態１の並列計算装置について図を参照して説明する。
【００１７】
本実施の形態の並列計算装置は、マルチコアプロセッサを用いてエンジン制御にかかるアクチュエータの制御目標値を演算する並列計算装置である。本実施の形態の並列計算装置が適用される自動車用エンジンの種類や構造に限定は無い。例えば、ガソリンエンジン、ディーゼルエンジン、自然吸気エンジン、過給エンジン等、様々な自動車用エンジンに適用することができる。また、本実施の形態の並列計算装置が演算する制御目標値の種類や数にも限定は無い。例えば、スロットル、点火装置、可変バルブタイミング装置、インジェクタ、ウエストゲートバルブ等、様々なアクチュエータの制御目標値の演算に適用することができる。
【００１８】
図１は、本実施の形態の並列計算装置の構成の概略を示す図である。並列計算装置１００には、エンジンに備えられる複数のセンサからエンジンの運転状態や運転環境に関する各種の情報が入力される。並列計算装置１００はそれらの情報に基づいて各アクチュエータに指示する制御目標値を計算する。並列計算装置１００は複数のコア１０２を有するマルチコアタイプの並列計算装置である。各コア１０２は、キャッシュ付きのＣＰＵ１０４とローカルメモリ１０６とを備えている。ローカルメモリ１０６には、ＣＰＵ１０４で実行される各種のプログラムとそのプログラムの実行時に使用される各種のデータが記憶されている。コア１０２同士はバス１１０で接続されている。バス１１０を経由してコア１０２間での通信が行われる。図示は省略するが、バス１１０にはコア間で共有される共有メモリも接続されている。また、各コア１０２には、駆動電圧を制御して演算周波数を変化させることのできる周波数・電圧制御ユニット１０８が備えられている。
【００１９】
図２は、本実施の形態の並列計算装置が備えるコアの周波数−消費電力特性を示す図である。コアの消費電力は演算周波数が高くなるにつれて大きくなる傾向がある。また、演算周波数の変化に対する消費電力の変化率は演算周波数が高くなるほど大きくなる。
【００２０】
図３は、１コア当りの単位時間当り要求演算量と要求演算周波数との関係について示す図である。単位時間当り要求演算量は、処理すべきタスクの数と要求される処理完了時間とによって決まる。エンジン制御では、様々なアクチュエータの制御目標値の演算のため、複数のタスクが燃焼サイクルごとに繰り返し実行される。つまり、エンジン制御におけるタスクの処理のサイクルはエンジンの燃焼サイクルに一致する。このため、エンジン制御では１つの燃焼サイクル内で全てのタスクの処理を完了することが求められる。つまり、エンジン制御にかかる複数のタスクの処理完了時間には、燃焼サイクルの時間により決まる制約がある。
【００２１】
図３に示すように、演算に使用するコアの数が一定の場合、単位時間当り要求演算量と要求演算周波数との関係は線形関係である。ここで、要求されている演算量を１つのコアで処理する場合の要演算周波数をｆ１とする。同じ演算量を２つのコアで処理する場合、１つのコア当りの演算量は半分になる。しかしながら、各コアに対する要求演算周波数はｆ１の半分であるｆ１／２にはならず、ｆ１／２よりも高い周波数のｆ２となる。これは、関連する演算を２つのコアに分散させて行う場合には、演算に用いる情報のやり取りのために２つのコア間で通信が必要となり、コア間通信によるオーバーヘッドが発生するためである。オーバーヘッドの分だけ各コアにおける見かけの要求演算量は大きくなり、見かけの要求演算量が大きくなることで要求演算周波数はｆ１／２よりも高いｆ２になるのである。
【００２２】
コア数を１コアから２コアに増やした場合、消費電力量はコア２つ分となる。しかし、１コア当りの消費電力量が１コア時の半分以下であれば、２コア時の合計消費電力量は１コア時の合計消費電力量よりも小さくなり、並列計算による低消費電力化のメリットを享受することができる。消費電力量は演算周波数によって決まる。１コア時の合計消費電力量は周波数−消費電力特性において周波数ｆ１に対応する消費電力量であり、２コア時の合計消費電力量は周波数−消費電力特性において周波数ｆ２に対応する消費電力量の２倍である。１コア時の合計消費電力と２コア時の合計消費電力のどちらが小さいかは、単位時間当り要求演算量、すなわち、並列演算装置にかかる演算負荷の大きさにかかっている。
【００２３】
図４は、演算負荷が大きい場合の１コア時の合計消費電力と２コア時の合計消費電力とを比較する図である。コアの周波数−消費電力特性によれば、演算周波数が高くなるほど演算周波数の変化に対する消費電力の変化率が大きくなる。このため、演算負荷が大きく演算周波数ｆ１が高い場合には、図４に示すように演算周波数ｆ２に対応する消費電力量は演算周波数ｆ１に対応する消費電力量の半分より小さくなる。よって、演算負荷が大きいときには、１コア時の合計消費電力よりも２コア時の合計消費電力のほうが小さくなる傾向にある。
【００２４】
一方、図５は、演算負荷が小さい場合の１コア時の合計消費電力と２コア時の合計消費電力とを比較する図である。演算負荷が小さく演算周波数ｆ１が低い場合には、図５に示すように演算周波数ｆ２に対応する消費電力量は演算周波数ｆ１に対応する消費電力量の半分より大きくなる。よって、演算負荷が小さいときには、２コア時の合計消費電力よりも１コア時の合計消費電力のほうが小さくなる傾向にある。
【００２５】
図６は、合計消費電力と要求演算周波数との関係を１コア時と２コア時とで比較して示すグラフである。このグラフにおける要求演算周波数は、ある単位時間当り要求演算量を１つのコアで処理する場合に要求される演算周波数である。その場合の消費電力が１コア時の合計消費電力であり、同要求演算量を１コアから２コアにコア数を増やして処理する場合の消費電力が２コア時の合計消費電力である。このグラフに示すように、１コア時の合計消費電力と２コア時の合計消費電力とはある閾値周波数ｆｃにおいて等しく、演算周波数が閾値周波数ｆｃより高ければ２コア時の合計消費電力のほうが１コア時の合計消費電力よりも低くなる。逆に、演算周波数が閾値周波数ｆｃより低ければ１コア時の合計消費電力のほうが２コア時の合計消費電力よりも低くなる。
【００２６】
以上のことから分かるように、並列計算装置に閾値周波数ｆｃを予め記憶しておき、要求演算周波数が閾値周波数ｆｃより高いか低いかを判断基準にしてコア数を選択することにより、並列計算装置の低消費電力化を図ることができる。つまり、要求演算周波数が閾値周波数ｆｃよりも高い場合には、２つのコアによる並列計算を選択することによって消費電力をより低く抑えることができる。逆に、要求演算周波数が閾値周波数ｆｃより低い場合には、２つのコアで並列計算を行うよりも１つのコアで計算を行ったほうが消費電力をより低く抑えることができる。
【００２７】
ただし、単にコア数の切り替えを行うだけではある問題が生じる。その問題について図７及び図８を用いて解説する。なお、以下に解説する問題は、あくまでも本発明の創案過程において検討された並列計算装置（比較例）において見られた問題である。本実施の形態の並列計算装置では、後述するように問題に対する解決策が施されている。
【００２８】
図７は、１つのコア（コア１）のみでタスクの処理を行っていた場合に、追加のコア（コア２）を新たに起動する際に生じる問題について説明するための図である。並列計算装置は、エンジン回転数とその変化率とに基づいて次の燃焼サイクルの時間を計算する。ここでは、今回の燃焼サイクルの時間Ｔ１に対して次回の燃焼サイクルの時間Ｔ２が短くなった場合について検討する。並列計算装置は、燃焼サイクルの時間を処理完了時間として単位時間当り演算量を計算し、単位時間当り演算量から要求演算周波数を計算する。つまり、処理完了時間の制約を満たす範囲内で消費電力を最小にできる演算周波数を要求演算周波数として算出する。処理すべきタスクの演算量が一定の場合、処理完了時間である燃焼サイクルの時間がＴ１からＴ２へ短くなれば、単位時間当り演算量は増大して要求演算周波数は高くなる。要求演算周波数が閾値周波数ｆｃよりも高くなることが予想された場合、並列計算装置はコア２を起動させることを判断し、次回サイクルにおいてコア２の起動処理を実行する。
【００２９】
コア１に加えてコア２が起動することで、処理すべきタスクは２つのコアに分散して割り当てられる。関連するタスクを分散させることでコア間通信によるオーバーヘッドが発生するが、オーバーヘッドとタスク処理にかかる演算時間との合計時間が燃焼サイクル時間Ｔ２と一致するように各コアの演算周波数が決定される。１コア時の要求演算周波数が閾値周波数ｆｃよりも高い場合には、このように２つのコアによる並列計算に切り替えることにより、１つのコアでタスクを処理する場合に比較して並列計算装置全体での低消費電力化が可能となる。
【００３０】
ただし、上記の並列計算によるメリットが得られるのは、コア２が起動した以降のサイクルに限られる。コア２の実際の起動は、起動処理を実行したサイクルの次のサイクルとなる。このため、コア２の起動処理が実行されるサイクルでは、稼動中のコア１のみで全てのタスクを処理しなければならない。しかし、コア１の演算周波数は前回の処理完了時間に対して最適化されているため、今回の処理完了時間内では全てのタスクを処理することができない。タスクは優先度を付けて実行されるため、優先度が低いタスクは処理されるずに残ってしまう。つまり、１つのコアによる計算から２つのコアによる並列計算に切り替える場合、単純に追加のコアを起動するだけではタスクの抜けが発生してしまう。
【００３１】
図８は、２つのコアによる並列計算でタスクの処理を行っていた場合に、一方のコア（コア２）を休止する際に生じる問題について説明するための図である。ここでは、今回の燃焼サイクルの時間Ｔ３に対して次回の燃焼サイクルの時間Ｔ４が長くなった場合について検討する。処理すべきタスクの演算量が一定の場合、処理完了時間である燃焼サイクルの時間がＴ３からＴ４へ長くなれば、単位時間当り演算量は減少して要求演算周波数は低くなる。並列計算装置はタスクの処理にかかる演算量と処理完了時間とから全てのタスクを１つのコアで処理する場合の要求演算周波数を計算する。そして、１コア時の要求演算周波数が閾値周波数ｆｃよりも低くなることが予想された場合、並列計算装置はコア２を休止させることを判断し、次回の燃焼サイクルにおいてコア２の休止処理を実行する。
【００３２】
コア２が休止することで、処理すべきタスクは継続して稼動されるコア１に割り当てられる。タスク処理に使用するコアが１つのみであればコア間通信によるオーバーヘッドは発生しないため、並列計算装置はタスクの処理にかかる演算時間が燃焼サイクル時間Ｔ４と一致するようにコア１の演算周波数を決定する。１コア時の要求演算周波数が閾値周波数ｆｃよりも低い場合には、このように１つのコアのみによる計算に切り替えることにより、２つのコアによる並列計算を行う場合に比較して並列計算装置全体での低消費電力化が可能となる。
【００３３】
ただし、コア２を休止させるサイクルのみ、コア１のみを稼動させるにも関わらずコア間通信によるオーバーヘッドが発生する。コア２を休止させるのであれば、コア２が担当していたタスクの処理に必要な情報をコア２からコア１に引き継いでからコア２を休止させる必要がある。このため、コア２を休止させるサイクルでは、情報の引継ぎのためのコア間通信が発生することになり、そのコア間通信によるオーバーヘッドがコア１の演算時間に加算されることになる。ところが、並列計算装置は、燃焼サイクル時間Ｔ４内で消費電力を最小にできる演算周波数をコア１の要求演算周波数として設定している。このため、演算時間にオーバーヘッドが加算された場合には、優先度の低い一部のタスクについては処理完了時間内で処理しきれなくなる。つまり、２つのコアによる並列計算から１つのコアによる単独計算に切り替える場合、単純に不要なコアを休止するだけではタスクの抜けが発生してしまう。
【００３４】
以上述べた問題に対し、本実施の形態の並列制御装置では次のような解決策が採られている。
【００３５】
まず、追加コアの起動時に生じうるタスク抜け防止するために採られた制御方法から説明する。図９は、本実施の形態の並列制御装置による追加コアの起動時の制御方法を説明するための図である。ここでは、図７を用いて説明した比較例に対応させ、１つのコア（コア１）のみでタスクの処理を行っていた場合に、追加のコア（コア２）を新たに起動するケースを例に採って説明する。
【００３６】
本実施の形態の並列計算装置は、予想される次回の燃焼サイクル時間Ｔ２から次回サイクルの要求演算周波数を計算する。そして、次回サイクルの要求演算周波数が閾値周波数ｆｃよりも高いかどうかによって、コア２を起動させるかどうか判断する。そして、要求演算周波数が閾値周波数ｆｃよりも高い場合、次回サイクルにおいてコア２の起動処理を実行する。
【００３７】
本実施の形態の並列計算装置による制御方法と比較例との違いは、コア２の起動処理を実行するサイクル（以下、追加コア起動サイクル）でのコア１の演算周波数の設定である。コア１とコア２とにタスクが割り当てられて２つのコアによる並列計算が開始されるのは、追加コア起動サイクルの次回のサイクルである。追加コア起動サイクルでは引き続きコア１による単独計算が行われる。ただし、追加コア起動サイクルにおいて要求される処理完了時間は、燃焼サイクル時間Ｔ１ではなく燃焼サイクル時間Ｔ２に対応する時間である。燃焼サイクル時間Ｔ２は燃焼サイクル時間Ｔ１よりも短くなっているので、追加コア起動サイクルで要求される処理完了時間は前回サイクルの処理完了時間よりも短くなる。そこで、本実施の形態の並列計算装置は、追加コア起動サイクルでは、燃焼サイクル時間Ｔ１に対して最適化された演算周波数ではなく、それよりも高い演算周波数でコア１を動作させる。
【００３８】
演算周波数が高くなればコア１の演算能力は高まることから、コア１に対して要求される処理完了時間が短くなったとしても、その要求処理完了時間内で全てのタスクを処理できるようになる。つまり、本実施の形態の並列計算装置によれば、タスク処理に使用するコアの数を増やす際のタスクの抜けを防止することができる。なお、追加コア起動サイクルでのコア１の演算周波数としては、予想される燃焼サイクル時間Ｔ２に対して最適化された演算周波数、つまり、処理完了時間が燃焼サイクル時間Ｔ２を越えない範囲内で消費電力を最小にできる演算周波数であることが好ましい。
【００３９】
以上説明した追加コアの起動時の制御方法は、本実施の形態の並列計算装置により図１０のフローチャートに示すルーチンが実行されることにより実施される。このルーチンは１つのコアによる単独計算が行われている場合に実行される。
【００４０】
図１０のフローチャートの最初のステップＳ１０２では、追加コアの起動の要否が判断される。追加コアの起動要否の判断には、次の燃焼サイクルで処理すべきタスクの演算量と、エンジン回転数から予想される次の燃焼サイクルの時間とが情報として用いられる。それらの情報に基づいて全てのタスクを１コアで処理した場合の単位時間当り要求演算量が計算され、さらに、単位時間当り演算量から要求演算周波数が計算される。要求演算周波数が閾値周波数ｆｃよりも高いかどうかが、追加コアの起動要否を判断する際の判断基準となる。
【００４１】
ステップＳ１０４では、上述の判断基準に照らして追加コアを起動するかどうか決定される。追加コアを起動する場合には、ステップＳ１０６の処理が実行される。
【００４２】
ステップＳ１０６では、追加コアの起動要否を判断したサイクルの次のサイクルにおいて追加コアの起動処理が実施される。また、同サイクルでは、稼動中のコアの駆動電圧を一時的に上げることが行われる。コアの演算周波数は駆動電圧に比例するので、駆動電圧を上げることで演算周波数は高くなる。演算周波数を高めてコアの演算能力を上昇させることで、要求される処理完了時間内で全てのタスクの処理を完了することができる。
【００４３】
追加コアを起動しない場合には、上述のステップＳ１０６の処理はスキップされる。この場合、引き続き稼動中の１コアのみでタスクの処理が行われる。また、追加コア起動サイクルの後のサイクルでは、２つのコアにタスクが割り当てられ、２つのコアを用いた並列計算によってタスクの処理が行われる。並列計算によれば各コアの演算周波数を下げることができるので、各コアの駆動電圧も下げることができる。よって、追加コアの起動に伴い駆動電圧及び演算周波数を高くする期間は、長くとも追加コア起動サイクルの期間、つまり一時的な期間で良い。
【００４４】
次に、一部コアの休止時に生じうるタスク抜け防止するために採られた制御方法について説明する。図１１は、本実施の形態の並列制御装置による一部コアの休止時の制御方法を説明するための図である。ここでは、図８を用いて説明した比較例に対応させ、２つのコアによる並列計算でタスクの処理を行っていた場合に、一方のコア（コア２）を休止するケースを例に採って説明する。
【００４５】
本実施の形態の並列計算装置は、コア１のみを稼動させる場合の要求演算周波数を予想される次回の燃焼サイクル時間Ｔ４から計算する。そして、次回サイクルの要求演算周波数が閾値周波数ｆｃよりも低いかどうかによって、コア２を休止させるかどうか判断する。そして、要求演算周波数が閾値周波数ｆｃよりも低い場合、次回サイクルにおいてコア２の休止処理を実行する。
【００４６】
本実施の形態の並列計算装置による制御方法と比較例との違いは、コア２の休止処理を実行するサイクル（以下、コア休止サイクル）でのコア１の演算周波数の設定である。コア休止サイクルでは、コア１のみにタスクが割り当てられ、コア１とコア２による並列計算からコア１による単独計算に切り替えられる。このため、コア１が担当するタスク数は並列計算時よりも多くなり、コア１に要求される演算周波数は並列計算時よりも高くなる。さらに、コア休止サイクルでは、休止するコア２から継続して稼動するコア１への情報の引継ぎのため、並列計算時と同様にオーバーヘッドが発生する。このため、コア休止サイクルにおけるコア１の見かけの演算量は、オーバーヘッドの分だけ通常の単独計算時よりも増大する。そこで、本実施の形態の並列計算装置は、コア休止サイクルでは、燃焼サイクル時間Ｔ４に対して最適化された演算周波数ではなく、それよりも高い演算周波数でコア１を動作させる。
【００４７】
演算周波数が高くなればコア１の演算能力は高まることから、コア２の休止処理に伴うオーバーヘッドの分だけ見かけの演算量が増大したとしても、燃焼サイクル時間Ｔ４から決まる要求処理完了時間内で全てのタスクを処理できるようになる。つまり、本実施の形態の並列計算装置によれば、タスク処理に使用するコアの数を減らす際のタスクの抜けを防止することができる。
【００４８】
以上説明した一部コアの休止時の制御方法は、本実施の形態の並列計算装置により図１２のフローチャートに示すルーチンが実行されることにより実施される。このルーチンは２つのコアによる並列計算が行われている場合に実行される。
【００４９】
図１２のフローチャートの最初のステップＳ２０２では、稼動中のコアのうち一部コアを休止させることの要否が判断される。一部コアの休止要否の判断には、次の燃焼サイクルで処理すべきタスクの演算量と、エンジン回転数から予想される次の燃焼サイクルの時間とが情報として用いられる。それらの情報に基づいて全てのタスクを１コアで処理した場合の単位時間当り要求演算量が計算され、さらに、単位時間当り演算量から要求演算周波数が計算される。要求演算周波数が閾値周波数ｆｃよりも低いかどうかが、一部コアの休止要否を判断する際の判断基準となる。
【００５０】
ステップＳ２０４では、上述の判断基準に照らして一部コアを休止するかどうか決定される。一部コアを休止する場合には、ステップＳ２０６の処理が実行される。
【００５１】
ステップＳ２０６では、一部コアの休止要否を判断したサイクルの次のサイクルにおいて一部コアの休止処理が実施される。また、同サイクルでは、継続して稼動されるコアの駆動電圧を一時的に上げて同コアの演算周波数を高めることが行われる。演算周波数を高めてコアの演算能力を上昇させることで、要求される処理完了時間内で全てのタスクの処理を完了することができる。
【００５２】
一部コアを休止しない場合には、上述のステップＳ２０６の処理はスキップされる。この場合、引き続き２つのコアによる並列計算が行われる。また、コア休止サイクルの後のサイクルでは、継続して稼動する１コアのみによる単独計算によってタスクの処理が行われる。一部コアの休止に伴うオーバーヘッドはコア休止サイクルでのみ発生するので、コア休止サイクルより後のサイクルでは、コアの演算周波数はタスク処理のための演算量と要求処理完了時間とから決まる最低の演算周波数で良い。よって、一部コアの休止に伴い駆動電圧及び演算周波数を高くする期間は、長くともコア休止サイクルの期間、つまり一時的な期間で良い。
【００５３】
実施の形態２．
次に、本発明の実施の形態２の並列計算装置について図を参照して説明する。
【００５４】
本実施の形態の並列制御装置と実施の形態１の並列制御装置とは、追加コアの起動時に生じうるタスク抜け防止するために採られた制御方法において違いがある。図１３は、本実施の形態の並列制御装置による追加コアの起動時の制御方法を説明するための図である。ここでは、図７を用いて説明した比較例に対応させ、１つのコア（コア１）のみでタスクの処理を行っていた場合に、追加のコア（コア２）を新たに起動するケースを例に採って説明する。
【００５５】
本実施の形態の並列計算装置は、予想される次回の燃焼サイクル時間Ｔ２から次回サイクルの要求演算周波数を計算する。そして、次回サイクルの要求演算周波数が閾値周波数ｆｃよりも高いかどうかによって、コア２を起動させるかどうか判断する。そして、要求演算周波数が閾値周波数ｆｃよりも高い場合、次回サイクルにおいてコア２の起動処理を実行する。さらに、同サイクルにおいてコア１とコア２にタスクを割り当て、コア１とコア２を用いた並列計算を開始する。つまり、本実施の形態では、コア２の起動処理を実行する追加コア起動サイクルにて並列計算によるタスクの処理を開始する。
【００５６】
コア１とコア２による並列計算を行うサイクルでは、処理完了時間が燃焼サイクル時間Ｔ２を越えない範囲内で消費電力を最小にできる演算周波数が各コアの要求演算周波数として設定される。要求演算周波数の計算には、各コアに割り当てられたタスクの処理のための演算量に加えて、コア間通信によるオーバーヘッドが考慮されている。ただし、追加コア起動サイクルでは、コア２のみ、コア間通信及び並列計算に先立って起動処理が必要となる。また、追加コア起動サイクルでは、コア１による演算もコア２が起動してコア間通信が可能になるまでは開始することができない。このため、追加コア起動サイクルにおいて各コアが実質的にコア間通信及び並列計算に用いることができる時間は、燃焼サイクル時間Ｔ２からコア２の起動処理に要する時間を除いた時間となる。つまり、追加コア起動サイクルで要求される実質的な処理完了時間は、コア２の起動が完了している次回以降のサイクルの処理完了時間よりも短くなる。そこで、本実施の形態の並列計算装置は、追加コア起動サイクルでは、燃焼サイクル時間Ｔ２に対して最適化された演算周波数ではなく、それよりも高い演算周波数でコア１及びコア２を動作させる。
【００５７】
演算周波数が高くなれば各コアの演算能力は高まることから、各コアに対して要求される実質的な処理完了時間がコア２の起動時間の分だけ短いとしても、その実質的な要求処理完了時間内で全てのタスクを処理できるようになる。つまり、本実施の形態の並列計算装置によれば、実施の形態１の並列計算装置と同様に、タスク処理に使用するコアの数を増やす際のタスクの抜けを防止することができる。
【００５８】
以上説明した追加コアの起動時の制御方法は、本実施の形態の並列計算装置により図１４のフローチャートに示すルーチンが実行されることにより実施される。このルーチンは１つのコアによる単独計算が行われている場合に実行される。なお、図１４のフローチャートに示す各処理のうち、実施の形態１のフローチャートと共通する処理には同一のステップ番号が付されている。
【００５９】
図１４のフローチャートの最初のステップＳ１０２では、追加コアの起動の要否が判断される。そして、ステップＳ１０４では、ステップＳ１０２の判断結果に基づいて追加コアを起動するかどうか決定される。ステップＳ１０２及びＳ１０４の内容は実施の形態１で述べた通りである。追加コアを起動する場合には、ステップＳ１０８の処理が実行される。
【００６０】
ステップＳ１０８では、追加コアの起動要否を判断したサイクルの次のサイクルにおいて追加コアの起動処理が実施される。追加コアの起動が完了すると、続けてステップＳ１１０の処理が実行される。
【００６１】
ステップＳ１１０では、追加コア起動サイクルにおいて稼動中のコアと追加コアの両方にタスクを割り当て、２つのコアを用いた並列計算を開始する。また、その際、稼動中のコアの駆動電圧と追加コアの駆動電圧をともに一時的に上げて両コアの演算周波数を高めることが行われる。演算周波数を高めて両コアの演算能力を上昇させることで、要求される処理完了時間内で全てのタスクの処理を完了することができる。
【００６２】
追加コアを起動しない場合には、上述のステップＳ１０８及びＳ１１０の処理はスキップされる。この場合、引き続き稼動中の１コアのみでタスクの処理が行われる。また、追加コア起動サイクルの後のサイクルでは、追加コア起動サイクルに引き続き２つのコアを用いた並列計算によってタスクの処理が行われる。ただし、追加コアの起動処理のために実質的な処理完了時間は短くなるのは追加コア起動サイクルのみであり、それ以降のサイクルでは燃焼サイクル時間Ｔ２に対して最適化された演算周波数に設定することができる。よって、追加コアの起動に伴い駆動電圧及び演算周波数を高くする期間は、長くとも追加コア起動サイクルの期間、つまり一時的な期間で良い。
【００６３】
その他．
本発明は上述の実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。例えば次のように変形して実施してもよい。
【００６４】
実施の形態１では、新たにコアを起動する場合、追加コア起動サイクルの期間、稼動中のコアの駆動電圧を上げて演算周波数を高めている。しかし、駆動電圧を上げて演算周波数を高める期間は、稼動中のコアが実際にタスクの処理のための演算を実行している期間に限定してもよい。
【００６５】
また、実施の形態１では、一部のコアを休止する場合、コア休止サイクルの期間、継続して稼動するコアの駆動電圧を上げて演算周波数を高めている。しかし、駆動電圧を上げて演算周波数を高める期間は、継続して稼動するコアが実際にタスクの処理のための演算を実行している期間に限定してもよい。
【００６６】
実施の形態２では、新たにコアを起動する場合、追加コア起動サイクルの期間、稼動中のコアと追加コアの両方の駆動電圧を上げて演算周波数を高めている。しかし、駆動電圧を上げて演算周波数を高める期間は、稼動コアと追加コアのそれぞれが実際にタスクの処理のための演算を実行している期間に限定してもよい。
【００６７】
実施の形態１の追加コアの起動時の制御方法は、複数のコアによる並列計算において新たにコアを追加する場合の制御にも応用することができる。並列計算に用いるコア数を増やす場合、追加コアの起動処理を行うサイクルにおいて稼動中の各コアに要求される処理完了時間は前サイクルよりも短くなる。この場合、稼動中の各コアの演算周波数を一時的に高くすることにより、要求されている処理完了時間内で全てのタスクを処理できるようになる。
【００６８】
実施の形態１の一部コアの休止時の制御方法は、複数のコアによる並列計算において一部のコアを休止する場合の制御にも適用することができる。並列計算に用いるコア数を減らす場合、休止させるコアから継続して稼動させる各コアへの情報の引継ぎのためのオーバーヘッドが発生する。この場合、継続して稼動させる各コアの演算周波数を一時的に高くすることにより、要求されている処理完了時間内で全てのタスクを処理できるようになる。
【００６９】
また、実施の形態２の追加コアの起動時の制御方法は、複数のコアによる並列計算において新たにコアを追加する場合の制御にも応用することができる。追加コアを起動するサイクルにて追加コアを用いた並列計算も開始する場合、追加コアの起動処理に要する時間の分だけ稼動中の各コア及び追加コアに要求される実質的な処理完了時間は短くなる。この場合、稼動中の各コア及び追加コアの演算周波数を一時的に高くすることにより、要求されている処理完了時間内で全てのタスクを処理できるようになる。
【符号の説明】
【００７０】
１００  並列計算装置
１０２  コア
１０４  ＣＰＵ
１０６  ローカルメモリ
１０８  周波数・電圧制御ユニット
１１０  バス
【図１】
2014061141.tif 000003
【図２】
2014061141.tif 000004
【図３】
2014061141.tif 000005
【図４】
2014061141.tif 000006
【図５】
2014061141.tif 000007
【図６】
2014061141.tif 000008
【図７】
2014061141.tif 000009
【図８】
2014061141.tif 000010
【図９】
2014061141.tif 000011
【図１０】
2014061141.tif 000012
【図１１】
2014061141.tif 000013
【図１２】
2014061141.tif 000014
【図１３】
2014061141.tif 000015
【図１４】
2014061141.tif 000016
【手続補正書】
【提出日】平成27年3月27日(2015.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置であって、
前記並列計算装置は、新たに起動される新たなコアと稼動中のコアとに前記複数のタスクを割り当てる場合、前記稼動中のコアの演算周波数を高くすることを特徴とする並列計算装置。
【請求項２】
前記並列計算装置は、前記新たなコアを起動するサイクルの次のサイクルにて前記新たなコアと前記稼動中のコアとに前記複数のタスクを割り当て、前記新たなコアを起動するサイクルの間、前記稼動中のコアの演算周波数を高くすることを特徴とする請求項１に記載の並列計算装置。
【請求項３】
前記並列計算装置は、前記新たなコアを起動するサイクルにて前記新たなコアと前記稼動中のコアとに前記複数のタスクを割り当てるとともに、前記サイクルの間、前記稼動中のコアの演算周波数を高くすることを特徴とする請求項１に記載の並列計算装置。
【請求項４】
前記並列計算装置は、前記新たなコアを起動した前記サイクルの間、前記新たなコアの演算周波数も高くすることを特徴とする請求項３に記載の並列計算装置。
【請求項５】
処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置であって、
前記並列計算装置は、稼動中のコアのうち一部のコアを休止させて継続して稼動させるコアに前記複数のタスクを割り当てる場合、前記継続して稼動させるコアの演算周波数を高くすることを特徴とする並列計算装置。
【請求項６】
前記並列計算装置は、前記一部のコアを休止させるサイクルにて前記継続して稼動させるコアに前記複数のタスクを割り当てるとともに、前記サイクルの間、前記継続して稼動させるコアの演算周波数を高くすることを特徴とする請求項５に記載の並列計算装置。
【手続補正書】
【提出日】平成28年6月1日(2016.6.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置であって、
前記並列計算装置は、新たに起動される新たなコアと稼動中のコアとに前記複数のタスクを割り当てる場合、前記新たなコアを起動するサイクルの次のサイクルにて前記新たなコアと前記稼動中のコアとに前記複数のタスクを割り当て、前記新たなコアを起動するサイクルの間、前記稼動中のコアの演算周波数を高くすることを特徴とする並列計算装置。
【請求項２】
処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置であって、
前記並列計算装置は、新たに起動される新たなコアと稼動中のコアとに前記複数のタスクを割り当てる場合、前記新たなコアを起動するサイクルにて前記新たなコアと前記稼動中のコアとに前記複数のタスクを割り当てるとともに、前記サイクルの間、前記稼動中のコアの演算周波数を高くすることを特徴とする並列計算装置。
【請求項３】
前記並列計算装置は、前記新たなコアを起動した前記サイクルの間、前記新たなコアの演算周波数も高くすることを特徴とする請求項２に記載の並列計算装置。
【請求項４】
処理完了時間が制約されている複数のタスクを演算周波数が可変の１又は複数のコアを用いて繰り返し処理するマルチコアタイプの並列計算装置であって、
前記並列計算装置は、稼動中のコアのうち一部のコアを休止させて継続して稼動させるコアに前記複数のタスクを割り当てる場合、前記一部のコアを休止させるサイクルにて前記継続して稼動させるコアに前記複数のタスクを割り当てるとともに、前記サイクルの間、前記継続して稼動させるコアの演算周波数を高くすることを特徴とする並列計算装置。
【国際調査報告】
2014061141.tif 000017
2014061141.tif 000018