(57)【要約】【課題】ヘテロジニアスマルチコアを採用した電子制御装置において、より効果的にタスクの割り当てが可能な電子制御装置を提供する。【解決手段】電子制御装置は、複数の演算処理装置を含み、入力信号に基づいて処理を実行し出力信号を出力する制御部と、制御部が実行する処理におけるタスクごとに、該タスクを特徴付ける特徴量を抽出するとともに、特徴量に対応する実際のタスク処理時間を学習するタスク処理時間予測部と、を備える。タスク処理時間予測部は、タスクを実行する際に、実行すべきタスクに紐づく特徴量に基づいて、特徴量に対応して学習されたタスク処理時間を予測し、予測されたタスク処理時間に応じて、演算処理装置におけるタスクが実行可能な空き領域に処理を追加する。【選択図】図２
2019125093.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置（１０，３０，５０）を含み、入力信号に基づいて処理を実行し出力信号を出力する制御部（７０）と、
前記制御部が実行する処理におけるタスクごとに、該タスクを特徴付ける特徴量を抽出するとともに、前記特徴量に対応する実際のタスク処理時間を学習するタスク処理時間予測部（８０）と、を備え、
前記タスク処理時間予測部は、タスクを実行する際に、実行すべきタスクに紐づく前記特徴量に基づいて、前記特徴量に対応して学習された前記タスク処理時間を予測し、
予測された前記タスク処理時間に応じて、前記演算処理装置におけるタスクが実行可能な空き領域に処理を追加する、電子制御装置。
【請求項２】
前記タスク処理時間予測部は、前記タスクごとの前記特徴量および前記タスク処理時間を取得し、学習データとして統計的に記録する学習データ取得部（８２）と、
前記学習データに基づいて、所定の機械学習アルゴリズムによりタスクに対応する前記タスク処理時間を予測する機械学習部（８３）と、
前記機械学習部により予測された前記タスク処理時間に応じて、前記演算処理装置におけるタスクが実行可能な空き領域に処理を追加する処理追加部（８４）と、を有する、請求項１に記載の電子制御装置。
【請求項３】
前記機械学習部は、前記タスク処理時間に対する前記特徴量の主成分分析を実行して次元の削減する、請求項２に記載の電子制御装置。
【請求項４】
前記タスク処理時間予測部は、タスク監視処理部（８５）をさらに有し、
前記タスク監視処理部は、前記機械学習部が予測した前記タスク処理時間と、実行された実際のタスク処理時間とを比較して予測の正答率を算出し、
前記正答率が所定の閾値よりも高い場合において、前記処理追加部が前記演算処理装置におけるタスクが実行可能な空き領域に処理を追加する、請求項２または請求項３に記載の電子制御装置。
【請求項５】
前記正答率は、予測された前記タスク処理時間と実際に実行されたときの前記タスク処理時間との差の絶対値が所定の許容値以下であるときを正答とし、前記差の絶対値が前記許容値より小さいときを誤答として、正答と誤答の総計に対する正答の数の割合として算出され、
前記学習データは算出された前記正答率を含む、請求項４に記載の電子制御装置。
【請求項６】
前記タスク監視処理部は、各タスクに対する前記機械学習部により予測された前記タスク処理時間のばらつきを算出し、
前記ばらつきが、所定の許容範囲を超える場合に警告を発出する、請求項４または請求項５に記載の電子制御装置。
【請求項７】
前記タスク監視処理部は、前記処理追加部により追加された処理に要した時間が所定の許容値を超える場合において、前記正答率をリセットする、請求項４〜６のいずれか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この明細書の開示は、ヘテロジニアスマルチコアを採用した電子制御装置に関する。
【背景技術】
【０００２】
自動運転や自動駐車などの先進安全への要求が高まっており、より高機能な車載電子制御装置が求められている。車両に入力される情報に対する演算は制御プロセッサにより実行されるが、入力される情報の多様化や制御すべき対象の高度化に伴い、特定の機能に特化したプロセッサ（例えば画像処理に特化したＧＰＧＰＵなど）を必要な機能ごとに備えた、ヘテロジニアスマルチコアを採用した電子制御装置が用いられつつある。
【０００３】
ヘテロジニアスマルチコアを採用する場合、タスクの実行前の段階でコアごとにタスクの割り当てを決める必要がある。しかしながら、負荷を事前に予測し完璧にタスクの振り分けを行うことは困難である。そこで、第１ＣＰＵで所定時間内に処理しきれない可能性がある場合に、第２ＣＰＵにタスクの移動を行い実行(処理)させる方式が考えられる。
【０００４】
特許文献１の開示は、第１ＣＰＵおよび第２ＣＰＵと、第１ＣＰＵに対応した第１メモリおよび第２ＣＰＵに対応した第２メモリと、を有するマイクロコンピュータにおいて、第１メモリ内にデータ領域を持つようにプログラムされたタスクが第２メモリに転送されて第２ＣＰＵで実行される場合に、該タスクによる第１メモリへのアクセスが第２メモリへのアクセスとなるように、第２ＣＰＵから出力されたアドレスを変換するためのアドレス変換回路を有する。これにより、負荷分散のためＣＰＵ間でタスクを移行する場合の演算性能の低下を回避することができる。
【０００５】
また、ソフトウェアが各タスクの処理時間を管理し、ＣＰＵごとの実行可否を判定する支援装置を有する構成も考えられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１９９４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、実際の処理においては、類似したタスクであってもその処理時間は一律ではなく、関連するソフトアーキテクチャやハードアーキテクチャによって実行時間に大きなばらつきが生じる虞がある。このため、アクセス先のメモリを変更した際のアクセスサイクルを削減したり、処理帯域の監視によりスループットの低下を抑制したりする手段では、スループットの向上には十分ではない。
【０００８】
また、処理時間のばらつきは、タスクの移行やメモリへのアクセスに係る処理増加させる虞があり、処理にかかる消費電力の増加を誘発する場合がある。
【０００９】
そこで、この明細書の開示は、ヘテロジニアスマルチコアを採用した電子制御装置において、より効果的にタスクの割り当てが可能な電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
この明細書の開示は、上記目的を達成するために以下の技術的手段を採用する。なお、特許請求の範囲およびこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、技術的範囲を限定するものではない。
【００１１】
上記目的を達成するために、この明細書に開示される電子制御装置は、複数の演算処理装置（１０，３０，５０）を含み、入力信号に基づいて処理を実行し出力信号を出力する制御部（７０）と、制御部が実行する処理におけるタスクごとに、該タスクを特徴付ける特徴量を抽出するとともに、特徴量に対応する実際のタスク処理時間を学習するタスク処理時間予測部（８０）と、を備え、タスク処理時間予測部は、タスクを実行する際に、実行すべきタスクに紐づく特徴量に基づいて、特徴量に対応して学習されたタスク処理時間を予測し、予測されたタスク処理時間に応じて、演算処理装置におけるタスクが実行可能な空き領域に処理を追加する。
【００１２】
これによれば、特徴量に基づいてタスク処理時間を学習させるので、類似したタスクであってもタスクの処理時間をより精度良く予測することができる。そして、精度良く予測されたタスク処理時間に基づいてタスクの割り当てを決定することができるので、ヘテロジニアスマルチコアを採用したマイコンにおけるスループットを向上することができる。
【００１３】
また、演算処理装置において処理が実行されていない空き領域に、効率よく処理を割り当てることができるので、メモリアクセスの回数を抑制できるとともに処理待ちの時間を抑制できる。このため、電子制御装置としての電力消費量を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】電子制御装置の概略構成を示す図である。
【図２】電子制御装置の機能ブロックを示すブロック図である。
【図３】制御部の動作を示すフローチャートである。
【図４】タスク処理時間予測部の動作を示すフローチャートである。
【図５】学習データ取得部の動作を示すフローチャートである。
【図６】機械学習部の動作を示すフローチャートである。
【図７】処理追加部の動作を示すフローチャートである。
【図８】タスク監視処理部の動作を示すフローチャートである。
【図９】電子制御装置の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１５】
以下に、図面を参照しながら本開示を実施するための複数の形態を説明する。各形態において先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を適用することができる。各形態で具体的に組み合わせが可能であることを明示している部分同士の組み合わせばかりではなく、特に組み合わせに支障が生じなければ、明示していなくても形態同士を部分的に組み合せることも可能である。
【００１６】
（第１実施形態）
最初に、図１および図２を参照して、本実施形態に係る電子制御装置の概略構成について説明する。
【００１７】
この電子制御装置１００は、車両における制御対象を制御するＥＣＵ、例えばエンジンＥＣＵ２００などに搭載されるマイコンを含むものであり、外部からの入力信号に対して出力信号を発出し、もってアクチュエータ等を制御する。
【００１８】
入力信号とは例えば車両の走行状態に関する各種情報であり、電子制御装置１００は入力された情報に基づいて適切なエンジン制御をさせるための出力信号を発出する。出力信号に基づいてエンジン回転数やスロットル開度が決定される。また別の例では、入力信号は例えば車両周辺の映像であり、電子制御装置１００は、入力された車両周辺の映像に基づいて車両の周囲の駐車スペースの状態を解析して出力信号を発出する。出力信号に基づいて車輪の角度や車両速度が制御され、車両が適切な位置に駐車する。
【００１９】
まず、図１を参照して、電子制御装置１００のハードウェア構成について説明する。この電子制御装置１００は、複数のＣＰＵ１０と、ＰＭＵ２０と、ＧＰＧＰＵ３０と、キャッシュ４０と、演算ユニット５０と、メモリ６０と、を備えている。そして、これらの各要素は、バス１１０によって相互に接続されている。
【００２０】
ＣＰＵ１０は中央演算処理装置であり、入力された入力信号に基づいてプログラムを実行して出力信号を出力している。ＣＰＵ１０は、後述するメモリ６０に格納されたプログラムを読み込んで実行することで、入力信号を処理して出力信号に変換している。本実施形態におけるＣＰＵ１０は、同一構成のコアを複数備えたマルチコア構成であり、実行すべき処理を複数のコアで分散処理している。これにより、比較的高負荷な処理であっても短時間に出力信号を出力することができる。なお、ＣＰＵ１０を構成するアーキテクチャの種類は限定されないし、後述するキャッシュ４０とは別に独自のキャッシュメモリを有していても良い。
【００２１】
ＰＭＵ２０はプロセシングモニタユニットであり、ＣＰＵ１０のほか、後述のＧＰＧＰＵ３０や演算ユニット５０の演算の状況を監視する部分である。ＰＭＵ２０は、プログラムカウンタごとに処理に係るトレースログや実行に要した時間を抽出し、キャッシュ４０やメモリ６０などの記憶装置に保持する。
【００２２】
ここで、トレースログとは、プログラムの進行状況が記載されたログデータであり、特許請求の範囲に記載の特徴量に相当する情報を含むデータである。ひとつのタスクの処理は、１つ以上のアドレスで実行される処理集まりであり、ＰＭＵ２０は、タスクごとにトレースログを紐付ける。すなわち、タスクごとに特徴量を収集する。
【００２３】
また、実行に要した時間とは、プログラムカウンタにより指定されたアドレスで実行された処理に要した時間である。ＰＭＵ２０は、上記した特徴量と同様に、タスクごとに処理に要した時間を収集する。これにより収集された時間は、タスクに対応したものであり、特許請求の範囲に記載のタスク処理時間に相当する。
【００２４】
ＧＰＧＰＵ３０はジェネラルパーパスグラフィックプロセシングユニットであり、ヘテロジニアスマルチコアを構成するプロセッサの一例として電子制御装置１００に含まれている。ＧＰＧＰＵ３０は、画像処理に最適化された処理装置であり、入力信号としての静止画または動画の処理に用いられる。なお、ＧＰＧＰＵ３０を構成するアーキテクチャの種類は限定されないし、後述するメモリ６０とは別に独自のメモリを有していても良い。
【００２５】
キャッシュ４０は記憶装置であり、転送元のハードウェアと転送先のハードウェアとの間でプログラムやその他データの一部または全部およびその参照を一時的に保持する機能を有している。キャッシュ４０は、例えばＣＰＵ１０やＰＭＵ２０、ＧＰＧＰＵ３０が接続されたバス１１０に接続されており、各ハードウェア間で送受信されるデータを一時的に保持する。キャッシュ４０は記憶階層の上位レベルであるＣＰＵ１０のキャッシュメモリと、下位レベルであるメモリ６０とを仲介する記憶階層に位置している。
【００２６】
演算ユニット５０は、ＣＰＵ１０やＧＰＧＰＵ３０と同様に入力信号に対して処理を実行して出力信号を発出するものであるが、ソフトウェアを実装するＣＰＵ１０やＧＰＧＰＵ３０とは異なり、ハードウェア実装により処理を実行する専用ユニットである。演算ユニット５０には、例えば、ハードウェアアクセラレータなどがある。演算ユニット５０もヘテロジニアスマルチコアを構成するプロセッサの一例として電子制御装置１００に含まれている。
【００２７】
メモリ６０は記憶装置であり、例えばフラッシュメモリ、ハードディスク、ＳＳＤなどのＲＯＭや、ＤＲＡＭやＳＲＡＭといったランダムアクセスメモリ（ＲＡＭ）である。メモリ６０はプログラムやその他のデータを保持している。メモリ６０は、ＣＰＵ１０やＧＰＧＰＵ３０で演算された結果や、収集される学習データ等を保持している。ＣＰＵ１０やＧＰＧＰＵ３０が命令を実行する際には、求められたタスクに応じてメモリ６０からプログラムが読み出され、メモリ６０あるいはキャッシュ４０に一時的に保持された入力信号が読み出されたプログラムに基づいて処理される。
【００２８】
本実施形態においては、複数のＣＰＵ１０、ＧＰＧＰＵ３０、および演算ユニット５０が、特許請求の範囲に記載の演算処理装置に相当し、制御部を構成する。
【００２９】
次いで、図２を参照して、電子制御装置１００が備える機能ブロックについて説明する。なお、以下に説明する各機能は、ハードウェア、ソフトウェアのいずれによって実現されてもよい。
【００３０】
図２に示すように、電子制御装置１００は、機能ブロックとして、制御部７０と、タスク処理時間予測部８０と、を備えている。タスク処理時間予測部８０は、内部の機能ブロックとして、監視部８１、学習データ取得部８２、機械学習部８３、処理追加部８４、および、タスク監視処理部８５を有している。
【００３１】
制御部７０は、入力信号に基づいて処理を実行し、出力信号を生成および発出する部位である。制御部７０の上記機能は主にプロセッサによって実行されるのであり、ＣＰＵ１０、ＧＰＧＰＵ３０、演算ユニット５０によって実現される。制御部７０は、プログラムカウンタをカウントアップしながら入力信号に基づいたプログラムを実行し、入力信号に対する処理を行うとともに、プログラムの内容に応じた出力信号を出力する。
【００３２】
タスク処理時間予測部８０は、制御部７０により実行される処理をプログラムカウンタごとに監視し、タスクの処理に要する時間を機械学習アルゴリズムにより学習し、その結果を以ってタスク処理時間を予測する。上記のとおり、タスク処理時間予測部８０は、内部の機能ブロックとして、監視部８１、学習データ取得部８２、機械学習部８３、処理追加部８４、および、タスク監視処理部８５を有している。
【００３３】
監視部８１は、制御部７０が実行するタスクに含まれる処理をプログラムカウンタごとに監視する部位である。具体的には、監視部８１は、制御部７０が実行する処理に関するトレースログを取得し、処理に要する時間を計測している。監視部８１の機能は、おもにＰＭＵ２０が担当する。トレースログに含まれる要素としては、例えば、実行サイクル数（Processing cycle）、全実行命令数（Number of instruction）、条件分岐のtakenの割合（Branch taken）、Ｌ１Ｄキャッシュのヒット率（Hit ration of Level1 data）、Ｌ１Ｉキャッシュのヒット率（Hit ration of Level1 Instruction）、Ｌ２Ｄキャッシュのヒット率（Hit ration of Level2 data）、Ｌ２Ｉキャッシュのヒット率（Hit ration of Level2 Instruction）、条件分岐命令中における分岐先の処理率（Predictable branch speculatively executed）などがある。なお、Ｌ１Ｄキャッシュ、Ｌ１Ｉキャッシュ、Ｌ２Ｄキャッシュ、Ｌ２Ｉキャッシュは、キャッシュ４０に含まれるキャッシュに属しても良いし、ＣＰＵ１０を構成するチップ内に内蔵されるキャッシュメモリに属しても良い。
【００３４】
トレースログの取得サイクルは、本実施形態のようにプログラムカウンタごととしても良いし、単位時間あたりに設定したり、関数ごと、タスクごとに設定したりしても良い。
【００３５】
監視部８１はトレースログおよびタスク処理時間を学習データ取得部８２に渡す。ここで、トレースログの各項目のうち、タスクの処理時間に影響を与えるものを特徴量と称する。上記したトレースログの例はすべてタスクの処理時間に影響を及ぼすものであり、特徴量の例でもある。特徴量は、ハードウェア単体の情報だけでも、ソフトウェア単体の情報だけでもなく、ハードウェアとソフトウェアの協業による双方の特徴を畳み込んだ制御全体としての特徴を示すパラメータである。よって、ハードウェアやソフトウェアが変更になれば特徴量の値も変化するし、ノイズ、電子制御装置１００が置かれる環境温度、入力信号などの外的要因によっても変化する。
【００３６】
学習データ取得部８２は、監視部８１から特徴量およびタスク処理時間の情報を取得し、学習データとして統計的に整理する部位である。タスク処理時間の情報は、後に詳述するタスク監視処理部８５からも取得する。学習データは、必ずしも電子制御装置１００自身の備えるメモリ６０に格納される必要はなく、例えば、クラウド上に格納され、他のＥＣＵ等と学習データを共有しても良い。
【００３７】
機械学習部８３は、所定のタスクに関連する特徴量を抽出し、その特徴量を有した状態で実行されたタスクのタスク処理時間と特徴量とを関連付けて学習する部位である。この学習は機械学習アルゴリズムを利用して行われる。機械学習アルゴリズムは、例えば、ｋ近似法、ＳＶＭ（support vector machine）、決定木、ランダムフォレストなどを用いた統計的分類アルゴリズムである。機械学習部８３により、実行されるタスクに対応して入力される特徴量（説明変数）に対して、タスク処理時間が目的変数として紐付けられる。
【００３８】
なお、タスクによっては、特徴量がほぼ同一であってもタスク処理時間が大きくばらつく場合があるが、ばらつくという事実自体も学習する。すなわち、特徴量に対して、タスク処理時間が略一定なのか、あるいは一定しないのかも学習する。
【００３９】
機械学習部８３は、特徴量とタスク処理時間との紐付けを機械学習アルゴリズムにより行うとともに、入力された特徴量に対して、予測されるタスク処理時間を出力して処理追加部８４に渡す。
【００４０】
処理追加部８４は、予測されたタスク処理時間に応じて、ＣＰＵ１０やＧＰＧＰＵ３０における、タスクが実行可能な空き領域に別の処理を追加する部位である。処理追加部８４は、予測されたタスク処理時間に応じて追加すべき処理を決定し、その処理を実行可能なＣＰＵ１０あるいはＧＰＧＰＵ３０などのプロセッサに処理を追加する。
【００４１】
タスク監視処理部８５は、予測したタスク処理時間の正答率を算出して学習データに反映させ、学習データにおける所定のタスクに対するタスク処理時間のばらつきを検出し、予測したタスク処理時間に基づいて投入した別の処理が実際に処理を完了できたか否かを検証する部位である。ここで、正答率とは、例えば、予測されたタスク処理時間と実際に実行されたときのタスク処理時間との差の絶対値が所定の許容値以下であるときを正答とし、差の絶対値が許容値より小さいときを誤答として、正答と誤答の総計に対する正答の数の割合として算出されるものである。タスク監視処理部８５は、タスク処理時間の情報を監視部８１から取得している。
【００４２】
次に、図３〜図９を参照して、本実施形態にかかる電子制御装置１００の具体的な動作フローについて説明する。図３は制御部７０の動作を示すフローチャートであり、図４〜図８はタスク処理時間予測部８０の動作を示すフローチャートであり、図９は制御部７０の実行に係るタイミングチャートである。
【００４３】
図３は、電子制御装置１００が入力信号に対して出力信号を発出するフローを示す図である。図３に示すように、ステップＳ１において電子制御装置１００に入力信号が入力されると、ステップＳ２に示すように制御部７０が入力信号に応じた処理を行う。制御部７０はプログラムを読み込むなどして入力信号を加工し、ステップＳ３に示すように出力信号を生成して発出する。
【００４４】
図４は、タスク処理時間予測部８０の全体的な動作フローを示す図である。本実施形態では、タスク処理時間予測部８０が、制御部７０が実行するプログラムの進行に応じてカウントアップするプログラムカウンタ毎に図４に示すフローを実施して、タスクに対応した処理時間の学習ならびに予測を行う例について説明する。ここで学習の対象とされるタスクは、図９に示す例では、「TASK A」「TASK B」「TASK C」と示された処理である。
【００４５】
図４に示すように、タスク処理時間予測部８０は、ステップＳ１００を実行する。ステップＳ１００は、学習データ取得部８２が監視部８１から特徴量およびタスク処理時間の情報を取得し、学習データとして統計的に整理するステップであり、図５に示すフローに従う。図を参照して詳しく説明する。
【００４６】
図５に示すように、まずステップＳ１０１が実行される。ステップＳ１０１は、学習データ取得部８２が監視部８１から特徴量およびタスク処理時間の情報を取得するステップである。特徴量は、上記したとおり、例えばトレースログに含まれる情報であり、例えば実行サイクル数やキャッシュのヒット率等が含まれる。
【００４７】
次いで、ステップＳ１０２が実行される。ステップＳ１０２は、学習すべき対象のタスクが以前にステップＳ１０２を実行した時点から遷移しているか否かを判定するステップである。タスクが遷移していればステップＳ１０２はＹＥＳ判定となり、ステップＳ１０３に進む。
【００４８】
ステップＳ１０３は、ステップＳ１０１で取得した特徴量およびタスク処理時間を格納するメモリ６０上の格納領域を変更するステップである。ステップＳ１０２がＹＥＳ判定であれば、ステップＳ１０３において該当する格納領域に特徴量およびタスク処理時間が格納されるように、その格納先を変更する。すなわち、特徴量およびタスク処理時間は、実行されるタスク毎に分類されて所定の格納領域に格納されるようになっている。よって、ステップＳ１０２がＮＯ判定であれば、ステップＳ１０３を介さずにフローが進行する。
【００４９】
ステップＳ１０２がＮＯ判定か、あるいはステップＳ１０３を実行した後、ステップＳ１０４が実行される。ステップＳ１０４は、タスクごとに設定されたメモリ６０上の格納領域に特徴量およびタスク処理時間を格納するステップである。ステップＳ１０４によりタスクごとに分類された特徴量およびタスク処理時間を学習データと称する。
【００５０】
以上のステップＳ１０１〜ステップＳ１０４を含むステップＳ１００を経て、学習データが得られる。
【００５１】
次に、図４に示すように、タスク処理時間予測部８０は、ステップＳ２００を実行する。ステップＳ２００は、機械学習部８３が、特徴量とタスク処理時間との紐付けを機械学習アルゴリズムにより行うとともに、入力された特徴量に対してタスク処理時間を予測するステップであり、図６に示すフローに従う。図を参照して詳しく説明する。
【００５２】
図６に示すように、まずステップＳ２０１が実行される。ステップＳ２０１は、機械学習部８３が学習データ取得部８２から学習データを受け取り、タスクごとに学習データに含まれる特徴量およびタスク処理時間の情報を抽出するステップである。学習データは、ステップＳ１００においてタスクごとに所定の格納領域に格納されているので、機械学習部８３は、タスク処理時間の予測が必要なタスクに対して学習データを取得し、特徴量およびタスク処理時間の情報を抽出する。
【００５３】
次いで、ステップＳ２０２が実行される。ステップＳ２０２は、タスク処理時間に影響を与える特徴量を選択するステップである。機械学習部８３は、特徴量とタスク処理時間とを紐付けて学習する機能とともに、入力される特徴量に対するタスク処理時間を与える関数の機能を有するのであり、特徴量が説明変数、タスク処理時間が目的変数となる。ステップＳ２０２は、特徴量のうち、説明変数と成り得る特徴量を選択するステップである。なお、特徴量が同一であってもタスクの処理時間が一定であるとは限らないため、機械学習部８３における関数は全単射であるとは限らない。すなわち、特徴量に対してタスク処理時間にばらつきを生じることもあるし、ばらつき以上に明らかに異なる２つ以上のタスク処理時間が学習されることもある。これはタスク監視処理部８５により監視される。
【００５４】
次いで、ステップＳ２０３が実行される。ステップＳ２０３は、タスクに対して特徴量が複数含まれる場合において、特徴量を統合するなどして次元を削減するステップである。具体的には、タスク処理時間と相関を有する多数の特徴量から、多変量解析により、タスク処理時間をもっともよく表す主成分を合成する操作であり、例えば主成分分析を採用することができる。ステップＳ２０３を経ることにより、学習に用いる変数の量を削減できるため、学習に係る負荷ならびにタスク処理時間の予測に係る負荷を軽減することができる。
【００５５】
次いで、ステップＳ２０４が実行される。ステップＳ２０４は、特徴量あるいは主成分分析により合成された説明変数に対応する、目的変数たるタスク処理時間を作成するステップである。
【００５６】
次いで、ステップＳ２０５が実行される。ステップＳ２０５は、機械学習アルゴリズムに基づいて、抽出された特徴量あるいは生成された説明変数と、目的変数たるタスク処理時間とを統計的に紐付けるステップである。また、ステップＳ２０５では、入力された特徴量に対して、機械学習により予測されたタスク処理時間を出力するステップでもある。機械学習アルゴリズムとしては、例えばｋ近似法、ＳＶＭ（support vector machine）、決定木、ランダムフォレストなどを採用できる。ステップＳ２０５を経ることにより、特徴量（説明変数）とタスク処理時間（目的変数）とが対応付けされるとともに、入力された特徴量に対して、タスク処理時間を予測して出力する。
【００５７】
次に、図４に示すように、タスク処理時間予測部８０は、ステップＳ３００を実行する。ステップＳ３００は、処理追加部８４が予測されたタスク処理時間に応じて、ＣＰＵ１０やＧＰＧＰＵ３０などのプロセッサにおける、タスクが実行可能な空き領域に処理を追加するステップであり、図７に示すフローに従う。図を参照して詳しく説明する。なお、ステップＳ３００は、タスクの実行が要求されたことに対して処理を追加するステップであるから、タスクごとに実行されるフローである。
【００５８】
図７に示すように、まずステップＳ３０１が実行される。ステップＳ３０１は、処理追加部８４が、所定のタスクにおいて、予測されたタスク処理時間の、予測の正答率が所定の閾値よりも高いが否かを判定するステップである。
【００５９】
正答率は、以下のように例えば計算される。すなわち、予測されたタスク処理時間と実際に実行されたときのタスク処理時間との差の絶対値が所定の許容値以下であるときを正答とし、差の絶対値が許容値より小さいときを誤答とする。正答の頻度（ａ）と誤答の頻度（ｂ）の総計（ａ＋ｂ）に対する正答の頻度の割合として算出される。つまり、正答率Ｒは、Ｒ＝ａ／（ａ＋ｂ）と定義される。正答率Ｒの計算は学習データの監視を担うステップＳ４００で実行されるので、詳細は後述する。なお、正答率Ｒの更新はステップＳ３００の後に実行されるステップＳ４００で実行されるが、ステップＳ３００で用いられる正答率Ｒは、過去に実行されたステップＳ４００で計算された最新のデータが参照される。
【００６０】
ステップＳ３０１においては、正答率と比較する閾値を例えば９０％としている。ステップＳ３０１では、実行されるべきタスクに紐付けられた正答率Ｒと、閾値である９０％が比較されて、Ｒ＞９０％であればＹＥＳ判定となる。Ｒ≦９０％の場合にはＮＯ判定となる。ステップＳ３０１がＮＯ判定のときは、プロセッサの空き領域に処理を追加しても実行が間に合わない可能性があるため、処理の追加を行わない。
【００６１】
ステップＳ３０１がＹＥＳ判定のとき、ステップＳ３０２に進む。ステップＳ３０２は、予測されたタスク処理時間が所定の時間以上か否かを判定するステップである。所定の時間は任意に設定されるものであるが、ステップＳ３０２では例えば１０μｓとされている。予測されたタスク処理時間が１０μｓより短い場合にはステップＳ３０２はＮＯ判定となりステップＳ３０３に進み、「処理１」を空き領域のあるプロセッサに追加するよう指示する。タスク処理時間が１０μｓより短いと予測されたときには、プロセッサが比較的空いている状態であると想定できるので、「処理１」は比較的高負荷な処理を選択できる。ステップＳ３０２がＹＥＳ判定の場合にはステップＳ３０４に進む。
【００６２】
ステップＳ３０４は、ステップＳ３０２と同様に、予測されたタスク処理時間が所定の時間以上か否かを判定するステップである。所定の時間は任意に設定されるものであるが、ステップＳ３０４では例えば２０μｓとされている。予測されたタスク処理時間が２０μｓより短い場合にはステップＳ３０４はＮＯ判定となりステップＳ３０５に進み、「処理２」を空き領域のあるプロセッサに追加するよう指示する。「処理２」に利用できる時間は「処理１」よりも短くなると想定できるので、「処理２」は「処理１」よりも軽負荷な処理となる。ステップＳ３０４がＹＥＳ判定の場合にはステップＳ３０６に進む。
【００６３】
ステップＳ３０６は、ステップＳ３０２およびステップＳ３０４と同様に、予測されたタスク処理時間が所定の時間以上か否かを判定するステップである。所定の時間は任意に設定されるものであるが、ステップＳ３０６では例えば３０μｓとされている。予測されたタスク処理時間が３０μｓより短い場合にはステップＳ３０６はＮＯ判定となりステップＳ３０７に進み、「処理３」を空き領域のあるプロセッサに追加するよう指示する。「処理３」に利用できる時間は「処理２」よりも短くなると想定できるので、「処理３」は「処理２」よりも軽負荷な処理となる。ステップＳ３０６がＹＥＳ判定の場合には、プロセッサの空き領域に処理を追加しても実行が間に合わない可能性があるため、処理追加部８４は処理の追加を指示しない。
【００６４】
ここで、追加される処理１、処理２、処理３は、図９に示す「ADD TASK」に相当する。なお、上記した例では、タスク処理時間のクラス分類として、０μｓ−１０μｓ、１０μｓ−２０μｓ、２０μｓ−３０μｓ、３０μｓ以上、という４段階を例示したが、クラス分類の数はプロセッサや実行されるタスクの種類によって適宜設定できるものである。
【００６５】
次に、図４に示すように、タスク処理時間予測部８０は、ステップＳ４００を実行する。ステップＳ４００は、予測したタスク処理時間の正答率を算出して学習データに反映させ、学習データにおける所定のタスクに対するタスク処理時間のばらつきを検出し、予測したタスク処理時間に基づいて投入した別の処理が実際に処理を完了できたか否かを検証するステップである。ステップＳ４００は図８に示すフローに従う。図を参照して詳しく説明する。
【００６６】
図８に示すように、まずステップＳ４０１が実行される。ステップＳ４０１は、タスク監視処理部８５が、監視部８１から取得した実際のタスク処理時間と、機械学習部８３により予測されたタスク処理時間とを比較して、その差異を検証するステップである。具体的には、あるタスクが実行された場合において、実際のタスク処理時間と予測されたタスク処理時間との差の絶対値（Δｔ）と、予め決められた許容値（Ｔ）と、を比較する。Δｔ≦Ｔであれば、予測値と実測値との差異が許容できる範囲にあることになり正答となる。正答の場合にはステップＳ４０２に進み、正答率がアップするように正答率が更新される。Δｔ＞Ｔであれば、予測値が実測値から許容できない程度にずれていることになり誤答となる。誤答の場合にはステップＳ４０３に進み、正答率がダウンするように正答率が更新される。
【００６７】
次いで、ステップＳ４０４が実行される。ステップＳ４０４は、監視部８１から取得した実際のタスク処理時間と、更新された正答率と、を学習データ取得部８２に発出して学習データに反映させるステップである。
【００６８】
次いで、ステップＳ４０５が実行される。ステップＳ４０５は、学習データに含まれるタスク処理時間（目的変数）の統計的なばらつきを検証するステップである。統計的なばらつきを表す特性値としては、例えば分散や標準偏差などを採用できるが、いずれの特性値を採用するかは任意である。ここで、タスク処理時間のばらつきが所定の許容値よりも大きいときにはステップＳ４０６に進み、使用者に対してタスク処理時間のばらつきが大きい旨の報知を行う。
【００６９】
次いで、ステップＳ４０７が実行される。ステップＳ４０７は、追加した処理の終了時間が所定の閾値より大きいか否かを判定するステップである。ここで、所定の閾値とは、追加した処理の後に実行されるタスクが開始される時間であり、追加した処理の終了時間が所定の閾値より大きいとは、追加した処理が実際には実行しきれなかったことを示す（図９に示す最下段のような状態）。このような場合にはステップＳ４０８に進む。ステップＳ４０８は、プログラムカウンタをアイドル状態のタスクのアドレスに切り替えることによって追加処理を中断し、ステップＳ４０９に進んで正答率をリセットする。
【００７０】
一方、追加した処理の終了時間が所定の閾値以下とは、追加した処理が実際に実行できたことを示し（図９に示す中段のような状態）、ステップＳ４０７はＮＯ判定となってステップＳ４０８およびステップＳ４０９を経ずにフローを継続する。
【００７１】
次に、本実施形態における電子制御装置１００を採用することによる作用効果について説明する。
【００７２】
この電子制御装置１００は、特徴量に基づいてタスク処理時間を学習させるので、類似したタスクであっても特性値に基づいたタスク処理時間を予測に用いることでより精度良くタスクの空きを予測することができる。そして、精度良く予測されたタスク処理時間に基づいてタスクの割り当てを決定することができるので、ヘテロジニアスマルチコアを採用したマイコンにおけるスループットを向上することができる。
【００７３】
また、演算処理装置（プロセッサ）において処理が実行されていない空き領域に、効率よく処理を割り当てることができるので、メモリアクセスの回数を抑制できるとともに処理待ちの時間を抑制できる。このため、電子制御装置としての電力消費量を抑制することができる。
【００７４】
とくに、本実施形態における電子制御装置１００においては、タスク処理時間を予測するための特徴量について、主成分分析による次元の削減を行うので、学習に用いる変数の量を削減できる。このため、学習に係る負荷ならびにタスク処理時間の予測に係る負荷を軽減することができる。
【００７５】
さらに、本実施形態における電子制御装置１００においては、予測されたタスク処理時間に対して、正答率を算出して学習データに反映している。予測されたタスク処理時間の正答率が低い場合には、プロセッサの空き領域に処理の追加を実行しても、処理が完了できない虞があり、処理の追加を行う処理自体が無駄な処理になる虞がある。これに対して、電子制御装置１００は、正答率が比較的高いタスクにおいて処理の追加を実行するので、追加した処理の完遂についての信頼性を向上することができる。
【００７６】
さらに、本実施形態における電子制御装置１００においては、収集された学習データにおけるタスク処理時間のばらつきを検証し、ばらつきが大きい場合には使用者に報知するようになっている。機械学習によって、特徴量とタスク処理時間との紐付けが出来ている場合でも、統計的なばらつきが大きいと、追加できる処理の見積もり（ランク分類）が困難になる場合がある。電子制御装置１００は、この可能性を使用者に報知することができる。
【００７７】
さらに、本実施形態における電子制御装置１００においては、追加した処理が、実際に処理しきれなかった場合には、正答率をリセットするようになっている。すなわち、タスク処理時間の予測に誤りがある場合には、正答率が意図せずに高く算出されている虞があるため、正答率をリセットすることで処理追加の精度の低下を抑制することができる。
【００７８】
（その他の実施形態）
この明細書および図面等における開示は、例示された実施形態に制限されない。開示は、例示された実施形態と、それらに基づく当業者による変形態様を包含する。例えば、開示は、実施形態において示された部品および／または要素の組み合わせに限定されない。開示は、多様な組み合わせによって実施可能である。開示は、実施形態に追加可能な追加的な部分をもつことができる。開示は、実施形態の部品および／または要素が省略されたものを包含する。開示は、ひとつの実施形態と他の実施形態との間における部品および／または要素の置き換え、または組み合わせを包含する。開示される技術的範囲は、実施形態の記載に限定されない。開示されるいくつかの技術的範囲は、請求の範囲の記載によって示され、さらに請求の範囲の記載と均等の意味及び範囲内での全ての変更を含むものと解されるべきである。
【００７９】
上記した実施形態では、機械学習部８３が、特徴量に対して次元を削減するステップを実行する例について説明したが、次元の削減は必ずしも必要ではない。ただし、次元を削減することにより電子制御装置１００の処理負荷が軽減されることは、上記したとおりである。また、主成分分析の方法についてはある一つの方法に限定するものではない。
【００８０】
また、処理追加部８４が処理の追加に際して、正答率が所定の値よりも高いことを要求する例について説明したが、処理の追加は、正答率と関係なく行うことができる。ただし、正答率に基づいて処理の追加の有無を判断することで、追加した処理の完了可否の不確かさを軽減することができることは、上記したとおりである。
【００８１】
また、追加した処理が完遂できなかった場合に正答率をリセットする例を説明したが、正答率をリセットしなくても実質的なフローの継続は可能である。
【符号の説明】
【００８２】
１０…ＣＰＵ，２０…ＰＭＵ，３０…ＧＰＧＰＵ，４０…キャッシュ，５０…演算ユニット，６０…メモリ，７０…制御部，８０…タスク処理時間予測部，８１…監視部，８２…学習データ取得部，８３…機械学習部，８４…処理追加部，８５…タスク監視処理部
【図１】
2019125093.tif 000003
【図２】
2019125093.tif 000004
【図３】
2019125093.tif 000005
【図４】
2019125093.tif 000006
【図５】
2019125093.tif 000007
【図６】
2019125093.tif 000008
【図７】
2019125093.tif 000009
【図８】
2019125093.tif 000010
【図９】
2019125093.tif 000011