(57)【要約】【課題】実装コストの増加を最小限に抑制し、複数のコア間のタスク最適割り当てを行うことができるマルチコアシステムを提供する。【解決手段】タスク処理の実行状況を通知する機能を有する複数のコア（４１、４２、４３）と、複数のコア（４１、４２、４３）から処理の実行状況に関する処理状態情報を受信するスケジューラ（４４）と、を備えるマルチコアシステム。【選択図】図１
2019179415.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアシステムであって、
タスク処理の実行状況を通知する機能を有する複数のコア（４１、４２、４３）と、
複数の前記コアから処理の実行状況に関する処理状態情報を受信するスケジューラ（４４）と、を備えるマルチコアシステム。
【請求項２】
請求項１に記載のマルチコアシステムであって、
前記スケジューラは、前記処理状態情報に基づいて複数の前記コアそれぞれにタスク処理を割り当てる、マルチコアシステム。
【請求項３】
請求項１又は２に記載のマルチコアシステムであって、
複数の前記コアは、少なくとも２種類以上のコアによって構成されている、マルチコアシステム。
【請求項４】
請求項１から３のいずれか１項に記載のマルチコアシステムであって、
前記スケジューラは、複数の前記コアの少なくとも一部からタスク処理の実行を行うことの可否問い合わせを受信し、受信タイミングに応じた前記処理状態情報に基づいて、複数の前記コアの中からタスク処理を実行するコアを判断する、マルチコアシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、マルチコアシステム。
【背景技術】
【０００２】
電子制御の高機能化に伴ってマイコンのマルチコア化が進んでおり、複数種類・複数個のコアにおける処理を最適化する必要がある。このようなコアにおける処理の最適化技術として、下記特許文献１に記載のものが開示されている。下記特許文献１に記載の発明では、各タスクの実行コストを見積もって、優先度や依存関係を考慮して実行するプロセッサを割り当てている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３２８４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、該当タスクのみのコストは見積もる事ができるが、ＯＳや複数タスク処理等のオーバーヘッド分を反映した判断が困難である。また、予めスケジューラがスケジューリングするためのルールを策定することも考えられるが、実行ルール策定のための開発工数が増える一方で、策定したルールの範囲での割り当てしかできない。更に、ルールを解釈するコンパイラやスケジューラが必要となるため、システムが複雑になり、実装コストが増える要因となる。
【０００５】
本開示は、実装コストの増加を最小限に抑制し、複数のコア間のタスク最適割り当てを行うことができるマルチコアシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示は、マルチコアシステムであって、タスク処理の実行状況を通知する機能を有する複数のコア（４１、４２、４３）と、複数のコアから処理の実行状況に関する処理状態情報を受信するスケジューラ（４４）と、を備える。
【０００７】
スケジューラが処理状態情報を受信することで、各コアの実行状態を動的に把握することができる。コア側から処理実行状態を通知し、通知された実行状態の管理をコアとは独立したスケジューラによって行うことで、スケジューリングによる処理オーバーヘッドを少なくすることができる。
【０００８】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【０００９】
本開示によれば、実装コストの増加を最小限に抑制し、複数のコア間のタスク最適割り当てを行うことができるマルチコアシステムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態であるマルチコアシステムのシステム構成を例示する図である。
【図２】図２は、本実施形態であるマルチコアシステムの機能的な構成要素を説明する図である。
【図３】図３は、本実施形態であるマルチコアシステムの処理を説明するための図である。
【図４】図４は、本実施形態であるマルチコアシステムの処理を説明するための図である。
【図５】図５は、本実施形態であるマルチコアシステムの処理を説明するための図である。
【図６】図６は、本実施形態であるマルチコアシステムの処理を説明するための図である。
【図７】図７は、本実施形態であるマルチコアシステムの処理を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１２】
図１を参照しながら、本実施形態であるマルチコアシステムのシステム構成について説明する。図１に示されるように、マルチコアシステムはソフトウェア２及びハードウェア４によって構成されている。
【００１３】
ソフトウェア２は、ＯＳ２１と、ＯＳが実行するタスク２２、ＯＳが実行するパラタスク２３と、ＯＳ管轄外のパラタスク２４と、を含んでいる。ＯＳ２１は、ハードウェア４に含まれるＣＰＵ０＿４１及びＣＰＵ１＿４２を駆動するためのオペレーティング・システムである。パラタスク２３とパラタスク２４とは、処理内容としては同等の処理になっている。
【００１４】
ハードウェア４は、ＣＰＵ０＿４１と、ＣＰＵ１＿４２と、アクセラレータであるＤＦＰ（Ｄａｔａ  Ｆｌｏｗ  Ｐｒｏｃｅｓｓｏｒ）４３と、スケジューラ４４と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）４５と、インターコネクト４６と、メモリ４７と、を備えている。
【００１５】
ＣＰＵ０＿４１及びＣＰＵ１＿４２は、ＯＳ２１の管轄下にあるプロセッサユニットであって、ＯＳ２１によって動作が制御されている。ＣＰＵ０＿４１は、ＰＭＵ（Ｐｅｒｆｏｒｍａｎｃｅ  Ｕｎｉｔ）４１１を有している。ＰＭＵ４１１は、ＣＰＵ０＿４１の処理状態情報を保持する部分である。ＰＭＵ４１１は、ＣＰＵ０＿４１の処理状態情報をスケジューラ４４に通知する部分である。ＣＰＵ０＿４１の処理状態情報は、実行サイクル数、実行命令数、条件分岐での処理数、キャッシュのヒット率、条件分岐命令中における分岐先の処理率といった情報を含んでいる。
【００１６】
ＣＰＵ１＿４２は、ＰＭＵ４２１を有している。ＰＭＵ４２１は、ＰＭＵ４１１と同様の機能を有している。
【００１７】
ＤＦＰ４３は、アクセラレータであって、ＣＰＵ０＿４１及びＣＰＵ１＿４２の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。ＤＦＰ１０は、スケジューラ４４が生成した割り込みをサポートするように構成されている。
【００１８】
インターコネクト４６は、ＤＭＡ４５とメモリ４７との間の情報授受を担う部分である。メモリ４７は、データ領域４７１と、データ領域４７２と、が設けられている。データ領域４７１は、ＣＰＵ０＿４１及びＣＰＵ１＿４２側のデータを保持する領域である。データ領域４７２は、ＤＦＰ４３側のデータを保持する領域である。
【００１９】
ＤＭＡ４５は、メモリ４７間のデータコピーを行う部分である。ＤＭＡ４５は、ＣＰＵ０＿４１及びＣＰＵ１＿４２側のデータを保持する領域であるデータ領域４７１と、ＤＦＰ４３側のデータを保持するデータ領域４７２との間で必要に応じてデータコピーを実行する。
【００２０】
例えば、ＤＦＰ４３が、ＣＰＵ０＿４１及びＣＰＵ１＿４２側に割り当てられていた処理を代わりに実行する場合、ＤＭＡ４５は、処理に使用するデータを、データ領域４７１からデータ領域４７２にコピーする。ＤＦＰ４３の処理結果はデータ領域４７２に格納されるので、ＤＭＡ４５は、処理結果のデータをデータ領域４７２からデータ領域４７１にコピーする。
【００２１】
続いて、図２を参照しながら、スケジューラ４４の機能について説明を加える。図２に示されるように、ＣＰＵ０＿４１は、ＰＭＵ４１１と、レジスタ４１２とを有している。ＰＭＵ４１１は、ＣＰＵ０＿４１に設けられているＡＬＵ、Ｄｅｃｏｄｅ、Ｆｅｔｃｈといった演算器、キャッシュから処理状態を取得し、処理状態情報を保持する。ＰＭＵ４１１は、処理状態情報をスケジューラ４４に送信する。レジスタ４１２は、スケジューラ４４から送信される実行コア通知情報を保持する部分である。
【００２２】
ＣＰＵ１＿４２は、ＰＭＵ４２１と、レジスタ４２２とを有している。ＰＭＵ４２１は、ＣＰＵ１＿４２に設けられているＡＬＵ、Ｄｅｃｏｄｅ、Ｆｅｔｃｈといった演算器、キャッシュから処理状態を取得し、処理状態情報を保持する。ＰＭＵ４２１は、処理状態情報をスケジューラ４４に送信する。レジスタ４２２は、スケジューラ４４から送信される実行コア通知情報を保持する部分である。
【００２３】
ＤＦＰ４３は、ＰＭＵ４３１と、レジスタ４３２とを有している。ＰＭＵ４３１は、ＤＦＰ４３に設けられているＡＬＵ、Ｄｅｃｏｄｅ、Ｆｅｔｃｈといった演算器、キャッシュから処理状態を取得し、処理状態情報を保持する。ＰＭＵ４３１は、処理状態情報をスケジューラ４４に送信する。レジスタ４３２は、スケジューラ４４から送信される実行コア通知情報を保持する部分である。
【００２４】
スケジューラ４４は、機能的な構成要素として、処理状態受信部４４１と、実行コア判定部４４２と、実行コア確認受理部４４３と、実行コア通知部４４４と、を備えている。
【００２５】
処理状態受信部４４１は、ＰＭＵ４１１、ＰＭＵ４２１、及びＰＭＵ４３１から送信される処理状態情報を受信する部分である。処理状態受信部４４１は、受信したＣＰＵ０＿４１、ＣＰＵ１＿４２、及びＤＦＰ４３の処理状態情報を実行コア判定部４４２に出力する。
【００２６】
実行コア確認受理部４４３は、ＣＰＵ０＿４１及びＣＰＵ１＿４２から送信される、実行コア確認情報を受信する部分である。実行コア確認情報は、ＣＰＵ１＿４１及びＣＰＵ１＿４２を用いてタスク処理を行う際に、そのまま実行してよいか否かの実行可否を確認する情報である。実行コア確認受理部４４３は、実行コア確認情報を受信すると、実行コア判定部４４２に出力する。
【００２７】
実行コア判定部４４２は、実行コア確認情報の入力をトリガとして、ＣＰＵ０＿４１、ＣＰＵ１＿４２、及びＤＦＰ４３の処理状態情報を考慮し、タスク処理するコアを決定する部分である。例えば、ＣＰＵ０＿４１から実行コア確認情報が入った場合に、処理状態情報を勘案してもＣＰＵ０＿４１でそのまま実行した方が全体の処理速度が早くなる場合は、ＣＰＵ０＿４１をタスク処理コアとして判定する。一方、ＣＰＵ０＿４１から実行コア確認情報が入った場合に、処理状態情報を勘案するとＣＰＵ１＿４２やＤＦＰ４３で実行した方が全体の処理速度が早くなる場合は、ＣＰＵ１＿４２やＤＦＰ４３をタスク処理コアとして判定する。実行コア判定部４４２は、判定した結果を実行コア通知部４４４に出力する。
【００２８】
実行コア通知部４４４は、実行コア判定部４４２の判定結果に基づいて、タスクを処理するコアに対して実行コア通知情報を送信する部分である。
【００２９】
図３を参照しながら、本実施形態におけるシステム全体の処理を説明するためのフローチャートである。ステップＳ００１では、ＯＳが実行コアを確認する。ＯＳの実行コア確認に伴って、ＣＰＵ０＿４１及びＣＰＵ１＿４２に対して実行コア確認情報が送信される。この実行コア確認情報の送信に応じて、実行コア通知情報が送信される。
【００３０】
ステップＳ００１に続くステップＳ００２では、メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２でタスクが実行されるか否かを判断する。メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２でタスクが実行される場合には、ステップＳ００３の処理に進む。メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２でタスクが実行されない場合には、ステップＳ００４の処理に進む。
【００３１】
ステップＳ００３では、メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２でタスクが実行される。
【００３２】
ステップＳ００４では、他コアであるＤＦＰ４３でのタスク処理の準備が実行される。具体的には、ＤＭＡ４５が、データ領域４７１からデータ領域４７２に必要となるデータをコピーする。
【００３３】
ステップＳ００５では、ＤＦＰ４３でタスクが実行される。ステップＳ００５では、終了処理が実行される。具体的には、ＤＭＡ４５が、データ領域４７２からデータ領域４７１に処理結果であるデータをコピーする。
【００３４】
続いて、図４を参照しながら、ＣＰＵ０＿４１、ＣＰＵ１＿４２、及びＤＦＰ４３における処理を説明する。ステップＳ０５１では、ＣＰＵ０＿４１、ＣＰＵ１＿４２、及びＤＦＰ４３のいずれかがタスク処理を実行する。
【００３５】
ステップＳ０５１に続くステップＳ０５２は、タスクを実行したコアがＰＭＵ値（処理状態情報）を更新する。ステップＳ０５２に続くステップＳ０５３は、更新した値をＰＭＵ４１１、ＰＭＵ４２１、及びＰＭＵ４３１のいずれかがスケジューラ４４に送信する。
【００３６】
続いて、図５を参照しながら、スケジューラ４４の処理について説明する。ステップＳ１０１では、ＰＭＵ４１１、ＰＭＵ４２１、及びＰＭＵ４３１が送信した処理状態情報であるＰＭＵ値を受信する。
【００３７】
ステップＳ１０１に続くステップＳ１０２では、実行コア判定部４４２が、処理状態情報であるＰＭＵ値を、実行状態を比較する値に変換する。ステップＳ１０２に続くステップＳ１０３では、全コアの処理状態を比較する。ステップＳ１０３に続くステップＳ１０４では、実行コア判定部４４２が、次のタスク処理を実行するコアを決定する。
【００３８】
続いて、図６を参照しながら、タスク処理について説明する。ステップＳ１５１では、実行コア確認受理部４４３が、実行コア確認情報を受信する。
【００３９】
ステップＳ１５１に続くステップＳ１５２では、実行コア判定部４４２が、メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２でのタスク実行か否かを判断する。メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２でのタスク実行であれば、ステップＳ１５３の処理に進む。メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２でのタスク実行でなければ、ステップＳ１５４の処理に進む。
【００４０】
ステップＳ１５３では、実行コア通知部４４４が、メインＣＰＵであるＣＰＵ０＿４１又はＣＰＵ１＿４２に実行コア通知情報を送信する。
【００４１】
ステップＳ１５４では、実行コア通知部４４４が、ＤＦＰ４３に実行コア通知情報を送信する。ステップＳ１５４に続くステップＳ１５５では、ＤＭＡ４５にＤＦＰ４３でのタスク実行に必要データを受け取る指示を出力する。
【００４２】
ステップＳ１５５に続くステップＳ１５６では、ＤＭＡ４５が起動し、必要なデータコピーを実行する。ステップＳ１５６に続くステップＳ１５７では、ＤＭＡ４５の動作を完了する。ステップＳ１５７に続くステップＳ１５８では、他コアであるＤＦＰ４３を起動する。
【００４３】
続いて、図７を参照しながら、ＤＦＰ４３のタスク終了処理について説明する。ステップＳ２０１では、他コアであるＤＦＰ４３からタスク処理終了の通知をスケジューラ４４が受信する。
【００４４】
ステップＳ２０１に続くステップＳ２０２では、タスク処理結果をメインＣＰＵであるＣＰＵ０＿４１及びＣＰＵ１＿４２に戻すため、ＤＭＡ４５を起動する。ＤＭＡ４５は、データ領域４７２からデータ領域４７１に処理結果であるデータをコピーする。ステップＳ２０２に続くステップＳ２０３では、ＤＭＡ４５の動作を完了する。
【００４５】
ステップＳ２０３に続くステップＳ２０４では、スケジューラ４４が、メインＣＰＵであるＣＰＵ０＿４１及びＣＰＵ１＿４２にタスク終了通知を送信する。ステップＳ２０４に続くステップＳ２０５では、次の実行タスク有無を判断する。次の実行タスクがあれば処理を終了する。次の実行タスクがなければ、他コアであるＤＦＰ４３の終了処理を実行する。
【００４６】
上記したように本実施形態は、マルチコアシステムであって、タスク処理の実行状況を通知する機能を有する複数のコアとしてのＣＰＵ０＿４１、ＣＰＵ１＿４２、ＤＦＰ４３と、複数のコアであるＣＰＵ０＿４１、ＣＰＵ１＿４２、ＤＦＰ４３から処理の実行状況に関する処理状態情報を受信するスケジューラ４４と、を備える。
【００４７】
スケジューラ４４が処理状態情報を受信することで、ＣＰＵ０＿４１、ＣＰＵ１＿４２、ＤＦＰ４３といった各コアの実行状態を動的に把握することができる。コア側から処理実行状態を通知し、通知された実行状態の管理をコアとは独立したスケジューラによって行うことで、スケジューリングによる処理オーバーヘッドを少なくすることができる。特別なコンパイラや事前のルール策定は不要なので、簡易な実現構成による低コスト化も達成することができる。
【００４８】
本実施形態では、スケジューラ４４は、処理状態情報に基づいて複数のコアであるＣＰＵ０＿４１、ＣＰＵ１＿４２、ＤＦＰ４３それぞれにタスク処理を割り当てる。
【００４９】
処理状態情報に基づくことで、一番処理負荷が軽いコアにタスクを割当てることができる。
【００５０】
本実施形態では、複数のコアは、少なくとも２種類以上のコアであるＣＰＵ０＿４１、ＣＰＵ１＿４２、ＤＦＰ４３によって構成されている。
【００５１】
ヘテロジニアス構成の各コア間でのオーバーヘッドになるデータ受け渡し等を切り離し独立して自動実行する機能を実現することができる。
【００５２】
本実施形態では、スケジューラ４４は、複数のコアの少なくとも一部からタスク処理の実行を行うことの可否問い合わせを受信し、受信タイミングに応じた処理状態情報に基づいて、複数のコアの中からタスク処理を実行するコアを判断する。
【００５３】
ヘテロジニアス構成の各コアの、現時点での処理状況を判断したうえで、的確に処理の割当てを行うことができる。性能向上及び消費電力低下を実現することができる。
【００５４】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００５５】
４１：ＣＰＵ０（コア）
４２：ＣＰＵ１（コア）
４３：ＤＦＰ（コア）
４４：スケジューラ
【図１】
2019179415.tif 000003
【図２】
2019179415.tif 000004
【図３】
2019179415.tif 000005
【図４】
2019179415.tif 000006
【図５】
2019179415.tif 000007
【図６】
2019179415.tif 000008
【図７】
2019179415.tif 000009