JP5734941B2 - マルチコアプロセッサの制御プログラム、電子機器及び制御方法 - Google Patents

マルチコアプロセッサの制御プログラム、電子機器及び制御方法 Download PDF

Info

Publication number
JP5734941B2
JP5734941B2 JP2012247172A JP2012247172A JP5734941B2 JP 5734941 B2 JP5734941 B2 JP 5734941B2 JP 2012247172 A JP2012247172 A JP 2012247172A JP 2012247172 A JP2012247172 A JP 2012247172A JP 5734941 B2 JP5734941 B2 JP 5734941B2
Authority
JP
Japan
Prior art keywords
thread
core
threads
cores
priority
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.)
Active
Application number
JP2012247172A
Other languages
English (en)
Other versions
JP2014096024A (ja
Inventor
正樹 権藤
正樹 権藤
純一 立田
純一 立田
哲 鶴ヶ谷
哲 鶴ヶ谷
Original Assignee
イーソル株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by イーソル株式会社 filed Critical イーソル株式会社
Priority to JP2012247172A priority Critical patent/JP5734941B2/ja
Publication of JP2014096024A publication Critical patent/JP2014096024A/ja
Application granted granted Critical
Publication of JP5734941B2 publication Critical patent/JP5734941B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

この発明は、複数のコアを備えたマルチコアプロセッサの制御に関するものである。特に、多数のコアを組み込んだプロセッサにおいて、スループットの向上とリアルタイム性の確保とを両立することができる制御プログラム、電子機器及び制御方法に関する。
従来、この種のマルチコアプロセッサの多くは異種のコアを用いたものである。このような異種のコアを用いた構成は、特定のアプリケーション用途向けのコアを設けることで、消費電力当たりのパフォーマンスを向上するために採用されている。しかしながら、プロセス技術の急速な進歩などを考慮すると、特定のアプリケーション用途向けのチップの優位性を確保することはますます困難になると想定される。このような事情から、よりスケーラブルな構成、すなわち、均質なコアを組み込んだチップが増加すると考えられる。また、近年においては単一のチップに組み込むコアの数が増加する傾向にあり、このような均質なコアを用いた構成によればコア数が増加したとしても対応が容易であるので、コア数の増加を促進する構成としても期待されている。
ところで、ランタイムソフトウェアを管理するための最も一般的なアプローチは、オペレーティング・システムを使用することであり、マルチコアプロセッサの制御にはマルチコアプロセッサに対応したオペレーティング・システムが使用される。コアの数が最大4程度のマルチコア環境では、非対称型マルチプロセッシング(AMP)モデル、または、対称型マルチプロセッシング(SMP)モデルのいずれかで制御を行うオペレーティング・システムが使用される。
AMPは、スレッドが実行されるコアを固定する処理方法であり、スレッドマイグレーションやキャッシュ関連の問題などを回避し、処理のリアルタイム性を確保しやすいために広く使用されている。このAMPは、コアの数が比較的少ない場合には有利であるが、コアの数が増加していくと、コア間の通信、デバイスの共有、サービスの共有などの処理コストが許容できない問題として発生する。なお、ハイパーバイザベースのパーティション化モデルは原則としてAMPモデルであり、同様の問題を抱えている。
このように、AMPは比較的コアの数が少ない場合には有効であるものの、コア数の増加への対応には限界があるため、コア数のさらなる増加が見込まれる現在においては、スケーラブルなSMPモデルを採用したオペレーティング・システムによりスループットを向上させることが強く求められている。
しかしながら、コアの数が8個以上となるようなメニーコアプロセッサにおいてSMPモデルのオペレーティング・システムを実装すると、キャッシュコヒーレンシの不足または高コストという新たな問題が発生する。例えば、共有メモリの排他制御が複雑かつ高コストとなるので、処理全体に与えるボトルネックとなり、また、SMPモデルにおいてはスレッドの動作コアを変更するスレッドマイグレーションが実行されるが、このスレッドマイグレーションのオーバーヘッドが増大するという問題がある。なお、ほとんどのメニーコアプロセッサは、ハードウェア・キャッシュコヒーレンシ・メカニズムを提供しておらず、また、キャッシュコヒーレンシを持つ稀なメニーコアプロセッサにおいても、チップ内のコア間のコヒーレンシを維持するためのコストは、従来のコアの数が少ないプロセッサに比べてはるかに高コストとなる。
上記したように、スループットを高めるためにSMPモデルを採用すると、トレードオフとしてボトルネックやオーバーヘッドが発生し、リアルタイム性が犠牲になるという問題があった。この点、メニーコアプロセッサの制御については複数の先行研究があるものの(例えば非特許文献1参照)、主にサーバの処理を目的としたものであり、例えば組み込みシステムのようにリアルタイム性を求められる分野における研究ではないためにリアルタイム性を確保するためのスケジューリングについてはほとんど議論されていなかった。
David Wentzlaff他、"An Operating System for Multicore and Clouds: Mechanisms and Implementation"、MIT Open Access Articles、[online]、インターネット〈URL:http://dspace.mit.edu/openaccess-disseminate/1721.1/62570〉
本発明は、メニーコアプロセッサにおいてSMPモデルを実現してスループットを向上するとともに、高優先度のスレッドの実行時間を保証してリアルタイム性を確保することができるマルチコアプロセッサの制御プログラム、電子機器及び制御方法を提供することを課題とする。
本発明は、上記した課題を解決するためになされたものであり、以下を特徴とする。
(請求項1)
請求項1に記載のマルチコアプロセッサの制御プログラムは、複数のコアを備えたマルチコアプロセッサの制御プログラムであって、生成されるスレッドの動作コアを決定するグローバルスケジューラと、前記複数のコアごとに設けられたローカルスケジューラと、を備え、前記ローカルスケジューラは、自コアに割り当てられたスレッドを優先度に応じてスケジューリングして自コアで実行させ、前記グローバルスケジューラは、実行可能状態のスレッドの優先度を基に計算したワークロードに基づいて前記複数のコア間でのスレッドマイグレーションの実行を決定するものであって、各コアに割り当てられたスレッドのうち高優先度の上位N個(Nは1以上の予め定められた自然数)のスレッドについてはスレッドマイグレーションの対象としないことを特徴とする。
(請求項2)
請求項2に記載の発明は、上記した請求項1記載の発明の特徴点に加え、以下の点を特徴とする。
すなわち、前記グローバルスケジューラは、生成されたすべてのスレッドのうち高優先度の上位M個(Mはスレッドを割り当て可能なコアの数)のスレッドについて、各スレッドの動作コアが互いに異なるようにマップすることを特徴とする。
(請求項3)
請求項3に記載の発明は、上記した請求項1又は2記載の発明の特徴点に加え、以下の点を特徴とする。
すなわち、前記グローバルスケジューラは、前記複数のコア間でのスレッドのロードバランスを定期的に検査した結果を基にマイグレーション対象のスレッド及びコアを決定することを特徴とする。
(請求項4)
請求項4に記載の発明は、請求項1〜3のいずれかに記載のマルチコアプロセッサの制御プログラムを搭載した電子機器である。
(請求項5)
請求項5に記載のマルチコアプロセッサの制御方法は、複数のコアを備えたマルチコアプロセッサ上で作動し、前記複数のコアごとに設けられたローカルスケジューラでスレッドのスケジューリングを行うマルチコアプロセッサの制御方法であって、生成されるスレッドの動作コアを決定するステップと、前記ローカルスケジューラが自コアに割り当てられたスレッドについて優先度に応じてスケジューリングして自コアで実行させるステップと、実行可能状態のスレッドの優先度を基に計算したワークロードに基づいて前記複数のコア間でスレッドマイグレーションを実行するステップと、を備え、各コアに割り当てられたスレッドのうち高優先度の上位N個(Nは1以上の予め定められた自然数)のスレッドについてはスレッドマイグレーションが実行されないことを特徴とする。
(請求項6)
請求項6に記載の発明は、上記した請求項5記載の発明の特徴点に加え、以下の点を特徴とする。
すなわち、生成されたすべてのスレッドのうち高優先度の上位M個(Mはスレッドを割り当て可能なコアの数)のスレッドについて、各スレッドの動作コアが互いに異なるようにマップすることを特徴とする。
(請求項7)
請求項7に記載の発明は、上記した請求項5又は6記載の発明の特徴点に加え、以下の点を特徴とする。
すなわち、前記複数のコア間でのスレッドのロードバランスを定期的に検査した結果を基にマイグレーション対象のスレッド及びコアを決定することを特徴とする。
請求項1記載の発明によれば、グローバルスケジューラとローカルスケジューラとによる2段階のスケジュールによりスレッドが実行される。グローバルスケジューラは、生成したスレッドの動作コアを決定するとともに、実行可能状態のスレッドの優先度を基に計算したワークロードに基づいてスレッドマイグレーションの実行を決定する。このため、各コアにほぼ均等にスレッドを割り当てることができ、ハードウェアリソースを有効に活用してスループットを向上することができる。
また、各コアに割り当てられたスレッドのうち高優先度の上位N個(Nは1以上の予め定められた自然数)のスレッドについてはスレッドマイグレーションの対象としないので、高優先度のスレッドはスレッドマイグレーションされずに割り当てコアでの最優先実行が保証されている。このため、リアルタイム性が要求される高優先度のスレッドの実行時間を保証することができるので、リアルタイム性を確保することができる。
また、請求項2に記載の発明は上記の通りであり、グローバルスケジューラは生成されたすべてのスレッドのうち高優先度の上位M個(Mはスレッドを割り当て可能なコアの数)のスレッドについて、各スレッドの動作コアが互いに異なるようにマップする。すなわち、スレッドを割り当て可能なコア数と同数のスレッドについて、優先度の高い順に実行を保証することができるので、これら高優先度のスレッドの実行時間を保証することができ、リアルタイム性を確保することができる。
また、請求項3に記載の発明は上記の通りであり、グローバルスケジューラは、複数のコア間でのスレッドのロードバランスを定期的に検査した結果を基にマイグレーション対象のスレッド及びコアを決定するので、ロードバランスを最適な状態に保つことができ、スループットを向上することができる。
また、常にスレッドマイグレーションを実行するのではなく、定期的に検査した結果を基にスレッドマイグレーションを実行するので頻繁にスレッドマイグレーションが発生せず、かつ、ロードバランスが変化しない状況においてはスレッドマイグレーションが発生しないので、スレッドマイグレーションのコストを抑制することができる。特に、ボトルネックやキャッシュコヒーレンシの問題を回避するために共有メモリを使用しない(コアごとのローカルメモリを使用する)場合には、スレッドマイグレーション時にローカルメモリのコピーが必要となるためスレッドマイグレーションのコストが問題となる。しかしながら、本発明の制御によれば、スレッドマイグレーションの回数を最低限に抑制することでスレッドマイグレーションに伴うコストを抑制することができるため、言い換えると、スループットやリアルタイム性を確保しつつもボトルネックやキャッシュコヒーレンシの問題を回避することができる。
また、請求項4に記載の発明は上記の通りであり、上記したような効果を発揮する制御プログラムを搭載した電子機器を得ることができる。
また、請求項5によれば、請求項1記載の発明と同様の効果を得ることができる。
また、請求項6によれば、請求項2記載の発明と同様の効果を得ることができる。
また、請求項7によれば、請求項3記載の発明と同様の効果を得ることができる。
システムの概要を示す概念図である。 スケジューリングポリシーを説明する図である。 (a)コアごとのワークロードの計算式、(b)ロードバランスのばらつきの計算式である。 スレッド生成処理のフロー図である。 スレッド削除処理のフロー図である。 ロードバランシング処理のフロー図である。
本発明の実施形態について、図を参照しながら説明する。
(システムの基本構成)
本実施形態に係るシステムは、電子機器に組み込まれて使用される組み込みシステムであり、マルチコアプロセッサ(メニーコアプロセッサ)を備えている。このマルチコアプロセッサは、図1(a)に示すように、複数のコア10(図1(a)においては64個のコア10)を備えている。電子機器に内蔵される不揮発メモリには、このマルチコアプロセッサを制御するための制御プログラム(オペレーティング・システム)が記憶されており、この制御プログラムがマルチコアプロセッサ上で実行されることで各種アプリケーション25が実行されるように形成されている。
なお、このシステムにおいては、ハードウェアによるキャッシュコヒーレンシ機構は存在していない。また、コア10で共有される共有メモリは存在するものの、アクセスが高コストであるので、後述するマイクロカーネル30はこの共有メモリを使用しておらず、コア10ごとのローカルメモリを使用している。
複数のコア10は、図1(a)に示すように、OSサーバ実行コア11とアプリケーション実行コア12とに分けられる。OSサーバ実行コア11は、制御プログラムの一部をなすOSサーバ20を実行するコア10である。アプリケーション実行コア12は、ユーザアプリケーションやミドルウェア、ドライバなどのアプリケーション25を実行するコア10である。OSサーバ20及びアプリケーション25は、それぞれがスレッドとしてコア10に割り当てられ、実行される。なお、いずれのコア10をOSサーバ実行コア11又はアプリケーション実行コア12とするかは、予め静的に決定しておいてもよいし、後述するグローバルスケジューラ21の割り当てにより動的に決定されることとしてもよい。グローバルスケジューラ21の割り当てにより動的に決定される場合、OSサーバ実行コア11においてOSサーバ20が実行待機状態に変位した場合に、このOSサーバ実行コア11においてアプリケーション25が実行され、OSサーバ実行コア11がアプリケーション実行コア12に変化することもあり得ることとなる。
なお、OSサーバ20は、オペレーティング・システムが提供する各種機能をスレッドとして実行するものである。そして、これらOSサーバ20の1つとして、生成したスレッドの動作コア10を決定するグローバルスケジューラ21が実行される。このグローバルスケジューラ21は、所定のスケジューリングポリシーに基づいて、生成されるスレッドの動作コア10を決定し、また、スレッドの動作コア10の変更(スレッドマイグレーション)の実行を決定する。このグローバルスケジューラ21の詳細については後ほど説明する。
各コア10には、図1(a)に示すように、制御プログラムの一部をなすマイクロカーネル30がコア10ごとに分散して設けられている。このマイクロカーネル30は、図1(b)に示すように、ローカルスケジューラ31、メッセージマネージャ32、メモリマネージャ33、インタラプトマネージャ34を備えている。
ローカルスケジューラ31は、自コア10に割り当てられたスレッドについて優先度に応じてスケジューリングして自コア10で実行させるものである。例えば、あるローカルスケジューラ31が制御するコア10に、グローバルスケジューラ21によって3つのスレッドが割り当てられた場合、ローカルスケジューラ31はこの3つのスレッドのうちで最も優先度の高いスレッドを優先して実行する。そして、最も優先度の高いスレッドが待機状態となった場合には次に優先度の高いスレッドを実行し、上位2つのスレッドがいずれも待機状態となった場合にのみ最も優先度の低いスレッドを実行するようにスケジューリングする。そして、実行中のスレッドよりも優先度の高いスレッドが実行可能状態となったら、実行中のスレッドを停止し、優先度の高いスレッドに切り替えて実行する。
メッセージマネージャ32は、他スレッドへのメッセージング機能を有するものである。このメッセージマネージャ32は、OSサーバ20へのメッセージング機能も有している。例えば、アプリケーションスレッド42がカーネルAPIの呼び出し(例えばスレッドの生成・削除など)を行う場合、各コア10のインターフェースライブラリ41を使用してカーネルAPIの呼び出しが実行され、インターフェースライブラリ41内においてメッセージマネージャ32を使用してOSサーバ20(他コア10で実行されている)が呼び出される。このように、メッセージマネージャ32を使用してコア10間の通信が実行され、OSサーバ20への処理依頼・応答処理待ちが行われることで、アプリケーションスレッド42はコア10を意識することなくOSサービスの呼び出しを行えるようになっている。
メモリマネージャ33は、自コア10に割り当てられたコア10ごとのローカルメモリを管理するものである。すなわち、本システムにおいては、アクセスが高コストな共有メモリを使用せずにコア10ごとのローカルメモリを使用することでボトルネックやキャッシュコヒーレンシの問題を回避する構成となっており、このコア10ごとのローカルメモリを管理するのがメモリマネージャ33である。このメモリマネージャ33は、例えばスレッドの生成・削除に伴うメモリイメージの管理を行う。
インタラプトマネージャ34は、自コア10の処理の割り込み管理を行うためのものである。このインタラプトマネージャ34は、割り込み要求が発生したときに、現在の処理を中断して割り込み処理を実行するようにコア10の処理を切り替える。
(スレッドグループについて)
グローバルスケジューラ21は、所定のスケジューリングポリシーに基づいてスレッドの動作コア10を決定・変更する。グローバルスケジューラ21のスケジューリングポリシーの基本的考え方の1つは、各コア10に割り当てられたスレッド群を「優先度上位スレッドグループ」と「優先度下位スレッドグループ」とに分割するというものである。「優先度上位スレッドグループ」は、各コア10に割り当てられたスレッドのうち高優先度の上位N個のスレッドである。「優先度下位スレッドグループ」は「優先度上位スレッドグループ」に含まれない低優先度のスレッドである(図2参照。なお、この図2においてはコア10の数を4つとして簡略化して説明しているが、これは説明の便宜上であり、実際には図1に示すような多数のコア10が組み込まれている)。
「優先度上位スレッドグループ」と「優先度下位スレッドグループ」との違いは、スレッドマイグレーションの対象となるかどうかである。「優先度上位スレッドグループ」に属するスレッドはスレッドマイグレーションの対象とはならず、「優先度下位スレッドグループ」に属するスレッドはスレッドマイグレーションの対象となる。
「優先度上位スレッドグループ」に属するスレッドは、「優先度上位スレッドグループ
」に属する限りはスレッドマイグレーションされないため、割り当てられたコア10において優先的に実行される。このため、リアルタイム性が要求される高優先度のスレッドの実行時間を保証することができるので、リアルタイム性を確保することができるようになっている。
本実施形態においては、N=1と設定しており、各コア10の「優先度上位スレッドグループ」には1つのスレッドのみが属するようにしている。このため、「優先度上位スレッドグループ」に属するスレッドは、実行可能状態のときには常に実行状態に遷移するので、常に実行が保証されるようになっている。
(生成されるスレッドの動作コア10の決定について)
次に、生成されるスレッドの動作コア10がどのように決定されるかについて説明する。
グローバルスケジューラ21は、以下のようなスケジューリングポリシーに基づいて生成されるスレッドの動作コア10を決定する。すなわち、生成されたすべてのスレッドのうち高優先度の上位M個(Mはスレッドを割り当て可能なコア10の数)のスレッドについて、各スレッドの動作コア10が互いに異なるようにマップする。本実施形態においてはM=64であるので、高優先度の上位64個のスレッドがそれぞれ別のコア10で実行されるようにマップされる。言い換えると、それぞれのコア10において最高優先度のスレッドとなるようにマップされる。
以下、図4のスレッド生成処理のフロー図を参照しつつ、具体的なグローバルスケジューラ21の挙動について説明する。
図4に示すスレッド生成処理は、例えばアプリケーションスレッド42がスレッド生成要求(カーネルAPI)を出すことで実行される。グローバルスケジューラ21がスレッド生成要求を受け取ると、図4のステップS101に示すように、優先度上位スレッドグループに空きがあるかどうかがチェックされる。優先度上位スレッドグループに空きがある場合(本実施形態においては、スレッドを割り当て可能なコア10の数(=64)よりも、生成されたスレッドの数が少ない場合)には、ステップS102に進む。一方、優先度上位スレッドグループに空きがない場合には、ステップS103に進む。
ステップS102に進んだ場合、優先度上位スレッドグループに空きがあるコア10に対して、グローバルスケジューラ21がスレッド生成の指示を出す。これにより、当該コア10においてスレッドが作成され、作成されたスレッドは優先度上位スレッドグループに属することとなる。
一方、ステップS103に進んだ場合、生成したスレッドよりも優先度の低いスレッドが優先度上位スレッドグループに存在するかどうかがチェックされる。生成したスレッドよりも優先度の低いスレッドが優先度上位スレッドグループに存在する場合には、ステップS104に進む。一方、生成したスレッドよりも優先度の低いスレッドが優先度上位スレッドグループに存在しない場合には、ステップS105に進む。
ステップS104に進んだ場合、優先度上位スレッドグループに有するスレッドのうちで最も優先度の低いスレッド(仮にスレッドXと呼ぶ)を有するコア10に対して、グローバルスケジューラ21がスレッド生成の指示を出す。これにより、当該コア10においてスレッドが作成され、作成されたスレッドは優先度上位スレッドグループに属することとなると同時に、スレッドXは優先度上位スレッドグループから優先度低位スレッドグループに移動することとなる。
ステップS105に進んだ場合、割り当てスレッド数が最も少ないコア10に対して、グローバルスケジューラ21がスレッド生成の指示を出す。これにより、当該コア10においてスレッドが作成され、作成されたスレッドは優先度低位スレッドグループに属することとなる。
なお、上記したフローにおいては、スレッドの動作コア10を必ずグローバルスケジューラ21が決定することとしたが、スレッドの動作コア10を指定してスレッドを作成できるようにしてもよい。例えば、カーネルAPIの引数で動作コア10を指定できるようにしてもよい。この場合、グローバルスケジューラ21は、上記したステップS101〜105の処理を行うことなく、指定されたコア10にスレッド生成の指示を直接出すこととなる。
(スレッドの削除について)
図5はスレッド削除処理のフロー図である。この図5を参照しつつ、スレッドの削除処理について説明する。
図5に示すスレッド削除処理は、例えばアプリケーションスレッド42がスレッド削除要求(カーネルAPI)を出すことで実行される。グローバルスケジューラ21がこのスレッド削除要求を受け取ると、図5のステップS200に示すように、当該スレッドを削除する。そして、ステップS201に進む。
ステップS201では、削除したスレッドが優先度上位スレッドグループに属していたか否かがチェックされる。優先度上位スレッドグループに属していなかった場合、処理が終了する。優先度上位スレッドグループに属していた場合、ステップS202に進む。
ステップS202では、優先度上位スレッドグループに属していないスレッドのうち、最高優先度のスレッド(仮にスレッドYと呼ぶ)を抽出し、このスレッドYが削除したスレッドと同じコア10に割り当てられているか否かがチェックされる。スレッドYが削除したスレッドと同じコア10に割り当てられている場合、処理が終了する(これにより、削除したスレッドの代わりにスレッドYが優先度上位スレッドグループに属することとなる)。スレッドYが削除したスレッドと同じコア10に割り当てられていない場合、ステップS203に進む。
ステップS203では、スレッドYを、削除したスレッドが属していたコア10にマイグレーションする。これにより、スレッドYは、削除したスレッドが属していたコア10において、優先度上位スレッドグループに属することとなる。
以上説明したように、優先度上位スレッドグループに属するスレッドが削除された場合には、優先度の高いスレッドから順に優先度上位スレッドグループに格上げされるようになっている。
(スレッドマイグレーションについて)
本実施形態に係るグローバルスケジューラ21は、スレッドマイグレーションを実行するにあたり、コア10間でのスレッドのロードバランスを定期的に検査し、この検査結果を基にマイグレーション対象のスレッド及びコア10を決定する。
ロードバランスは、図2に示すように、実行(RUNNING)状態を含む実行可能(READY)状態のスレッド(負荷測定スレッド)の優先度を基に計算される。
具体的には、コア10ごとに、図3(a)に示す計算式でワークロードが計算される。例えば図2に示す「Core0」のワークロードは、(256−1)^2+(256−6)^2+(256−10)^2=188,041である。
このように計算されたワークロードの値を図3(b)に示す計算式に代入することで、ロードバランスのばらつきが計算される。この計算式で導き出される値Dが小さいほどロードバランスのばらつきが小さくスループットが向上すると判断するため、グローバルスケジューラ21は、この値Dが小さくなるようにスレッドマイグレーションを実行する。
図6はスレッドマイグレーションを含めたロードバランシング処理のフロー図である。この図6を参照しつつ、グローバルスケジューラ21によるロードバランシング処理について説明する。
図6に示すロードバランシング処理は、例えば50msなどの一定周期で呼び出されるものである。本実施形態においては、グローバルスケジューラ21がタイマ割り込みによって一定周期で処理を起動するようにしている。
処理が起動すると、まず図6のステップS300に示すように、すべてのコア10のワークロードが測定される。具体的には、グローバルスケジューラ21が各コア10にワークロード測定の指示を出し、指示を受け取った各コア10は図3(a)に示す計算式でワークロードを計算してグローバルスケジューラ21に返却する。そして、ステップS301に進む。
ステップS301では、各コア10のワークロード測定の結果を基に、最も負荷の低いコア10(ワークロードが最小のコア10)を「マイグレーションターゲット」として選定する。マイグレーションターゲットとして最も負荷の低いコア10を選定しているのは、スレッドマイグレーションの目的を「負荷の低いコア10の有効活用」と定義したためである。このように目的を限定することで、過度に計算が複雑になって処理負担が増えることがないような仕組みになっている。そして、マイグレーションターゲットが選定されたら、ステップS302に進む。
ステップS302では、マイグレーションターゲット以外のすべてのコア10について、当該コア10に含まれるスレッド(優先度低位スレッドグループのうち最も優先度の高いスレッド)をマイグレーションターゲットにマイグレーションした場合のロードバランスのばらつきが計算される。
具体的には、マイグレーションターゲット以外のコア10において優先度低位スレッドグループのうち最も優先度の高いスレッドをマイグレーションターゲットに移動したと仮定し、図3(b)に示す計算式でロードバランスのばらつきを計算する。これをマイグレーションターゲット以外のすべてのコア10について計算し、最もロードバランスのばらつきが小さくなる組み合わせを検査する。なお、マイグレーションするスレッドを優先度低位スレッドグループのうち最も優先度の高いスレッドとしたのは、マイグレーションの目的を「優先度が高いスレッドの実行機会の最大化」と定義したためである。このように目的を限定することで、ロードバランスのばらつきの計算回数が過度になって処理負担が増えることがないような仕組みになっている。そして、ロードバランスのばらつきが計算されたら、ステップS303に進む。
ステップS303では、ステップS302においてロードバランスのばらつきが最も小さくなると計算された組み合わせでスレッドマイグレーションを実行する。なお、スレッドマイグレーションを実行しない方がロードバランスのばらつきが小さい場合には、スレッドマイグレーションを実行せずに処理を終了する。
以上のような処理によれば、定期的にスレッドマイグレーションが実行されるため、スループットを向上することができる。なお、本実施形態においては1回のロードバランシング処理でスレッドマイグレーションされるスレッドの数を最大1つとしているため、過度にスレッドマイグレーションが発生しないように抑制されている。
また、スレッドマイグレーションを行うに当たり、単に優先度に基づいてスレッドマイグレーションを実行するのではなく、優先度ベースのロードバランスのばらつきに基づいてスレッドマイグレーションを実行することで、スループットを向上しつつもスレッドマイグレーションの回数を抑制できるように形成されている。
なお、上記した処理においては、グローバルスケジューラ21から各コア10にワークロード測定の指示が出すこととしたが、各コア10のマイクロカーネル30が所定時間毎にワークロードの測定結果をグローバルスケジューラ21に送信するようにしてもよい。
(まとめ)
以上説明したように、本実施形態によれば、グローバルスケジューラ21とローカルスケジューラ31とによる2段階のスケジュールによりスレッドが実行される。グローバルスケジューラ21は、生成したスレッドの動作コア10を決定するとともに、所定のスケジューリングポリシーに基づいてスレッドマイグレーションの実行を決定する。このため、各コア10にほぼ均等にスレッドを割り当てることができ、ハードウェアリソースを有効に活用してスループットを向上することができる。
また、各コア10に割り当てられたスレッドのうち高優先度の上位1個のスレッドについてはスレッドマイグレーションの対象としないので、高優先度のスレッドはスレッドマイグレーションされずに割り当てコア10での最優先実行が保証されている。このため、リアルタイム性が要求される高優先度のスレッドの実行時間を保証することができるので、リアルタイム性を確保することができる。
また、グローバルスケジューラ21は生成されたすべてのスレッドのうち高優先度の上位64個のスレッドについて、各スレッドの動作コア10が互いに異なるようにマップする。すなわち、スレッドを割り当て可能なコア10数と同数のスレッドについて、優先度の高い順に実行を保証することができるので、これら高優先度のスレッドの実行時間を保証することができ、リアルタイム性を確保することができる。
また、グローバルスケジューラ21は、複数のコア10間でのスレッドのロードバランスを定期的に検査した結果を基にマイグレーション対象のスレッド及びコア10を決定するので、ロードバランスを最適な状態に保つことができ、スループットを向上することができる。
また、常にスレッドマイグレーションを実行するのではなく、定期的に検査した結果を基にスレッドマイグレーションを実行するので頻繁にスレッドマイグレーションが発生せず、かつ、ロードバランスが変化しない状況においてはスレッドマイグレーションが発生しないので、スレッドマイグレーションのコストを抑制することができる。特に、ボトルネックやキャッシュコヒーレンシの問題を回避するために共有メモリを使用しない(コア10ごとのローカルメモリを使用する)場合には、スレッドマイグレーション時にローカルメモリのコピーが必要となるためスレッドマイグレーションのコストが問題となる。しかしながら、本実施形態の制御によれば、スレッドマイグレーションの回数を最低限に抑制することでスレッドマイグレーションに伴うコストを抑制することができるため、言い換えると、スループットやリアルタイム性を確保しつつもボトルネックやキャッシュコヒーレンシの問題を回避することができる。
なお、上記した実施形態においては、スレッドを割り当て可能なコア10の数Mを、コア10の総数64と同数としたが、本発明の実施形態としてはこれに限らない。プロセッサに実装されたコア10のうちの任意の数のコア10のみをスレッドを割り当て可能なコア10として扱ってもよい。例えば、OSサーバ実行コア11を予め決定してグローバルスケジューラ21の管理外とし、これらのコア10をスレッド割り当て可能なコア10から除外してもよい。具体的には、コア10が64個ある場合に、このうちの8個をOSサーバ実行コア11とし、残りの56個をアプリケーション実行コア12とし、この56個のアプリケーション実行コア12をスレッド割り当て可能なコア10としてグローバルスケジューラ21によるスレッドの割り当てやスレッドマイグレーションの対象としてもよい。
また、上記した実施形態においてはコア10が64個の場合について説明したが、本発明の実施形態としてはこれに限らず、任意の数のコア10に対応できることは言うまでもない。
また、上記した実施形態においては図3に示す計算式でワークロード及びロードバランスを計算することとしたが、本発明の実施形態としてはこれに限らず、他の計算式を使用してもよい。例えば、乗数を変更して優先度の重みづけを変更してもよい。
また、上記した実施形態においては、各コア10の「優先度上位スレッドグループ」に属するスレッドの数Nを「1」に設定したが、本発明の実施形態としてはこれに限らない。Nの値は1以上の予め定められた自然数であればよく、例えば2や3としてもよい。ただし、あまり大きな数値とするとスループットが低下するため、適切な値に設定する必要がある。なお、コア10の数が多い場合には、Nが小さい値であっても十分な数の高優先度スレッドの実行を保証できるので、このような場合には小さい値(例えば最小値である
「1」)に設定することで、リアルタイム性を確保しつつスループットを最大とすることができる。
なお、N>1の場合、グローバルスケジューラ21は、高優先度スレッドの動作コア10を以下のようにマップすることが望ましい。まず、既に説明したように、生成されたすべてのスレッドのうち高優先度の上位M個のスレッドについて、各スレッドの動作コア10が互いに異なるようにマップする。そして、次の高優先度の上位M個のスレッド(すなわち、優先度が(M+1)番目〜(M×2)番目のスレッド)について、各スレッドの動作コア10が互いに異なるようにマップする。このように、高優先度のスレッドをM個ずつのブロックに分割し、各ブロックに含まれるスレッドを互いに異なるコア10にマップする作業をN回繰り返す。このような処理によれば、N>1の場合においても優先度が高い順にスレッドの実行を保証することができる。
10 コア
11 OSサーバ実行コア
12 アプリケーション実行コア
20 OSサーバ
21 グローバルスケジューラ
25 アプリケーション
30 マイクロカーネル
31 ローカルスケジューラ
32 メッセージマネージャ
33 メモリマネージャ
34 インタラプトマネージャ
41 インターフェースライブラリ
42 アプリケーションスレッド

Claims (7)

  1. 複数のコアを備えたマルチコアプロセッサの制御プログラムであって、
    生成されるスレッドの動作コアを決定するグローバルスケジューラと、
    前記複数のコアごとに設けられたローカルスケジューラと、
    を備え、
    前記ローカルスケジューラは、自コアに割り当てられたスレッドを優先度に応じてスケジューリングして自コアで実行させ、
    前記グローバルスケジューラは、実行可能状態のスレッドの優先度を基に計算したワークロードに基づいて前記複数のコア間でのスレッドマイグレーションの実行を決定するものであって、各コアに割り当てられたスレッドのうち高優先度の上位N個(Nは1以上の予め定められた自然数)のスレッドについてはスレッドマイグレーションの対象としないことを特徴とする、マルチコアプロセッサの制御プログラム。
  2. 前記グローバルスケジューラは、生成されたすべてのスレッドのうち高優先度の上位M個(Mはスレッドを割り当て可能なコアの数)のスレッドについて、各スレッドの動作コアが互いに異なるようにマップすることを特徴とする、請求項1記載のマルチコアプロセッサの制御プログラム。
  3. 前記グローバルスケジューラは、前記複数のコア間でのスレッドのロードバランスを定期的に検査した結果を基にマイグレーション対象のスレッド及びコアを決定することを特徴とする、請求項1又は2記載のマルチコアプロセッサの制御プログラム。
  4. 請求項1〜3のいずれかに記載のマルチコアプロセッサの制御プログラムを搭載した電子機器。
  5. 複数のコアを備えたマルチコアプロセッサ上で作動し、前記複数のコアごとに設けられたローカルスケジューラでスレッドのスケジューリングを行うマルチコアプロセッサの制御方法であって、
    生成されるスレッドの動作コアを決定するステップと、
    前記ローカルスケジューラが自コアに割り当てられたスレッドについて優先度に応じてスケジューリングして自コアで実行させるステップと、
    実行可能状態のスレッドの優先度を基に計算したワークロードに基づいて前記複数のコア間でスレッドマイグレーションを実行するステップと、
    を備え、
    各コアに割り当てられたスレッドのうち高優先度の上位N個(Nは1以上の予め定められた自然数)のスレッドについてはスレッドマイグレーションが実行されないことを特徴とする、マルチコアプロセッサの制御方法。
  6. 生成されたすべてのスレッドのうち高優先度の上位M個(Mはスレッドを割り当て可能なコアの数)のスレッドについて、各スレッドの動作コアが互いに異なるようにマップすることを特徴とする、請求項5記載のマルチコアプロセッサの制御方法。
  7. 前記複数のコア間でのスレッドのロードバランスを定期的に検査した結果を基にマイグレーション対象のスレッド及びコアを決定することを特徴とする、請求項5又は6記載のマルチコアプロセッサの制御方法。
JP2012247172A 2012-11-09 2012-11-09 マルチコアプロセッサの制御プログラム、電子機器及び制御方法 Active JP5734941B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012247172A JP5734941B2 (ja) 2012-11-09 2012-11-09 マルチコアプロセッサの制御プログラム、電子機器及び制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012247172A JP5734941B2 (ja) 2012-11-09 2012-11-09 マルチコアプロセッサの制御プログラム、電子機器及び制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015083078A Division JP5945617B2 (ja) 2015-04-15 2015-04-15 マルチコアプロセッサの制御プログラム、電子機器及び制御方法

Publications (2)

Publication Number Publication Date
JP2014096024A JP2014096024A (ja) 2014-05-22
JP5734941B2 true JP5734941B2 (ja) 2015-06-17

Family

ID=50939049

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012247172A Active JP5734941B2 (ja) 2012-11-09 2012-11-09 マルチコアプロセッサの制御プログラム、電子機器及び制御方法

Country Status (1)

Country Link
JP (1) JP5734941B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6128104B2 (ja) 2014-11-28 2017-05-17 コニカミノルタ株式会社 画像処理装置、その制御方法、およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0883257A (ja) * 1994-09-13 1996-03-26 Hitachi Ltd 並列コンピュータシステムのプロセス実行最適化方法
JPH11265297A (ja) * 1998-03-17 1999-09-28 Mitsubishi Electric Corp 分散シミュレータシステム
JP3914230B2 (ja) * 2004-11-04 2007-05-16 株式会社東芝 プロセッサシステム及びその制御方法
JP5448787B2 (ja) * 2009-12-21 2014-03-19 三菱重工業株式会社 計算機管理装置、計算機管理方法及び計算機管理プログラム

Also Published As

Publication number Publication date
JP2014096024A (ja) 2014-05-22

Similar Documents

Publication Publication Date Title
Marathe et al. A run-time system for power-constrained HPC applications
US9086925B2 (en) Methods of processing core selection for applications on manycore processors
Zhuravlev et al. Survey of scheduling techniques for addressing shared resources in multicore processors
US9268394B2 (en) Virtualized application power budgeting
US9170843B2 (en) Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US9465657B2 (en) Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
Sridharan et al. Holistic run-time parallelism management for time and energy efficiency
JP4705051B2 (ja) 計算機システム
US20130081043A1 (en) Resource allocation using entitlement hints
Stavrinides et al. Energy-aware scheduling of real-time workflow applications in clouds utilizing DVFS and approximate computations
Ye et al. Maracas: A real-time multicore vcpu scheduling framework
Cho et al. Maximizing system utilization via parallelism management for co-located parallel applications
Hartmann et al. Gpuart-an application-based limited preemptive gpu real-time scheduler for embedded systems
Cheng et al. Performance-monitoring-based traffic-aware virtual machine deployment on numa systems
JP5945617B2 (ja) マルチコアプロセッサの制御プログラム、電子機器及び制御方法
Goswami et al. GPUShare: Fair-sharing middleware for GPU clouds
Chiang et al. Kernel mechanisms with dynamic task-aware scheduling to reduce resource contention in NUMA multi-core systems
Padoin et al. Managing power demand and load imbalance to save energy on systems with heterogeneous CPU speeds
JPWO2015015756A1 (ja) 不揮発性メモリ搭載サーバの省電力制御システム、制御装置、制御方法および制御プログラム
Burgio et al. Adaptive TDMA bus allocation and elastic scheduling: A unified approach for enhancing robustness in multi-core RT systems
Wang et al. Minimizing stack memory for hard real-time applications on multicore platforms with partitioned fixed-priority or EDF scheduling
JP5734941B2 (ja) マルチコアプロセッサの制御プログラム、電子機器及び制御方法
JP6158751B2 (ja) 計算機資源割当装置及び計算機資源割当プログラム
Georgopoulos et al. Energy-efficient heterogeneous computing at exaSCALE—ECOSCALE
Cho et al. Adaptive space-shared scheduling for shared-memory parallel programs

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141029

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150415

R150 Certificate of patent or registration of utility model

Ref document number: 5734941

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250