JP5195913B2 - マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法 - Google Patents

マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法 Download PDF

Info

Publication number
JP5195913B2
JP5195913B2 JP2010521618A JP2010521618A JP5195913B2 JP 5195913 B2 JP5195913 B2 JP 5195913B2 JP 2010521618 A JP2010521618 A JP 2010521618A JP 2010521618 A JP2010521618 A JP 2010521618A JP 5195913 B2 JP5195913 B2 JP 5195913B2
Authority
JP
Japan
Prior art keywords
cpu core
task
core
cpu
processing load
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.)
Expired - Fee Related
Application number
JP2010521618A
Other languages
English (en)
Other versions
JPWO2010010723A1 (ja
Inventor
一美 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
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 Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2010521618A priority Critical patent/JP5195913B2/ja
Publication of JPWO2010010723A1 publication Critical patent/JPWO2010010723A1/ja
Application granted granted Critical
Publication of JP5195913B2 publication Critical patent/JP5195913B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Microcomputers (AREA)

Description

本発明は、複数のCPUコアがタスク毎に処理を実行するマルチコアシステム、車両用電子制御ユニット及びタスク切り替え方法に関する。
プログラムの実行処理では、プログラムからCPUの実行単位であるタスクを生成し、複数のタスクをスケジューリングしながら実行している。実行時間を保証する必要のある処理では、スケジューラが各タスクの優先度を決定し、優先度に応じてディスパッチャがCPUにタスクを割り当てることができる。
そして複数のCPUコアが実装されたコンピュータでは、複数のタスクを各CPUコアに時間的に重複して割り当てることで、処理効率を向上させている(例えば、特許文献1参照。)。特許文献1には、各タスクの並列処理可能度を算出し、並列処理可能度と処理時間の大小に応じて、各タスクを各CPUコアへ割り当てるマルチプロセッサシステムが記載されている。
また、複数のCPUコアを別のOS上で動作させ、各OSでそれぞれタスクを分担して実行する場合がある(例えば、特許文献2参照。)。特許文献2には、OS毎に負荷を判定し、処理負荷の低いOS上で作動しているCPUコアを処理負荷の大きいOS上で作動させることで、OS間の処理負荷を調整するマルチプロセッサシステムが記載されている。
しかしながら、特許文献2に記載されているようにCPUコアに動的にタスクを割り当てると、不都合が生じる場合がある。例えば、モータ制御の一連のプロセスでは、前回のタスクの実行結果を次のタスクのフィードバック制御に適用してタスクを実行することが多い。例えば、電気モータの回転数を急激に増大させることは困難なので、電気モータの通電量をフィードバック制御により決定するタスクは、前回の通電量に応じた目標値が得られるように電気モータの通電量を演算する。
このように、制御系のマルチコアシステムでは、前回のタスクの実行結果を利用できないと期待した実行結果が得られないことがあり、処理負荷に応じて単にタスクを割り当てるCPUコアを切り替えたり、新たなCPUコアに並列処理を依頼すると制御量が急変し制御が破綻するおそれがあるという問題がある。
一般に、複数のCPUコアは共有メモリやIPC(Inter Process Communication)などにより実行結果を受け渡すことができるが、共有メモリの内容が破壊されたり、プロセス間通信が遅延したりすることがあるため、かかる仕組みに期待するだけでは十分でない。
また、このようなマルチコアシステムの負荷分散は、情報処理系のタスクにおいては従来から知られているが、情報処理系のタスクではデータの入力と出力がほぼ一対一に対応し、前回のタスクの実行結果が次のタスクに必要となることは少ないため、制御処理系のタスクでは、前回のタスクの実行結果を考慮したタスクの割り当てについて、これまで提案されていない。
特開平10−143380号公報 特開2007−188212号公報
上記課題に鑑み、本発明は、制御の急変を生じさせずにタスクを実行するCPUコアを切り替えることができるマルチコアシステム、車両用電子制御ユニット及びタスク切り替え方法を提供することを目的とする。
上記課題に鑑み、本発明は、制御系のプログラムを当該マルチコアシステムが実行して生成したタスクを、CPUコアに割り当てて実行するマルチコアシステムであって、第1のCPUコア1が実行する前記タスクを、第2のCPUコア2に切り替えて実行する際、タスクを第2のCPUコア2に試験実行させる試験実行指示手段(例えば、ディスパッチャ33)と、第1のCPUコアの実行結果と第2のCPUコアの実行結果が一致したか否かを判定する判定手段と、第1のCPUコアの実行結果と第2のCPUコアの実行結果が一致すると判定された場合、前記タスクの割り当て先を第2のCPUコアに確定する割り当て確定手段と、を有することを特徴とする。
制御の急変を生じさせずにタスクを実行するCPUコアを切り替えることができるマルチコアシステム、車両用電子制御ユニット及びタスク切り替え方法を提供することができる。
マルチコアシステムによる負荷分散を模式的に説明する図の一例である。 CPUコア1とCPUコア2の処理負荷に偏りがある場合の負荷分散を模式的に示す図である。 マルチコアシステムが実現するプラットフォームを模式的に示す図の一例である。 マルチコアシステムを搭載したECU(電子制御ユニット)の概略構成図の一例である。 マルチコアシステムの機能ブロック図の一例である。 優先テーブルの一例を示す図である。 一致判定テーブルの一例を示す図である。 マルチコアシステムがタスクをCPUコアに割り当てる手順を示すフローチャート図の一例である。 処理の平準化、CPUコアの停止の手順の一例を示すフローチャート図の一例である。 CPUコアが3以上の場合の処理負荷の平準化を模式的に示す図の一例である。 マルチコアシステムによる負荷分散を模式的に説明する図の一例を示す(実施例2)。 マルチコアシステムの機能ブロック図の一例である(実施例2)。 マルチコアシステムが、高負荷となったCPUコア1と、タスクAの実行結果が最も早く一致したCPUコア2にタスクAの割り当て先を決定する手順を示すフローチャート図の一例である。
符号の説明
11 AP(制御系のプログラム)
12 OS
13 OS間連携部
14 ハードウェアリソース(HW)
25 センサ類
26 アクチュエータ類
50 ECU(電子制御ユニット)
100 マルチコアシステム
以下、本発明を実施するための最良の形態について図面を参照しながら実施例を挙げて説明する。
図1Aは、本実施形態のマルチコアシステム100による負荷分散を模式的に説明する図の一例を示す。図1Aのマルチコアシステム100は、2つのCPUコア1とCPUコア2(以下、区別しない場合、CPUコア1~nという)とを有し、CPUコア1はスケジューリングされた結果に応じてタスク1、タスク2を実行している。そして、例えばOS(Operating System)がCPUコア1の処理負荷が高くなったこと又は高くなる可能性(以下、高負荷推定という場合がある)を検出すると、CPUコア2がCPUコア1から所定のタスク(図ではタスクA)のコンテキストを受け取り(必ずしも受け取らなくてもよい)、CPUコア2がタスクAを試験実行する。また、CPUコア1は、制御上の要請によりタスクAを実行(以下、実需の実行という場合がある)するか、又は、CPUコア1もタスクAを試験実行する。すなわち、いずれの場合もCPUコア1がタスクAを実行する。
そして、OSはCPUコア1とCPUコア2によるタスクAの実行結果が一致するか否かを判定し、一致する場合に、タスクAを実行するCPUコア1~nをCPUコア1からCPUコア2に切り替える。
CPUコア1とCPUコア2の実行結果を検証した後に、タスクAを実行するCPUコア1~nを切り替えることで、前回の実行結果が今回の実行結果に反映される制御系の処理においても、タスクAの演算結果に基づく制御に破綻をきたすことなく実行するCPUコア1~nを切り替えることができる。また、タスクAを割り当てた後、CPUコア1はタスクBを実行し、CPUコア2はタスクAを実行するので、マルチコアシステム100の処理負荷を分散することができる。
図1Bは、CPUコア1とCPUコア2の処理負荷に偏りがある場合の負荷分散を模式的に示す図である。例えば、OSがCPUコア1と2の処理負荷に偏りを検出するか又は偏りを予測すると(以下、偏り推定という場合がある)、図1Aと同様に、CPUコア2がCPUコア1から所定のタスク(図ではタスクA)のコンテキストを受け取り(必ずしも受け取らなくてもよい)、両者がタスクAを実行する。OSは、両者でタスクAを実行し実行結果が一致した場合に、タスクAを実行するCPUコア1~nをCPUコア2に切り替える。したがって、CPUコア2が起動している状態でも、実行結果を検証した後、負荷分散することができる。
図2は、マルチコアシステム100が実現するプラットフォームを模式的に示す図の一例である。マルチコアシステム100は、1つのハードウェアリソース(以下、HWという)14上で1以上のOS1、OS2(以下、区別しない場合、OS12という)を独立かつ並行に動作させることができる。また、OS1上ではアプリケーションAP1〜APn(以下、区別しない場合、単にAP11という)が独立に実行可能であり、例えばAP1の処理がAP2の処理結果に影響を与えないようになっている。
このAP11のそれぞれが例えば、エンジン制御プログラム、白線や歩行者を認識する撮影系を処理するカメラ制御プログラム、ナビゲーションプログラム、等である。本実施形態のマルチコアシステム100は、エンジンやアクチュエータなどのハードウェアを制御する制御系のAP11(AP11から生成されるタスク)の実行時における、負荷分散を可能とする。また、カメラ制御プログラムは、カメラで撮影した画像を処理するものであるが、処理結果(例えば、幅員、曲率などの白線情報が得られる)を用いて例えば電動パワーステアリングの操舵角を制御することがあるため、制御系のプログラムと一体である。また、このように車外を撮影するカメラだけでなく、運転者の脇見や眠気の強さを検出するカメラ制御プログラムにおいても、脇見や眠気の強さの検出結果がブザー音を吹鳴するなどの制御に利用されるので制御系のプログラムに含まれる。同様に、ナビゲーションプログラムにおいても自車位置が交差点手前やカーブ手前に来るとシフトダウンや減速するなどの車両制御に関わるため、制御系のプログラムに含まれる。また、照明、施錠/解錠、ワイパー等を制御するボディ系を制御するプログラムも制御系のプログラムに含まれる。
また、マルチコアシステム100に好適なAP11は制御の有無により判別されるだけでなく、処理態様からも判別可能である。AP11のタスクが、電気モータの通電量やエンジン回転数のように物理状態が連続的に変化するハードウェアを制御するタスクの場合、CPUコア1~nは同じタスクの過去の実行結果が用いてタスクを実行する。したがって、制御系のAP11とは、CPUコア1~nが過去の実行結果を用いて同じタスクを実行するプログラム、又は、過去の実行結果が次の実行結果に反映されるプログラムと定義することができる。このような制御はフィードバック制御に多く実装されている。
本実施形態では、CPUコア1とCPUコア2によりOS1を実行し、CPUコア1とCPUコア2でAP11のタスクA〜Cを実行しているものとする。各タスクA〜CとAP1〜APnは1対1に対応してもよいし、しなくてもよい。なお、図ではAP11はOS1上で実行されているが、マルチコアシステム100がマルチOSのプラットフォームの場合、AP11の一部又は全てがOS2で実行されていてもよい。
HW14は、CPUコア1〜nに加え、メモリ(RAM21、CPUコアのキャッシュメモリ、記憶装置22)14a、I/Oデバイス(例えば、アクチュエータとのインターフェイス、スイッチ素子、タッチパネル、ディスプレイ等)14b、その他のハードウェアを有する。HW14には少なくとも2以上のCPUコア1,2(マルチコア型)又は複数のCPU(マルチCPU型)が備えられている。CPUコア1とCPUコア2は、それぞれが同じアーキテクチャのホモジニアスでもよいし、異なるアーキテクチャを用いたヘテロジニアスでもよい。
OS間連携部13は、ユーザ(例えば運転者)が存在を意識することのない常駐型のソフトウェアで、OS1とOS2に対しHW14を論理的(時間的にも)に分割して割り当てる。したがって、マルチOSでないマルチコアシステム100ではOS間連携部13は不要となる。後述するOSの機能は、OS1又はOS間連携部13いずれにより提供されてもよく、OS間連携部13がない場合はOS1により後述する機能を提供する。
OS間連携部13は、この論理分割を利用して複数の仮想的な計算機の実行環境を作り、それらの実行環境の上でOS1を動作させる。HW14はOS間連携部13によりOS1から隠蔽されている。OS間連携部13は、OS1の負荷状況を監視しており、例えば、負荷が大きくなるとCPUコア3にOS2を新たに割り当て実行環境を生成したり、実行後はOS1とOS2が情報交換するためのOS間通信手段を提供する。なお、OS1はシステムコールを発行することで各種のサービスをOS間連携部13に要求することができ、OS1とOS間連携部13とは相互に通信可能である。
〔車両用電子制御ユニットへの適用〕
車両に搭載される制御システムは多様化しており、CPU間で生じる負荷の調整に対するニーズが高くなっている。このため、本実施形態のマルチコアシステム100の一応用例として、車両用電子制御ユニットに好適に搭載することができる。
図3は、マルチコアシステム100を搭載したECU(電子制御ユニット)50の概略構成図の一例を示す。ECU50は、例えばエンジンを制御するエンジンECU、ハイブリッド車のモータジェネレータを制御するモータECU、又は、エンジンとモータに必要なトルク指令値を指示するハイブリッドECU等である。上述したように、ナビECU等にマルチコアシステム100を適用してもよい。
ECU50は、マルチコアシステム100、RAM21、記憶装置22、通信インターフェイス23及び入出力インターフェイス24、が内部バスで接続されている。通信インターフェイス23は、例えばCAN(Controller
Area Network)やLIN(Local Interconnect Network)、FlexRay等の車載LANに接続されており、他のECU5との間で通信データを送受信する。例えば、通信インターフェイス23は、ナビゲーションシステムを制御するナビECUやブレーキECU等と接続されており、各ECUとの協調制御が可能となる。
また、入出力インターフェイス24には、センサ類25及びアクチュエータ類26が接続されている。ECU50がエンジンを制御する場合、センサ類25は、例えば、エアフローセンサ、クランクポジションセンサ、O2センサ等の各種のセンサであり、アクチュエータ類26はスロットルバルブ、燃料噴射弁等の各種のアクチュエータである。また、ECU50がモータECUの場合、センサ類25は、例えば相電流の電流値を検出する電流センサ、モータのロータの回転角を検出するレゾルバ等であり、アクチュエータ類26は、例えばモータジェネレータである。
記憶装置22はEEPROM、ハードディスクドライブやフラッシュメモリ等を実体とし、OSのプログラムやデータが格納されたOSファイル、AP11のプログラムやデータが格納されたAPファイルを記憶している。例えば、イグニッションのオンによりECU50に電力が供給されると、CPUコア1がOSファイルを実行し、OS間連携部13を起動した後、OS1と予め定められたAP11を起動する。
〔マルチコアシステム100の機能ブロック図〕
マルチコアシステム100の機能ブロックについて図4を用いて説明する。図4の各ブロックは、OS1又はOS間連携部13により提供される。後述する優先テーブル34や一致判定テーブル37は、予めHW14のメモリ14aに記憶されていてもよいし、起動時に記憶装置22からメモリ14aにコピーされてもよい。
OS1は、AP11をCPUの処理単位であるタスクに区分して、複数のタスクをスケジューリングしながら実行していく。タスクは、OS1が取り扱う処理の最小単位である。タスクは、AP11のオブジェクトコードを実体とする。タスクはTCB(Task Control Block)により管理されており、TCBにはタスクの状態(実行可能状態、実行中状態、待機中状態)、タスクの識別情報、タスクへのポインタ、属性(再配置可能、再使用可能、再入可能等)、前のタスクのリンク情報、次のタスクのリンク情報、タスクの所有者(AP11の識別情報)、コンテキスト(レジスタの内容等CPUコアの状態)等が登録されている。なお、コンテキストには、タスクの直前の実行結果が含まれる。
〔タスクスケジューリング〕
タスクスケジューラ31は、タスクの優先度やタスクの状態に基づきメモリ14a上にあるタスクの中から次にCPUコア1及びCPUコア2に割り当てるタスクを決定している。タスクスケジューラ31は適切な優先度を付与して、タスクA、Bをタスクキューに登録する。ソフトウェア割り込み、ハードウェア割り込み、I/O割込み、システムコールなどの優先度の高い割込みが生じた場合は、タスクスケジューラ31は強制的にタスクを切り替える(プリエンプション)。このようにタスクA、Bの優先度は、割込みなどの優先度に応じて相対的に定められるようになっている。なお、図では優先度の値が小さいほど優先度が高いとした。
優先度の最も高いタスクが先頭にくるよう、タスクキューはタイムスライス毎にソートされ、優先度が同じタスクの場合は、FIFO形式で順に実行される。
ディスパッチャ33は各タスクの実行完了や他のタスクの割込みを検出すると、実行していたタスクのコンテキストをメモリ14aに保存して、次のタスクをCPUコア1に実行させる。例えば、タスクキューを参照して最も優先度の高いタスクをそのCPUコア1に割り当て、格納してあるそのタスクのコンテキストをCPUコア1に復帰させる。この処理を繰り返し、1つのCPUコア1で複数のタスクを実行する。
複数のCPUコア1,2を備えるマルチコアシステム100では、CPUコア毎にタスクキューが設けられることが多い。原則的に、同じタスクは同じCPUコアのタスクキューに登録される。これにより、フィードバック制御のように過去の実行結果を利用するタスクから別のタスクにコンテキストスイッチする際、退避するコンテキストを低減してオーバヘッドを抑制し、また、退避するコンテキストに漏れがあっても、同じCPUコアにより同じタスクを実行する限り、実行結果に連続性を保つことができる。
CPUコアとタスクの割り付けにはいくつか方法がある。例えば、CPUコア1とCPUコア2の処理負荷を均等にするのであれば、タスク数が均等になるようにタスクA、B等を各タスクキューに割り当てればよい。一方、可能な限りCPUコア1のみで全てのタスクを処理することで、他方のCPUコア2を停止しておき消費電力を低減したい場合がある。このような場合、可能な限りCPUコア1のタスクキューにタスクを登録しておき、CPUコア1の処理負荷が高くなった場合に、CPUコア2のタスクキューにタスクを登録すればよい。また、いったん複数のCPUコア1,2が作動した状態では、タスクを均等に割り当てることで、CPUコア間の処理負荷を平準化することができる。本実施形態のマルチコアシステム100は、このような考え方から、図示するように、当初(ECU50の起動時)、CPUコア1にのみタスクを割り当て消費電力の低減を図り、CPUコア2が起動した後は処理負荷を平準化する。
〔高負荷推定、偏り推定〕
負荷推定部32は、CPUコア2が起動していない状態では、CPUコア1の処理負荷が高くなったこと、又は、高くなる可能性があることを検出し(高負荷推定)、CPUコア2が起動した後はCPUコア1とCPUコア2の処理負荷の差が所定値以上になったこと又はなる可能性があることを検出する(偏り推定)。
・CPUコア2が起動していない状態
処理負荷が高くなったことは、CPUコア1の使用率R、タスクキューに登録されたタスク数N、又は、制御対象の状態、のいずれか1以上から検出される。使用率Rは、所定時間T(例えば、数十ミリ秒から数秒程度)におけるCPUコア1がタスクを実行した時間Tの割合である。したがって、使用率R=T/T0。OS1が起動しただけの定常状態をアイドル状態というが、アイドル状態の処理負荷は十分に低いので、使用率Rが閾値Rより高ければタスクの実行による処理負荷が高いことが検出できる。同様の考え方により、タスクキューのタスク数Nが所定数Nより大きいの場合、CPUコア1の処理負荷が高くなったことを検出できる。また、乗員がAP11を起動する場合があるので、この起動操作から処理負荷が高くなったことを検出してもよい。
また、制御対象の状態から処理負荷が高くなったことを検出することができる。一般に、高速に状態が変化する制御対象を制御する場合、同じ制御対象を制御する場合でも状態変化が遅い場合よりも処理負荷が高くなる。例えば、エンジン回転数が高くなると、回転数制御や点火制御の時間間隔が回転数に比例して短くなるので、処理負荷は回転数に比例して高くなる。モータのトルクを制御する場合も同様である。したがって、センサ類25から検出されるクランクポジションやロータの回転角速度が閾値以上になった場合に、処理負荷が高くなったことを検出することができる。なお、この場合、車速も大きくなっているので、車速が閾値以上になったことから処理負荷が高くなったことを検出してもよい。
以上から、負荷推定部32は、処理負荷が高くなったことを次の条件のいずれか又は2以上の組み合わせにより検出する。TR1〜2、TN1〜2、TdR1〜2、TdN1〜2、TR12、TN12、TdR12、TdN12、、は閾値である。
使用率R(=T/T)> TR1
、タスク数N>TN1 、車両の状態値S > T
一方、処理負荷が高くなる可能性は、使用率Rの時間的な変化速度dR、タスク数Nの時間的な変化速度dN、車両の状態値Sの時間的な変化速度dS、から検出することができる。負荷推定部32は、使用率R、タスク数N、車両の状態値S、をそれぞれ時系列に監視し、変化速度dR、dN、dSがそれぞれの閾値を超えた状態が所定時間P以上となった場合に、処理負荷が高くなる可能性があることを検出する。以上から、負荷推定部32は、処理負荷が高くなる可能性のあることを次の条件のいずれか又は2以上の組み合わせにより検出する。
なお、使用率R、タスク数N、車両の状態値S、のいずれか又は2以上の組み合わせから、処理負荷が高くなる可能性を検出してもよい。
使用率Rの増加率dR > TdR1 、タスク数Nの増加率dN > TdN1 、車両の状態値Sの増加率dS>TdS
・CPUコア2が起動した後
CPUコア2が起動した後も、CPUコア2の使用率R2,タスク数N2、車両の状態値Sは、CPUコア1と同様に算出される。そして、負荷推定部32は、CPUコア1とCPUコア2の処理負荷が偏っていること、又は、偏る可能性のあることを検出する。
負荷推定部32は、次の条件のいずれか又は組み合わせにより、CPUコア1とCPUコア2の処理負荷が偏っていることを検出する。
使用率R−使用率R > TR12
タスク数N−タスク数N > TN12
この場合、CPUコア1の処理負荷が高いことを意味するので、CPUコア2にタスクを割り当てる。
使用率R−使用率R > TR12
タスク数N−タスク数N > TN12
この場合、CPUコア2の処理負荷が高いことを意味するので、CPUコア1にタスクを割り当てる。こうすることで、処理負荷を平準化できる。なお、車両の状態値Sは、CPUコア1,2に共通なので偏りを検出するには適当でないため、高負荷推定部32は偏り推定に車両の状態値Sを用いない。
同様に、負荷推定部32は、次の条件のいずれか又は組み合わせにより、CPUコア1とCPUコア2の処理負荷が偏る可能性のあることを検出する。
使用率Rの増加率dR−使用率Rの増加率dR > TdR12
タスク数Nの増加率dN−タスク数Nの増加率dN> TdN12
以上のようにして、負荷推定部32は、高負荷推定及び偏り推定を検出する。
なお、CPUコア1又は2の処理負荷が低くなった場合(使用率RがTRより小さい閾値以下、タスク数NがTNより小さい閾値以下、のいずれか1以上の条件を満たす場合)、処理負荷が低くなったCPUコア1又は2を停止させてもよい。一部のCPUコア1~nを停止させることで消費電力を低減できる。この場合、停止するCPUコア1~nで実行していたタスクは、別のCPUコア1~nに割り当てられるが、これまで説明したように、実行結果が一致するか否かを判定した後に割り当てることで、制御の急変を防止する。
〔タスクの試験実行〕
ディスパッチャ33が、処理負荷の低いCPUコア2が試験実行するタスクAを決定する方法について説明する。なお、図1Aにて説明したように、CPUコア1~nがタスクを実行する場合、本実施例のマルチコアシステム100では、制御上の要請(実需)によりタスクを実行する場合と、試験的にタスクを実行する場合がある。いずれの場合も、ディスパッチャ33がタスクをCPUコア1~nに割り当てる。また、タスクの実行が、試験的な実行から実需の実行に移行することもある。このため、「割り当て」と「試験実行」の区別は明確でないが、本実施例ではCPUコア1~nが試験実行することに特徴があるため、ディスパッチャ33によるタスクの割り当てを、CPUコア1~nに「試験実行させる」と表記する場合がある。
CPUコア2が試験実行するタスクAを決定する方法には、静的な決定方法と動的な決定方法がある。静的な決定方法は、各タスクを優先的に実行するCPUコア1~nを定めておく方法である。
図5Aは優先テーブル34の一例を示す図である。優先テーブル34には、タスク毎に、優先的に試験実させるCPUコア1~nが優先順位と共に登録されている。図1Aに示したようにCPUコア2の起動前、タスクAはCPUコア1で実行されているが、優先テーブル34によればタスクAはCPUコア2で優先的に実行すべきことになる。したがってCPUコア2が起動した後は、ディスパッチャ33は、タスクAをCPUコア2に試験実行させることを決定できる。
ディスパッチャ33は、CPUコア2の起動後も優先テーブル34に従い、タスクAを試験実行させるCPUコア2を決定することができる。例えば図1Bの状態で処理負荷の偏り推定が検出された場合、優先テーブル34によれば処理負荷の高いCPUコア1で実行されているタスクAはCPUコア2で優先的に実行すべきなので、ディスパッチャ33は、タスクAをCPUコア2に試験実行させることを決定できる。
その後、例えばCPUコア2の処理負荷が高くなった場合、タスクA又はタスクCを他のCPUコアに移動するが、優先テーブル34によれば、タスクA及びCはいずれも最も優先的に割り当てられるCPUコア2に割り当てられている。このため、ディスパッチャ33は優先テーブル34を参照して、優先順位が2番目のCPUコア1にタスクAを試験実行させる。なお、CPUコア1の処理負荷も高ければCPUコア3を起動すればよい。
したがって、優先テーブル34を適切に調整しておけば、ディスパッチャ33が優先順位にしたがいタスクを試験実行させるCPUコアを決定し、処理負荷を平準化することができる。
これに対し、動的な決定方法は、高負荷推定時又は偏り推定時の、CPUコア1(又はCPUコア2)の状態に応じて、ディスパッチャ33が、タスクを試験実行させるCPUコア1~nを決定する方法である。例えば、CPUコア1でタスクAを実行中であれば、タスクAはそのままCPUコア1で実行し、タスクBはCPUコア2で実行することで、コンテキストスイッチに伴うオーバヘッドを低減し、また、退避や復帰に伴うエラーを低減できる。この場合、CPUコア1は、タスクAの実行結果をI/Oデバイス14bを介してアクチュエータ類26に供給できるので、制御を継続しながら試験実行できる。
タスクB以外に、CPUコア1で実行中でないタスクが複数ある場合がある(タスクBとタスクCがある場合)、どちらをCPUコア2に試験実行させるかを決定する必要がある。この場合、ディスパッチャ33はタスクキューに登録された各タスクの優先度を参照し、最も優先度の低いタスク又はタスクキューの最後尾のタスクをCPUコア2に試験実行させる。こうすることで、後述する一致判定を行う時間的な余裕が生まれる。
〔試験実行に伴う実行結果の取り扱い〕
ところで、CPUコア1又はCPUコア2で実行した実行結果(数値)は、CPUコア1、2のレジスタ1、2からそれぞれのデータバッファに格納された後、バスの調停を経て、RAM21、通信インターフェイス23又は入出力インターフェイス24に送出される。しかしながら、CPUコア2が試験的に実行したタスクAの実行結果は、まだ実行結果の検証が不十分な状態である。また、CPUコア1によるタスクAの実行は、車両制御上の要請による実需の実行とは限らない。また、仮にCPUコア2の実行結果が正しく、CPUコア1の実行が実需によるものでも、同じ複数の実行結果は不要である。
すなわち、タスクAを試験実行することにより、不要な実行結果が入出力インターフェイス24等に出力されるおそれを生じさせる。そこで、ディスパッチャ33がタスクAをCPUコア2に試験実行させた場合、有効化無効化切り替部35は、CPUコア2が実行結果を入出力インターフェイス24等に出力することを禁止する。また、ディスパッチャ33が実需でないタスクAをCPUコア1に試験実行させた場合、有効化無効化切り替部35は、CPUコア1が実行結果を入出力インターフェイス24等に出力することを禁止する。こうすることで実需の実行結果のみが入出力インターフェイス24に出力される。具体的には、有効化無効化切り替部35は、例えばCPUコア1やCPUコア2のレジスタからデータバッファへの格納を禁止したり、データバッファに格納された実行結果を消去する。
〔実行結果の一致の判定〕
負荷推定部32が高負荷推定又は偏り推定を検出すると、以上のようにディスパッチャ33は、静的又は動的な方法でCPUコア2にタスクAを試験実行させるタスクを決定する。ディスパッチャ33は割込み発生時と同様に、CPUコア1におけるコンテキストをCPUコア2に復帰させる。なお、CPUコア1からCPUコア2へコンテキスト(実行結果)を受け渡すことは必ずしも必要でない。これは、本実施形態では実行結果の一致を判定するからである。しかし、コンテキストを復帰することで、CPUコア1とCPUコア2の実行結果が一致するまでの時間を短縮できることが期待できる。
そして、一致判定部36はCPUコア1によるタスクAの実行結果と、CPUコア2によるタスクBの実行結果とを比較し、両者が一致するか否かを判定する。実行結果は、CPUコア1と2のレジスタに格納されるので、一致判定部36は2つのレジスタの内容の排他的論理和(Xor)をとり、全ビットが「0」であれば一致すると判定する。
一致する場合、割り当て確定部38は、タスクAを割り当てるCPUコア1~nをCPUコア2に確定する。割り当て確定部38は、有効化無効化切り替部35、ディスパッチャ33及びタスクスケジューラ31に確定したCPUコア2を通知する。これにより、有効化無効化切り替部35は、CPUコア2が実行結果を出力することを許可する。また、ディスパッチャ33は、CPUコア1で実行しているタスクAを強制的に終了させる。また、タスクスケジューラ31は、CPUコア1のタスクキューからタスクAを消去し、消去したタスクAをCPUコア2のタスクキューに登録する。
ところで、一致判定においては、実行結果が完全には一致しないものの、比較の結果に大きな差異がない場合がある。エンジンやモータ制御の場合、目標制御量とのわずかな差異であればそれを許容して、CPUコア間の処理負荷を平準化した方が好ましいとも考えられる。また、このような許容値はタスク毎に異なると考えられる。
そこで、マルチコアシステム100は、一致判定テーブル37に、タスク毎の実行結果の差異の許容値を登録しておく。図5Bは一致判定テーブル37の一例を示す。一致判定部36は、タスク毎に一致判定テーブル37を参照して、許容範囲であれば一致すると判定する。以下では、許容範囲に入った場合を含めて「一致」したという。
また、一致しない場合、タスクAを別のCPUコア2に割り当てないと、CPUコア間の処理負荷の平準化を図れず、実行結果が遅延するおそれがある。そこで、一致判定部36は、比較の結果が一致しない場合、一致するまで待機する。これにより、処理の平準化を促すことができる。
一方、長時間の待機は実需の演算の遅延をもたらすので、図5Bの一致判定テーブル37には最大待機時間がタスク毎に登録されている。一致判定部36は、比較の結果が一致しない場合、最大待機時間の間、繰り返しタスクを実行し、一致するまで待機する。最大待機時間内に、実行結果が一致しない場合、ディスパッチャ33は次のタスク(例えば、タスクB)をCPUコア2に試験実行させて、一致判定部36は、再度、CPUコア1とCPUコア2によるタスクBの実行結果が一致するか否かを判定する。こうすることで、実行結果が一致しやすいタスクをCPUコア2に割り当てることができる。なお、最大待機時間内であっても、タスクキューに優先度の高いタスクが登録されれば、一致判定のタスクはディスパッチャ33により強制的に終了させられる。
〔マルチコアシステム100の処理手順〕
・CPUコア2の起動前
以上の構成に基づき、マルチコアシステム100がタスクAをCPUコア2に移動させる手順を図6のフローチャート図に基づき説明する。図6の手順は、マルチコアシステム100が起動中、所定のサイクル時間毎に繰り返し実行される。スタート時、CPUコア2は起動しておらず、CPUコア1が全てのタスクを実行しており、負荷推定部32はCPUコア1の処理負荷を常時監視している。
サイクル時間毎に、負荷推定部32は、処理負荷が高くなったか否か又は高くなる可能性があるか否かを判定する(S10)。高負荷推定されなければ(S10のNo)、図6の処理はそのまま終了する。
高負荷推定した場合(S10のYes)、負荷推定部32はディスパッチャ33にタスクの試験実行を要求する。ディスパッチャ33は、静的又は動的のいずれかの予め定められた方法で、割り当てるタスクAを決定し、CPUコア2に試験実行させる。CPUコア1がタスクAを実行していない場合、ディスパッチャ33はCPUコア1にタスクAを実行させる(S20)。
なお、CPUコア2が起動している場合は、CPUコア2の処理負荷が十分に低いことを確認しておく。また、タスクAをCPUコア2に試験実行させる際、有効化無効化切り替部35は、CPUコア2による実行結果の出力を禁止する。同様に、CPUコア1によるタスクAの実行が実需の実行でない場合、有効化無効化切り替部35はCPUコア1による実行結果の出力を禁止する。
そして、一致判定部36は、CPUコア1とCPUコア2によるタスクAの実行結果を比較する(S30)。一致判定部36は、一致判定テーブル37を参照し差異が許容量の範囲内であるか否かに応じて、一致したか否かを判定する(S40)。
CPUコア1とCPUコア2によるタスクAの実行結果が一致した場合(S40のYes)、割り当て確定部38はタスクAの割り当て先をCPUコア2に確定する(S50)。これにより、ディスパッチャ33は、CPUコア1に対するタスクAの割り当てを終了し、有効化無効化切り替部35はCPUコア2によるタスクAの実行結果の出力を許可し、タスクスケジューラ31は、CPUコア1のタスクキューからタスクAを消去し、消去したタスクAをCPUコア2のタスクキューに登録する。
以上で、処理負荷が低い間は消費電力を低減し、処理負荷が高くなった場合には2つのCPUコアの処理負荷を平準化し、実行時間を保証することができる。
CPUコア1とCPUコア2によるタスクAの実行結果が一致しない場合(S40のNo)、一致判定部36は、一致判定テーブル37のタスクAの最大待機時間の間、繰り返し実行されるタスクAの実行結果を比較する(S60、S70)。フィードバック制御であれば、実行の繰り返しにより2つの処理結果が接近することが期待できるので、待機することで処理の平準化を促進することができる。
・CPUコア2の起動後
続いて、CPUコア1とCPUコア2がいずれもタスクを実行している状態で、処理負荷が偏った場合又は偏るおそれがあることが検出された場合の、処理手順について図7に基づき説明する。
サイクル時間毎に、負荷推定部32は、処理負荷が偏ったか否か又は偏る可能性があるか否かを判定する(S11)。
負荷推定部32が偏り推定した場合(S11のYes)、負荷推定部32はディスパッチャ33にタスクの試験実行を要求する。ディスパッチャ33は、静的又は動的のいずれかの予め定められた方法で、割り当てるタスクAを決定し、CPUコア2に試験実行させる。また、CPUコア1がタスクAを実行していない場合、ディスパッチャ33はCPUコア1にタスクAを試験実行させる(S20)。タスクAをCPUコア1に試験実行させる際、有効化無効化切り替部35は、CPUコア2による実行結果の出力を禁止する。同様に、CPUコア1によるタスクAの実行が実需の実行でない場合、有効化無効化切り替部35はCPUコア1による実行結果の出力を禁止する。
そして、一致判定部36は、CPUコア1とCPUコア2によるタスクAの実行結果を比較する(S30)。一致判定部36は、一致判定テーブル37を参照し差異が許容量の範囲内であるか否かに応じて、一致したか否かを判定する(S40)。
CPUコア1とCPUコア2によるタスクAの実行結果が一致した場合(S40のYes)、割り当て確定部38はタスクAの割り当て先をCPUコア1に確定する(S50)。これにより、ディスパッチャ33は、CPUコア1に対するタスクAの割り当てを終了し、有効化無効化切り替部35はCPUコア2によるタスクAの実行結果の出力を許可し、タスクスケジューラ31は、CPUコア1のタスクキューからタスクAを消去し、消去したタスクAをCPUコア2のタスクキューに登録する。以上で、2つのCPUコア1,2間で処理負荷が偏った場合は処理負荷を平準化することができる。
CPUコア1とCPUコア2によるタスクAの実行結果が一致しない場合(S40のNo)、一致判定部36は、一致判定テーブル37のタスクAの最大待機時間の間、繰り返し実行されるタスクAの実行結果を比較する(S60、S70)。これにより、可能な限り、処理を平準化することができる。
なお、図7では、CPUコアが2つの場合を説明したが、3つ以上のCPUコアがそれぞれタスクを実行している場合、ディスパッチャ33は、処理負荷の最も高いCPUコアのタスクを最も低いCPUコアに割り当てる。図8は、CPUコアが3以上の場合の処理負荷の平準化を模式的に示す図の一例である。図8では、CPUコア1の処理負荷が大、CPUコア2の処理負荷が小、CPUコア3の処理負荷が中、である。この場合、ディスパッチャ33は、CPUコア1で実行されているタスクA又はBを、CPUコア2に割り当てる。
また、平準化するのでなく、CPUコア2で実行されているタスクCを、処理負荷が中程度のCPUコア3に割り当てることで、CPUコア2を停止させ消費電力を低減できる場合がある。平準化するか消費電力の低減を図るかは、CPUコア1の処理負荷の大きさや、CPUコア2を停止させた際、CPUコア3の処理負荷がどの程度になるか等に応じて、定めることができる。
動的な決定方法の場合、CPUコア1で実行しているタスクAをCPUコア2にも試験実行させればよいが、静的な決定方法の場合、CPUコア2に試験実行させるタスクを決定する。静的な決定方法の場合、ディスパッチャ33は、処理負荷の最も低いCPUコア2に優先的に割り当てられているタスクであって、現在は処理負荷の最も高いCPUコア1に割り当てられてるタスクを、優先テーブル34を参照して決定する。そしてそのタスクを最も処理負荷の高いCPUコア1と低いCPUコア2に試験実行させる。試験実行させるタスクを優先テーブル34により決定することで、処理負荷の平準化が容易になる。
ステップS11に戻り、偏り推定されない場合(S11のNo)、負荷推定部32は、CPUコア2の処理負荷が低いか否かを判定する(S110)。この判定の閾値は、CPUコア2を停止しそのタスクをCPUコア1にて実行しても、CPUコア1の処理負荷が高くなることのないように定められる。したがって、使用率R、タスク数N、車両の状態値Sを判定する各閾値は、TR1
、TN1 、Tよりも小さい。
CPUコア2の処理負荷が低い場合(S110のYes)、高負荷推定された場合と同様の処理によりCPUコア2を停止させることができる。
具体的には、負荷推定部32は、負荷推定部32はディスパッチャ33にタスクの試験実行を要求する。ディスパッチャ33は、静的又は動的のいずれかの予め定められた方法で、割り当てるタスクAを決定し、CPUコア1に試験実行させる。また、CPUコア2がタスクAを実行していない場合、ディスパッチャ33はCPUコア2にタスクAを試験実行させる(S120)。タスクAを試験実行させる際、有効化無効化切り替部35は、CPUコア1が実行結果を出力することを禁止し、CPUコア2によるタスクAの実行が実需の実行でない場合、CPUコア2が実行結果を出力することを禁止する。
そして、一致判定部36は、CPUコア1とCPUコア2によるタスクAの実行結果を比較する(S130)。一致判定部36は、一致判定テーブル37を参照し差異が許容量の範囲内であるか否かに応じて、一致したか否かを判定する(S140)。
CPUコア1とCPUコア2によるタスクAの実行結果が一致した場合(S140のYes)、割り当て確定部38はタスクAの割り当て先をCPUコア1に確定する(S150)。これにより、ディスパッチャ33は、CPUコア2に対するタスクAの割り当てを終了し、有効化無効化切り替部35はCPUコア1によるタスクAの実行結果の出力を許可し、タスクスケジューラ31は、CPUコア2のタスクキューからタスクAを消去し、消去したタスクAをCPUコア1のタスクキューに登録する。
また、マルチタスクシステム100は、例えばクロックの供給を終了してCPUコア2を停止する。これにより、消費電力を低減できる。このようにして、処理負荷が低いCPUコア2を停止して、消費電力を低減することができる。
CPUコア1とCPUコア2によるタスクAの実行結果が一致しない場合(S140のNo)、一致判定部36は、一致判定テーブル37のタスクAの最大待機時間の間、繰り返し実行されるタスクAの実行結果を比較する。待機することで消費電力の低減を促進しやすくなる。
以上説明したように、本実施形態のマルチコアシステム100は、制御系のプログラムから生成されたタスクの実行結果を急変させずに、タスクを実行するCPUコアを切り替えることができる。
実施例1のマルチコアシステム100は、最大待機時間を上限に、CPUコア1とCPUコア2の実行結果が一致するまで待機した。しかし、負荷分散では、高負荷となった例えばCPUコア1から、可能な限り早くタスクAを他のCPUコア2に割り当てることが好ましい。
ところで、複数のCPUコア1~nがある場合、処理負荷を分散するためにタスクの割り当て先は最も処理負荷の小さいCPUコアとすることが一般的である。しかし、制御系のタスクでは、制御の連続性を確保したままタスクの割り当て先を切り替える必要があるので、処理負荷の低いCPUコア1~nにタスクを割り当てるよりも、早く処理負荷を分散できるという観点から、割り当て先のCPUコア1~nを選定する方が好ましい場合もある。すなわち、処理負荷が低いCPUコア1~nにタスクを割り当てて、実行結果が一致するまで時間を掛けるよりも、多少、処理負荷が高くても、早く一致する実行結果が得られるCPUコアの方が割り当て先として最適となる場合がある。
そこで、本実施例では、割り当て先として複数のCPUコア1~nがある場合、最も早く実行結果が一致したCPUコア1~nにタスクを割り当てるマルチコアシステム100について説明する。
図9は、本実施例のマルチコアシステム100による負荷分散を模式的に説明する図の一例を示す。本実施例のマルチコアシステム100は、複数のCPUコア1~nに同じタスクを試験実行させ、最も早く実行結果が一致したCPUコア1~nをタスクの割り当て先に確定する。
図9では、マルチコアシステム100は4つのCPUコア1〜4を有する。CPUコア1はタスクA、タスクBを、CPUコア4はタスクDをそれぞれ実行している。CPUコア1が高負荷になったので、実施例1と同様に例えばディスパッチャ33がタスクAをCPUコア2〜3に試験実行させる。高負荷判定部は、各CPUコア1~nの処理負荷を監視しており、処理負荷が所定値以下のCPUコア1~nを抽出し、ディスパッチャ33に通知する。図9では、CPUコア4の処理負荷が高いので、ディスパッチャ33はCPUコア4にタスクAを試験実行させない。
一致判定部36は、CPUコア1によるタスクAの実行結果とCPUコア2によるタスクAの実行結果を比較し、CPUコア1によるタスクAの実行結果とCPUコア3によるタスクAの実行結果を比較する。そして、一致判定部36は、CPUコア1によるタスクAの実行結果に、最も早く実行結果が一致したCPUコア1~nを検出する。割り当て確定部38は最も早く実行結果が一致したタスクAの割り当て先をCPUコア2に確定する。
こうすることで、割り当て先のCPUコア1~nを確定するまでの時間を短縮できるので、複数のCPUコア1~n間で処理負荷を分散する際に、制御が不安定になるリスクを低減できる。
〔マルチコアシステム100の機能ブロック〕
図10は、本実施例におけるマルチコアシステム100の機能ブロック図の一例を示す。なお、図10において図4と同一部には同一の符号を付しその説明は省略する。負荷推定部32は、全てのCPUコア1~nの処理負荷を監視している。そして、いずれかのCPUコア1~nの処理負荷が高くなったこと、又は、高くなる可能性があることを検出する。なお、全てのCPUコア1~nの処理負荷が一様に高負荷推定されることは少ないので、本実施例では、高負荷推定と偏り推定は同義としてよい。負荷推定部32が、例えば、CPUコア1について高負荷推定した場合、負荷推定部32は、例えば、処理負荷が所定値以下のCPUコア2、3を、タスクAを割り当てる候補のCPUコア1~nに決定する。
ディスパッチャ33は、候補に決定されたCPUコア2,3に、それぞれタスクAを試験実行させる。また、高負荷のCPUコア1がタスクAを実行していない場合は、ディスパッチャ33はCPUコア1にタスクAを試験実行させる。こうすることで、各CPUコア1〜3は、それぞれタスクAを実行する。なお、CPUコア2とCPUコア3がタスクAの実行を開始する時刻は、CPUコア2とCPUコア3の処理状況により定まるので、CPUコア2とCPUコア3が同時にタスクAの実行を開始するとは限らない。
そして、本実施例の一致判定部36は、高負荷のCPUコア1によるタスクAの実行結果と、判定用にタスクAが割り当てられた各CPUコア2の実行結果、高負荷のCPUコア1によるタスクAの実行結果と、判定用にタスクAが割り当てられた各CPUコア3によるタスクAの実行結果をそれぞれ比較する。一致判定部36は、最も早く実行結果が一致した例えばCPUコア2の識別情報を割り当て確定部38に通知する。
割り当て確定部38はタスクAの割り当て先をCPUコア2に確定する。割り当て確定部38は、有効化無効化切り替部35、ディスパッチャ33及びタスクスケジューラ31に確定したCPUコア2の識別情報を通知する。これにより、有効化無効化切り替部35は、CPUコア2が実行結果を出力することを許可する。また、ディスパッチャ33は、CPUコア1とCPUコア3で実行しているタスクAを強制的に終了させる。また、タスクスケジューラ31は、CPUコア1のタスクキューからタスクAを消去し、消去したタスクAをCPUコア2のタスクキューに登録する。
こうすることで、マルチコアシステム100は、高負荷となったCPUコア1と、タスクAの実行結果が最も早く一致したCPUコア2をタスクAの割り当て先に確定でき、割り当て先のCPUコア1~nを確定するまでの時間を短縮できる。
〔マルチコアシステム100の処理手順〕
図11は、マルチコアシステム100が、高負荷となったCPUコア1と、タスクAの実行結果が最も早く一致したCPUコア2にタスクAの割り当て先を確定する手順を示すフローチャート図の一例を示す。なお、CPUコア1〜4は起動していてもよいし、起動していなくてもよい。
負荷推定部32はCPUコア1〜4の処理負荷を常時監視している。負荷推定部32は、処理負荷が高くなったか否か又は高くなる可能性があるか否かを判定する(S10)。高負荷推定されなければ(S10のNo)、負荷分散する必要はないので、図6の処理はそのまま終了する。
高負荷推定された場合(S10のYes)、負荷推定部32はタスクAの仮の割り当て先を決定する(S12)。仮の割り当て先は処理負荷が所定値以下のCPUコア2,3である。
ディスパッチャ33は、静的又は動的のいずれかの予め定められた方法で決定されたタスクAをCPUコア2とCPUコア3に試験実行させる(S21)。高負荷のCPUコア1がタスクAを実行していない場合は、ディスパッチャ33はCPUコア1にタスクAを試験実行させる。
ディスパッチャ33がタスクAをCPUコア2,CPUコア3に試験実行させる際、有効化無効化切り替部35は、CPUコア2、3による実行結果の出力を禁止し、CPUコア1によるタスクAの実行が実需の実行でない場合、CPUコア1による実行結果の出力を禁止する。
そして、一致判定部36は、CPUコア1とCPUコア2によるタスクAの実行結果、CPUコア1とCPUコア3によるタスクAの実行結果、をそれぞれ比較する(S30)。一致判定部36は、一致判定テーブル37を参照し差異が許容量の範囲内であるか否かに応じて、一致したか否かを判定する(S40)。
CPUコア1とCPUコア2によるタスクAの実行結果が最も早く一致した場合(S40のYes)、割り当て確定部38はタスクAの実行結果をCPUコア2に確定し、CPUコア1とCPUコア3によるタスクAの実行結果が最も早く一致した場合(S40のYes)、割り当て確定部38はタスクAの実行結果をCPUコア3に確定する(S50)。一致するか否かの判定は、実施例1と同様に最大待機時間の間、繰り返される。
割り当て確定部38は、有効化無効化切り替部35、ディスパッチャ33及びタスクスケジューラ31に確定したCPUコアを通知する。これにより、有効化無効化切り替部35は、CPUコア2が実行結果を出力することを許可する。また、ディスパッチャ33は、CPUコア1とCPUコア3で実行しているタスクAを強制的に終了させる。また、タスクスケジューラ31は、CPUコア1のタスクキューからタスクAを消去し、消去したタスクAをCPUコア2のタスクキューに登録する。
本実施例のマルチコアシステム100によれば、割り当て先のCPUコア1~nを確定するまでの時間を短縮できるので、複数のCPUコア間で処理負荷を分散する際に、制御が不安定になるリスクを低減できる。
なお、本国際出願は、2008年7月22日に出願した日本国特許出願2008−188830号に基づく優先権を主張するものであり、日本国特許出願2008−188830号の全内容を本国際出願に援用する。

Claims (18)

  1. 制御系のプログラムを当該マルチコアシステムが実行して生成したタスクを、CPUコアに割り当てて実行するマルチコアシステムであって、
    第1のCPUコアが実行する前記タスクを、第2のCPUコアに切り替えて実行する際、 前記タスクを第2のCPUコアに試験実行させる試験実行指示手段と、
    第1のCPUコアの実行結果と第2のCPUコアの実行結果が一致したか否かを判定する判定手段と
    第1のCPUコアの実行結果と第2のCPUコアの実行結果が一致すると判定された場合、前記タスクの割り当て先を第2のCPUコアに確定する割り当て確定手段と、
    を有することを特徴とするマルチコアシステム。
  2. 前記試験実行指示手段は、前記タスクを二以上の第2のCPUコアに試験実行させ、
    前記判定手段は、第1のCPUコアの実行結果と二以上の第2のCPUコアの実行結果をそれぞれ比較し、
    前記割り当て確定手段は、二以上の第2のCPUコアのうち、最も早く第1のCPUコアの実行結果と一致したCPUコアに、前記タスクの割り当て先を確定する、
    ことを特徴とする請求項1記載のマルチコアシステム。
  3. 第1のCPUコアの処理負荷及び処理負荷の増加率を検出する処理負荷検出手段を有し、
    前記処理負荷検出手段により、第1のCPUコアの処理負荷が第1の閾値よりも高負荷になったことが検出された場合、又は、第1のCPUコアの処理負荷の前記増加率が第3の閾値よりも大きくなったため高負荷になることが予測された場合、
    前記試験実行指示手段は、前記タスクを第2のCPUコアに試験実行させる、
    ことを特徴とする請求項1又は2記載のマルチコアシステム。
  4. 第2のCPUコアがタスクを実行していない場合、
    前記試験実行指示手段は、第1のCPUコアが実行している前記タスクを第2のCPUに試験実行させる、
    ことを特徴とする請求項1又は2記載のマルチコアシステム。
  5. 第1及び第2のCPUコアの処理負荷及び処理負荷の増加率を検出する処理負荷検出手段を有し、
    前記処理負荷検出手段により、第1のCPUコアの処理負荷と第2のCPUコアの処理負荷の差が第4の閾値より大きくなったため処理負荷に偏りが生じたことが検出された場合、又は、第1のCPUコアの処理負荷の前記増加率と第2のCPUコアの処理負荷の前記増加率との差が第5の閾値より大きくなったため処理負荷に偏りが生じることが予測された場合、
    前記試験実行指示手段は、処理負荷が高い又は高くなることが予想される第1又は第2のCPUコアが実行する前記タスクを、処理負荷が低い又は低くなることが予想される第1のCPUコア又は第2のCPUコアに試験実行させる、
    ことを特徴とする請求項1又は2記載のマルチコアシステム。
  6. 前記判定手段は、第1のCPUコアの実行結果の値と第2のCPUコアの実行結果の値の差が、所定範囲内であれば一致したと判定する、
    ことを特徴とする請求項1又は2記載のマルチコアシステム。
  7. 前記差は、前記タスクに応じて予め定められている、ことを特徴とする請求項6記載のマルチコアシステム。
  8. 前記判定手段が、第1のCPUコア及び第2のCPUコアによる前記タスクの実行結果が一致しない場合と判定した場合前記試験実行指示手段は予め定められた待機時間の範囲内で前記タスクを第2のCPUコアに試験実行させることを継続し、
    前記待機時間まで第2のCPUコアが前記タスクを試験実行しても、第1のCPUコア及び第2のCPUコアによる前記タスクの実行結果が一致しない場合、前記試験実行指示手段は、前記判定手段が一致判定した前記タスクとは別のタスクを第2のCPUに試験実行させ、
    第1のCPUコア及び第2のCPUコアによる前記別のタスクの実行結果が一致しない場合、前記試験実行指示手段は予め定められた前記待機時間の範囲内で前記別のタスクを第2のCPUコアに試験実行させることを継続し、
    タスクが試験実行されている間に、試験実行中のタスクよりも優先度の高いタスクが生成された場合、前記試験実行指示手段は第1のCPUコア及び第2のCPUコアによるタスクの試験実行を終了する、
    ことを特徴とする請求項1又は2記載のマルチコアシステム。
  9. 優先的に割り当てるCPUコアを前記タスクに対応づけて登録した優先テーブルを有し、
    前記試験実行指示手段は、前記優先テーブルを参照して前記タスクを試験実行させるCPUコアを決定する、
    ことを特徴とする請求項1記載のマルチコアシステム。
  10. 前記試験実行指示手段が第2のCPUコアに試験実行させるタスクは、
    前記処理負荷検出手段が、第1のCPUコアの処理負荷が第1の閾値よりも高負荷となったことを検出した時若しくは高負荷になることを予測した時に、第1のCPUコアが実行しているタスクである、
    ことを特徴とする請求項3記載のマルチコアシステム。
  11. 第1のCPUコア及び第2のCPUコアの実行結果が一致した場合、
    第2のCPUコアは、タスクの実行結果を制御対象に出力する、
    ことを特徴とする請求項10記載のマルチコアシステム。
  12. 前記処理負荷検出手段は、所定時間に対する前記タスクの実行時間の割合であるCPUコア使用率が閾値TR1より大、又は、待機しているタスクの数が閾値TN1より大、の少なくともいずれかを満たす場合に、第1のCPUコアの処理負荷が第1の閾値よりも高負荷であることを検出し、
    CPUコア使用率の増加率が閾値TdR1より大、又は、待機しているタスクの数の増加率が閾値TdN1よりも大、の少なくともいずれかを満たす場合に、第1のCPUコアの処理負荷が高負荷になることを予測する、
    ことを特徴とする請求項3記載のマルチコアシステム。
  13. 前記処理負荷検出手段は、エンジン回転数又は車速が閾値TSより大の場合に、第1のCPUコアの処理負荷が閾値よりも高負荷であることを検出し、
    エンジン回転数又は車速の増加率が閾値TdSより大の場合に、第1のCPUコアの処理負荷が高負荷になることを予測する、
    ことを特徴とする請求項3記載のマルチコアシステム。
  14. 前記処理負荷検出手段は、
    所定時間に対する前記タスクの実行時間の割合である第1のCPUコアのCPUコア使用率と第2のCPUコアのCPUコア使用率の差が閾値TR12より大、又は、第1のCPUコアによる実行を待機しているタスクの数と第2のCPUコアによる実行を待機しているタスクの数の差が、閾値TN12より大、の少なくともいずれかを満たす場合に、第1のCPUコアと第2のCPUコアの処理負荷の偏りを検出し、
    第1のCPUコアのCPUコア使用率と第2のCPUコアのCPUコア使用率との差の増加率が閾値TdR12より大、又は、第1のCPUコアによる実行を待機しているタスクの数と第2のCPUコアによる実行を待機しているタスクの数の差の増加率が閾値TdN12より大、の少なくともいずれかを満たす場合に、第1のCPUコアと第2のCPUコアの処理負荷に偏りが生じることを予測する、ことを特徴とする請求項5記載のマルチコアシステム。
  15. 第1及び第2のCPUコアの処理負荷を検出する処理負荷検出手段を有し、
    前記処理負荷検出手段が、第2のCPUコアの処理負荷が第2の閾値よりも低いことを検出した場合、
    前記試験実行指示手段は、第2のCPUコアが実行する前記タスクを、第1のCPUコアに試験実行させ、
    前記判定手段は、第1のCPUコアと第2のCPUコアの実行結果が一致したか否かを判定し、
    前記判定手段が一致すると判定した場合、前記タスクを実行するCPUコアを第2のCPUコアから第1のCPUコアに切り替え、第2のCPUコアを停止させる、
    ことを特徴とする請求項1記載のマルチコアシステム。
  16. 当該マルチコアシステムは前記制御系のプログラムを実行することで
    同一のハードウェアをフィードバック制御するためのタスクであって、過去の実行結果により決定された制御量を用いて前記ハードウェアの次回の制御量を決定するタスクを生成する
    ことを特徴とする請求項1記載のマルチコアシステム。
  17. 請求項1〜16いずれか1項記載のマルチコアシステムと、
    前記制御系のプログラムを記憶した記憶手段と、
    アクチュエータと接続されるインターフェイスと、
    を有することを特徴とする車両用電子制御ユニット。
  18. 制御系のプログラムをマルチコアシステムが実行して生成したタスクを、CPUコアに割り当てて実行するマルチコアシステムのタスク切り替え方法であって、
    第1のCPUコアが実行する前記タスクを、第2のCPUコアに切り替えて実行する際、試験実行指示手段が、前記タスク第2のCPUコアに試験実行させるステップと、
    判定手段が、第1のCPUコアの実行結果と第2のCPUコアの実行結果が一致したか否かを判定するステップと、
    第1のCPUコアの実行結果と第2のCPUコアの実行結果が一致すると判定された場合、割り当て確定手段が、前記タスクの割り当て先を第2のCPUコアに確定するステップと、を有することを特徴とするタスク切り替え方法。
JP2010521618A 2008-07-22 2009-02-23 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法 Expired - Fee Related JP5195913B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010521618A JP5195913B2 (ja) 2008-07-22 2009-02-23 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008188830 2008-07-22
JP2008188830 2008-07-22
PCT/JP2009/053200 WO2010010723A1 (ja) 2008-07-22 2009-02-23 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
JP2010521618A JP5195913B2 (ja) 2008-07-22 2009-02-23 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法

Publications (2)

Publication Number Publication Date
JPWO2010010723A1 JPWO2010010723A1 (ja) 2012-01-05
JP5195913B2 true JP5195913B2 (ja) 2013-05-15

Family

ID=41570191

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010521618A Expired - Fee Related JP5195913B2 (ja) 2008-07-22 2009-02-23 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法

Country Status (4)

Country Link
US (1) US8856196B2 (ja)
JP (1) JP5195913B2 (ja)
DE (1) DE112009001700B4 (ja)
WO (1) WO2010010723A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8293548B2 (en) * 2009-03-04 2012-10-23 Unilumin Group Co., Ltd. LED light module for street lamp and method of manufacturing same
JP4901915B2 (ja) * 2009-06-18 2012-03-21 株式会社東芝 映像処理装置、処理ユニット及びipアドレス管理方法
JP5515810B2 (ja) 2010-02-05 2014-06-11 日本電気株式会社 負荷制御装置
EP2369477B1 (en) * 2010-02-22 2017-10-11 Telefonaktiebolaget LM Ericsson (publ) Technique for providing task priority related information intended for task scheduling in a system
US20130061098A1 (en) * 2010-05-10 2013-03-07 Toyoya Jidosha Kabushiki Kaisha Failure check apparatus and failure check method
US9152523B2 (en) * 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
US9098521B2 (en) * 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
DE102011086530A1 (de) * 2010-11-19 2012-05-24 Continental Teves Ag & Co. Ohg Mikroprozessorsystem mit fehlertoleranter Architektur
JPWO2012098683A1 (ja) * 2011-01-21 2014-06-09 富士通株式会社 スケジューリング方法およびスケジューリングシステム
WO2012098684A1 (ja) 2011-01-21 2012-07-26 富士通株式会社 スケジューリング方法およびスケジューリングシステム
CN103339604B (zh) * 2011-01-31 2016-10-26 株式会社索思未来 程序生成装置、程序生成方法、处理器装置以及多处理器***
JPWO2012137238A1 (ja) * 2011-04-04 2014-07-28 株式会社日立製作所 計算機システム
DE102011105617A1 (de) * 2011-06-28 2013-01-03 Audi Ag Kraftfahrzeug mit einer Vielzahl von Betriebskomponenten
JP5341957B2 (ja) * 2011-07-20 2013-11-13 トヨタ自動車株式会社 内燃機関の制御装置
JP5760846B2 (ja) * 2011-08-22 2015-08-12 トヨタ自動車株式会社 内燃機関の制御装置
JP2014066165A (ja) * 2012-09-25 2014-04-17 Toyota Motor Corp エンジン制御装置
US9507500B2 (en) * 2012-10-05 2016-11-29 Tactual Labs Co. Hybrid systems and methods for low-latency user input processing and feedback
US9608876B2 (en) 2014-01-06 2017-03-28 Microsoft Technology Licensing, Llc Dynamically adjusting brand and platform interface elements
US9501808B2 (en) * 2014-01-06 2016-11-22 Microsoft Technology Licensing, Llc Division of processing between systems based on business constraints
US9483811B2 (en) 2014-01-06 2016-11-01 Microsoft Technology Licensing, Llc Division of processing between systems based on external factors
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
JP6152228B2 (ja) * 2014-09-12 2017-06-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 電子制御ユニット、車載ネットワークシステム及び車両用通信方法
US10089197B2 (en) * 2014-12-16 2018-10-02 Intel Corporation Leverage offload programming model for local checkpoints
JP6879625B2 (ja) * 2016-12-27 2021-06-02 東芝インフラシステムズ株式会社 プログラマブルコントローラ、管理装置および制御システム
KR102309429B1 (ko) * 2017-03-20 2021-10-07 현대자동차주식회사 차량 및 그 제어 방법
JP6617744B2 (ja) * 2017-04-05 2019-12-11 トヨタ自動車株式会社 車両システム
US10606714B2 (en) 2017-09-05 2020-03-31 International Business Machines Corporation Stopping central processing units for data collection based on event categories of events
US10740030B2 (en) 2017-09-06 2020-08-11 International Business Machines Corporation Stopping a plurality of central processing units for data collection based on attributes of tasks
DE102017217016A1 (de) * 2017-09-26 2019-03-28 Robert Bosch Gmbh Verteilvorrichtung und Verfahren zum Verteilen von Datenströmen für ein Steuergerät für ein hochautomatisiert fahrbares Fahrzeug
JP2019074851A (ja) * 2017-10-13 2019-05-16 株式会社デンソー 電子制御装置
JP6902992B2 (ja) * 2017-12-19 2021-07-14 日立Astemo株式会社 自動車用電子制御装置
US20190243698A1 (en) * 2018-02-02 2019-08-08 Robert Bosch Gmbh Electronic Control Unit for Flexible Replacement of Replaceable Components in a Vehicle
DE112018007744T5 (de) * 2018-07-19 2021-04-08 Mitsubishi Electric Corporation Bildschirmerzeugungsvorrichtung und Bildschirmerzeugungsverfahren
JP7342669B2 (ja) * 2019-12-04 2023-09-12 株式会社デンソー 電子制御装置
JP2021124902A (ja) * 2020-02-04 2021-08-30 トヨタ自動車株式会社 車両制御装置、車両制御方法、及び車両制御プログラム
TWI756974B (zh) 2020-12-09 2022-03-01 財團法人工業技術研究院 機器學習系統及其資源配置方法
CN114257549B (zh) * 2021-12-21 2023-01-10 北京锐安科技有限公司 一种流量的转发方法、装置、设备及存储介质
US20230341921A1 (en) * 2022-04-26 2023-10-26 Western Digital Technologies, Inc. Data Storage With Real Time Dynamic Clock Frequency Control

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031736A (ja) * 2003-07-07 2005-02-03 Hitachi Information Systems Ltd サーバ負荷分散装置及びサーバ負荷分散方法及びクライアントサーバシステム
JP2006133995A (ja) * 2004-11-04 2006-05-25 Toshiba Corp プロセッサシステム及びその制御方法
JP2006185152A (ja) * 2004-12-27 2006-07-13 Hitachi Ltd アプリケーション運用制御方法およびシステム
WO2007037006A1 (ja) * 2005-09-29 2007-04-05 Fujitsu Limited マルチコアプロセッサ

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4356546A (en) * 1980-02-05 1982-10-26 The Bendix Corporation Fault-tolerant multi-computer system
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US5168566A (en) * 1983-11-25 1992-12-01 Sharp Kabushiki Kaisha Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks
JPH0778785B2 (ja) * 1986-03-29 1995-08-23 株式会社東芝 プロセッサ選択方法
JPS6345670A (ja) * 1986-08-13 1988-02-26 Hitachi Ltd プロセツサ間同期装置
US4914570A (en) * 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
US4807228A (en) * 1987-03-18 1989-02-21 American Telephone And Telegraph Company, At&T Bell Laboratories Method of spare capacity use for fault detection in a multiprocessor system
US5404521A (en) * 1990-07-31 1995-04-04 Top Level Inc. Opportunistic task threading in a shared-memory, multi-processor computer system
CA2067576C (en) * 1991-07-10 1998-04-14 Jimmie D. Edrington Dynamic load balancing for a multiprocessor pipeline
JPH05265975A (ja) * 1992-03-16 1993-10-15 Hitachi Ltd 並列計算処理装置
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
JPH0830471A (ja) * 1994-07-14 1996-02-02 Hitachi Ltd ジョブの実行プロセサ変更方式
US5956482A (en) * 1996-05-15 1999-09-21 At&T Corp Multimedia information service access
US5889989A (en) * 1996-09-16 1999-03-30 The Research Foundation Of State University Of New York Load sharing controller for optimizing monetary cost
JPH10143380A (ja) 1996-11-07 1998-05-29 Hitachi Ltd マルチプロセッサシステム
US5903717A (en) * 1997-04-02 1999-05-11 General Dynamics Information Systems, Inc. Fault tolerant computer system
JPH11261702A (ja) * 1998-03-06 1999-09-24 Fujitsu Ltd 負荷予測によるシステム最適化制御装置
US6182085B1 (en) * 1998-05-28 2001-01-30 International Business Machines Corporation Collaborative team crawling:Large scale information gathering over the internet
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
JP4137264B2 (ja) * 1999-01-05 2008-08-20 株式会社日立製作所 データベース負荷分散処理方法及びその実施装置
US6647408B1 (en) * 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6625725B1 (en) * 1999-12-22 2003-09-23 Intel Corporation Speculative reuse of code regions
US20020032754A1 (en) * 2000-04-05 2002-03-14 Gary Logston Method and apparatus for profiling in a distributed application environment
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
JP2002215599A (ja) * 2001-01-18 2002-08-02 Mitsubishi Electric Corp マルチプロセッサシステムおよびその制御方法
US20030005380A1 (en) * 2001-06-29 2003-01-02 Nguyen Hang T. Method and apparatus for testing multi-core processors
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US6931576B2 (en) * 2002-01-07 2005-08-16 Sun Microsystems, Inc. Data integrity device providing heightened error protection in a data processing system
US7249358B2 (en) * 2003-01-07 2007-07-24 International Business Machines Corporation Method and apparatus for dynamically allocating processors
JP3970786B2 (ja) * 2003-03-05 2007-09-05 株式会社日立製作所 マルチプロセッサシステム
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7594228B2 (en) * 2003-09-23 2009-09-22 Lam Siu H Method and apparatus to perform task scheduling
EP1679595A4 (en) * 2003-10-29 2008-06-04 Ibm INFORMATION SYSTEM, LOAD CONTROL METHOD AND PROGRAM, AND RECORDING MEDIUM
US20080246772A1 (en) * 2003-11-19 2008-10-09 Lucid Information Technology, Ltd. Multi-mode parallel graphics rendering system (MMPGRS) employing multiple graphics processing pipelines (GPPLS) and real-time performance data collection and analysis during the automatic control of the mode of parallel operation of said GPPLS
US7961194B2 (en) * 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US20050137928A1 (en) * 2003-12-19 2005-06-23 Juergen Scholl Process management monitoring
JP2005190038A (ja) * 2003-12-25 2005-07-14 Hitachi Ltd プロセッサの診断処理方法および診断処理プログラム
JP2006031358A (ja) * 2004-07-15 2006-02-02 Ziosoft Inc ボリュームレンダリング等の画像処理システム
JP4410661B2 (ja) * 2004-11-09 2010-02-03 株式会社日立製作所 分散制御システム
GB0507150D0 (en) * 2005-04-08 2005-05-18 Ibm A method or apparatus for running a test program in a computer system
DE102005037246A1 (de) 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Rechnersystems mit wenigstens zwei Ausführungseinheiten und einer Vergleichseinheit
US7610425B2 (en) * 2005-08-22 2009-10-27 Sun Microsystems, Inc. Approach for managing interrupt load distribution
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
JP2007188212A (ja) 2006-01-12 2007-07-26 Seiko Epson Corp マルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラム
US20070288734A1 (en) * 2006-06-08 2007-12-13 Luick David A Double-Width Instruction Queue for Instruction Execution
US20080091974A1 (en) * 2006-10-11 2008-04-17 Denso Corporation Device for controlling a multi-core CPU for mobile body, and operating system for the same
US8032888B2 (en) * 2006-10-17 2011-10-04 Oracle America, Inc. Method and system for scheduling a thread in a multiprocessor system
JP2008102778A (ja) * 2006-10-19 2008-05-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びプログラム
JP2008188830A (ja) 2007-02-02 2008-08-21 Dic Corp プロセス印刷方法及び印刷データ作成装置
FR2912526B1 (fr) * 2007-02-13 2009-04-17 Thales Sa Procede de maintien du synchronisme d'execution entre plusieurs processeurs asynchrones fonctionnant en parallele de maniere redondante.
US20090064166A1 (en) * 2007-08-28 2009-03-05 Arimilli Lakshminarayana B System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks
JP4872944B2 (ja) * 2008-02-25 2012-02-08 日本電気株式会社 運用管理装置、運用管理システム、情報処理方法、及び運用管理プログラム
US8037350B1 (en) * 2008-04-30 2011-10-11 Hewlett-Packard Development Company, L.P. Altering a degree of redundancy used during execution of an application
US8904003B2 (en) * 2008-06-30 2014-12-02 Oracle America, Inc. Method and system for delegated job control across a network
US8429652B2 (en) * 2009-06-22 2013-04-23 Citrix Systems, Inc. Systems and methods for spillover in a multi-core system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031736A (ja) * 2003-07-07 2005-02-03 Hitachi Information Systems Ltd サーバ負荷分散装置及びサーバ負荷分散方法及びクライアントサーバシステム
JP2006133995A (ja) * 2004-11-04 2006-05-25 Toshiba Corp プロセッサシステム及びその制御方法
JP2006185152A (ja) * 2004-12-27 2006-07-13 Hitachi Ltd アプリケーション運用制御方法およびシステム
WO2007037006A1 (ja) * 2005-09-29 2007-04-05 Fujitsu Limited マルチコアプロセッサ

Also Published As

Publication number Publication date
DE112009001700T5 (de) 2011-06-01
DE112009001700B4 (de) 2019-02-07
US8856196B2 (en) 2014-10-07
WO2010010723A1 (ja) 2010-01-28
US20100262971A1 (en) 2010-10-14
JPWO2010010723A1 (ja) 2012-01-05

Similar Documents

Publication Publication Date Title
JP5195913B2 (ja) マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
US6675191B1 (en) Method of starting execution of threads simultaneously at a plurality of processors and device therefor
US9164799B2 (en) Multiprocessor system
US20100049960A1 (en) Operating system startup control method and information processing apparatus
JP2009541636A (ja) 内燃機関のエンジン制御部の機能を監視するための方法および装置
US20090059951A1 (en) Program control device
JP2012128788A (ja) 車両制御装置、データ通信方法
JP2011141782A (ja) 情報処理装置、電子制御ユニット、タスク割り当て方法
CN111791886B (zh) 用于车辆的实时控制***以及经由实时控制***执行车辆控制的方法
JP2005276097A (ja) 割り込み依頼プログラムおよびマイクロコンピュータ
JP4908587B2 (ja) 複数の実行ユニットを有するシステムを切り替える方法
Becker et al. Investigation on AUTOSAR-compliant solutions for many-core architectures
JP2014191655A (ja) マルチプロセッサ、電子制御装置、プログラム
Li et al. Multi-mode virtualization for soft real-time systems
US20050160425A1 (en) Limitation of the response time of a software process
US20080184258A1 (en) Data processing system
CN105474174B (zh) 控制时间密集的指令
US8555285B2 (en) Executing a general-purpose operating system as a task under the control of a real-time operating system
JP5699896B2 (ja) 情報処理装置、異常判定方法
JP7271973B2 (ja) 車両制御装置、動作クロック切換方法
WO2022137651A1 (ja) 車両制御装置
WO2019044226A1 (ja) アクセス制御装置
JPH0926888A (ja) 排他制御装置
US20090217279A1 (en) Method and Device for Controlling a Computer System
JP7421634B2 (ja) 制御装置及び方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121203

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: 20130108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130121

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5195913

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees