JP2019159931A - 並列化方法、並列化ツール、及びマルチコアマイコン - Google Patents

並列化方法、並列化ツール、及びマルチコアマイコン Download PDF

Info

Publication number
JP2019159931A
JP2019159931A JP2018047058A JP2018047058A JP2019159931A JP 2019159931 A JP2019159931 A JP 2019159931A JP 2018047058 A JP2018047058 A JP 2018047058A JP 2018047058 A JP2018047058 A JP 2018047058A JP 2019159931 A JP2019159931 A JP 2019159931A
Authority
JP
Japan
Prior art keywords
abnormality diagnosis
core
diagnosis process
processing
executed
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.)
Granted
Application number
JP2018047058A
Other languages
English (en)
Other versions
JP7139633B2 (ja
Inventor
憲一 峰田
Kenichi Mineda
憲一 峰田
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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2018047058A priority Critical patent/JP7139633B2/ja
Priority to DE102019202870.5A priority patent/DE102019202870A1/de
Publication of JP2019159931A publication Critical patent/JP2019159931A/ja
Application granted granted Critical
Publication of JP7139633B2 publication Critical patent/JP7139633B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】並列プログラムがマルチコアマイコンにて実行されることで、マルチコアマイコンにおける処理動作が正常になされているかを監視可能とする。【解決手段】並列プログラム31a1は、マルチコアマイコン31のハードウエアの異常診断処理CK1〜CK4を含んでいる。従って、マルチコアマイコン31は、並列プログラム31a1を実行することで、マルチコアマイコン31のハードウエアが正常に動作しているかを診断することができ、ひいては、そのハードウエアを利用した処理動作が正常になされているかを監視することができる。異常診断処理は、処理単位が実行されない空き時間となるコア以外の別コアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、実行スケジュールが決定されたものである。【選択図】図6

Description

本発明は、シングルコアマイコン用のシングルプログラムからマルチコアマイコン用の並列プログラムを生成する並列化方法と並列化ツール、及びシングルプログラムから生成された並列プログラムを実行するマルチコアマイコンに関する。
従来、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として、特許文献1に開示された並列化コンパイル方法が知られている。
この並列化コンパイル方法では、シングルプログラムのソースコードの字句解析や構文解析を行って中間言語に展開し、この中間言語を用いて、複数のマクロタスクの依存関係の解析や最適化等を行う。また、従来の並列化コンパイル方法では、各マクロタスクの依存関係やマクロタスク毎の実行時間を基にコアへの割り付けやスケジューリングを行って並列プログラムを生成する。
特開2015−1807号公報
近年、特に自動車分野などで、制御対象機器に対する制御系の誤動作(機能不全)を防止するために制御装置の動作を監視する監視装置などを設けて、機能安全を図ることが求められている。しかしながら、従来の並列化方法で生成される並列プログラムは、このような機能安全確保のための制御装置の動作監視の仕組みについてはなんら考慮されていない。
本発明は、上述した点に鑑みてなされたものであり、並列プログラムがマルチコアマイコンにて実行されることによって、マルチコアマイコンにおける処理動作が正常になされているかを監視可能となる並列化方法、並列化ツール、及びマルチコアマイコンを提供することを目的とする。
上記目的を達成するために本開示の一つは、
コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(31c、31d)を有するマルチコアマイコン(31)用の並列プログラムを生成する並列化方法であって、
シングルプログラムに含まれる複数の処理単位(A1〜A3、B1〜B2、C1〜C4)の依存関係を解析し、解析した複数の処理単位の依存関係に基づき、複数の処理単位の複数のコアへの割り付けを行うとともに、複数の処理単位の実行スケジュールを決定する第1スケジューリング手順(10a〜10e)と、
第1スケジューリング手順によって決定された、複数のコアにおける複数の処理単位の実行スケジュールに基づき、処理単位が実行されないコアの空き時間に、マルチコアマイコンのハードウエアの異常診断処理が実行されるように、当該異常診断処理の実行スケジュールを決定する第2スケジューリング手順(10f)と、を備え、
第1及び第2スケジューリング手順によって決定された実行スケジュールに従って、複数のコアにおいて複数の処理単位及び異常診断処理を実行するための並列プログラムを生成するものであり、
第2スケジューリング手順では、処理単位が実行されない空き時間となるコア以外のコアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、異常診断処理の実行スケジュールが決定される。
このように、本開示の並列化方法では、複数の処理単位の実行スケジュール及び異常診断処理の実行スケジュールに従って、複数のコアにおいて複数の処理単位及び異常診断処理を実行するための並列プログラムが生成される。このため、異常診断処理を含む並列プログラムがマルチコアマイコンにて実行されることで、マルチコアマイコンのハードウエアが正常に動作しているかを診断することができ、ひいては、そのハードウエアを利用したマルチコアマイコンによる処理動作が正常になされているかを監視することができる。
特に、本開示の並列化方法では、第2スケジューリング手順において、処理単位が実行されない空き時間となるコア以外のコアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、異常診断処理の実行スケジュールが決定される。このため、ハードウエアを利用する単位処理の実行に対してなんら影響を及ぼすことなく、そのハードウエアの異常診断処理を実行することが可能な並列プログラムが生成されえる。
本開示の他の一つは、
コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(31c、31d)を有するマルチコアマイコン(31)用の並列プログラムを生成する並列化ツールであって、
シングルプログラムに含まれる複数の処理単位(A1〜A3、B1〜B2、C1〜C4)の依存関係を解析し、解析した複数の処理単位の依存関係に基づき、複数の処理単位の複数のコアへの割り付けを行うとともに、複数の処理単位の実行スケジュールを決定する第1スケジューリング部(10a〜10e)と、
第1スケジューリング部によって決定された、複数のコアにおける複数の処理単位の実行スケジュールに基づき、処理単位が実行されないコアの空き時間に、マルチコアマイコンのハードウエアの異常診断処理が実行されるように、当該異常診断処理の実行スケジュールを決定する第2スケジューリング部(10f)と、を備え、
第1及び第2スケジューリング部によって決定された実行スケジュールに従って、複数のコアにおいて複数の処理単位及び異常診断処理を実行するための並列プログラムを生成するものであり、
第2スケジューリング部は、処理単位が実行されない空き時間となるコア以外のコアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、異常診断処理の実行スケジュールを決定する。
このように、本開示の並列化ツールが生成する並列プログラムは、複数の処理単位と異常診断処理とを含む。このため、異常診断処理を含む並列プログラムがマルチコアマイコンにて実行されることで、マルチコアマイコンのハードウエアが正常に動作しているかを診断することができ、ひいては、そのハードウエアを利用したマルチコアマイコンによる処理動作が正常になされているかを監視することができる。
特に、本開示の並列化ツールでは、第2スケジューリング部は、処理単位が実行されない空き時間となるコア以外のコアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、異常診断処理の実行スケジュールを決定する。このため、並列化ツールは、ハードウエアを利用する単位処理の実行に対してなんら影響を及ぼすことなく、そのハードウエアの異常診断処理を実行することが可能な並列プログラムを生成することができる。
本開示の他の一つは、
コアが一つであるシングルコアマイコン用のシングルプログラムから生成された、複数のコア(31c、31d)を有するマルチコアマイコン(31)用の並列プログラムを実行するマルチコアマイコン(21)であって、
並列プログラム(21a1)は、シングルプログラムに含まれていた複数の処理単位(MT1〜MT8)と、マルチコアマイコンのハードウエアの異常診断処理とを含み、
複数の処理単位は、各処理単位の依存関係に基づき、複数のコアへ割り付けられるとともに、実行スケジュールが決定されたものであり、
異常診断処理は、複数のコアにおける複数の処理単位の実行スケジュールに基づき、処理単位が実行されないコアの空き時間に異常診断処理が実行されるように、実行スケジュールが決定されたものであり、
さらに、異常診断処理は、処理単位が実行されない空き時間となるコア以外のコアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、実行スケジュールが決定されたものである。
上記のように、並列プログラムは異常診断処理を含んでいるので、マルチコアマイコンは、この並列プログラムを実行することで、マルチコアマイコンのハードウエアが正常に動作しているかを診断することができ、ひいては、そのハードウエアを利用したマルチコアマイコンによる処理動作が正常になされているかを監視することができる。
そして、異常診断処理は、並列プログラムにおいて、処理単位が実行されない空き時間となるコア以外のコアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、実行スケジュールが決定されたものである。このため、マルチコアマイコンは、並列プログラムを実行することで、ハードウエアを利用する単位処理の実行に対してなんら影響を及ぼすことなく、そのハードウエアの異常診断処理を実行することが可能となる。
上記括弧内の参照番号は、本開示の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら発明の範囲を制限することを意図したものではない。
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
実施形態における、自動並列化ツールとしてのコンピュータの概略構成を示すブロック図である。 実施形態における、自動並列化ツールとしてのコンピュータの機能を示すブロック図である。 シングルプログラムを、タスク毎に各処理単位の依存関係を解析した結果の一例を示す図である。 第1スケジューリング部による、複数の処理単位の複数のコアへの割り付けと実行順序とをスケジューリングした一例を示す図である。 第2スケジューリング部が実行する、異常監視処理を追加挿入するためのスケジュール更新処理を示すフローチャートである。 第2スケジューリング部による、複数の処理単位の実行スケジュールにおける空き時間に異常診断処理を挿入して、実行スケジュールを更新した結果を示す図である。 実施形態における、車載装置の概略構成を示すブロック図である。
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、並列化ツールとしてのコンピュータ10が、コアが一つであるシングルコアマイコン用のシングルプログラムから、第1コア31cと第2コア31dとを有するマルチコアマイコン31用に並列化した並列プログラム31a1を生成する例について説明する。なお、マルチコアマイコン31が備えるコアの数は2個に限られず、3個以上であってもよい。
このように、シングルプログラムから並列プログラム31a1を生成する背景として、制御の高度化によりプログラム量は年々増加する傾向にあるのに対し、シングルプロセッサの性能向上には限界があることが挙げられる。つまり、例えばシングルプロセッサの動作周波数を高めて処理能力を向上しようとしても、動作周波数を高めるにも限界があり、また動作周波数を高めることにより発熱量の増大や消費電力の増加を招いてしまう。このため、コア数の増加により処理能力向上を図るマルチコアマイコンを適用することが有効と考えられている。
この際、プログラムの開発者が、マルチコアの能力を最大限に発揮させられるように、各コアに適切に処理を割り振ったり、そのスケジューリングも行ったりしなければならないとすると、プログラムの開発負荷が増加してしまう。このようなプログラムの開発負荷を低減するために、シングルプログラムから並列プログラム31a1を自動生成することは技術的意義がある。さらに、シングルプログラムから並列プログラム31a1を自動生成することにより、シングルプロセッサ用に開発した既存のソフト資産を有効に活用することも可能となる。
まず、図1を参照して、コンピュータ10の構成に関して説明する。コンピュータ10は、並列化方法を実行する並列化ツールに相当し、シングルプログラムから並列プログラム31a1を生成するものである。なお、本実施形態では、コンピュータ10は、C言語で記述されたシングルプログラムに基づき、C言語で記述された並列プログラム31a1を生成するように構成される。このため、後述する車載装置30(マルチコアマイコン31)のROM31aに記憶され、マルチコアマイコン31によって実行される並列プログラム31a1’は、図2に示すように、さらにコンパイラ20によりコンパイルされて、バイナリコードに翻訳されたものとなる。
しかしながら、本発明は、これに限定されない。シングルプログラムは、C言語とは異なるプログラミング言語で記述されていてもよい。また、並列プログラム31a1は、例えば、シングルプログラムの解析時に使用する中間言語で記述されていてもよい。あるいは、コンピュータ10は、C言語で記述された並列プログラムと中間言語で記述された並列プログラムとをともに生成してもよい。さらに、コンピュータ10が、コンパイラ20としての機能も取り込み、直接、バイナリコードの並列プログラム31a1’を生成してもよい。
コンピュータ10は、図1に示すように、ディスプレイ11、HDD12、CPU13、ROM14、RAM15、入力装置16、読取部17などを備えて構成されている。コンピュータ10は、読取部17により、記憶媒体18に記憶された記憶内容を読み取ることができる。図1に示すように、記憶媒体18には、例えば、自動並列化コンパイラ1が記憶される。なお、コンピュータ10及び記憶媒体18は、特開2015−1807号公報に記載されたパーソナルコンピュータ100及び記憶媒体180と同様であるため、詳細は、特開2015−1807号公報を参照されたい。
自動並列化コンパイラ1は、並列プログラム31a1を生成するための手順をコンピュータ10に実行させるソフトウエアである。よって、自動並列化コンパイラ1により、コンピュータ10は並列化方法を実行可能となる。換言すれば、自動並列化コンパイラ1は、並列化方法を含むプログラムである。コンピュータ10は、自動並列化コンパイラ1を実行することで、並列化ツールとして、並列プログラム31a1を生成する。
次に、図2を参照して、並列化ツールとしてのコンピュータ10が有する、シングルプログラムから並列プログラム31a1を生成するための各機能及び処理手順について説明する。図2は、コンピュータ10の各機能及び処理手順を機能ブロックとして表した図である。図2に示すように、コンピュータ10は、字句解析部10a、構文・意味解析部10b、依存関係解析部10c、コア割付部10d、第1スケジューリング部10e、及び第2スケジューリング部10fとしての機能を有している。
本実施形態では、図2に示すように、コンピュータ10には、制御対象機器を制御するためのシングルプログラム全体を一度に解析して並列プログラムを生成するのではなく、独立した処理機能(タスク)毎に分割されたシングルプログラムを対象として、その並列プログラムを生成する。タスク毎に分割されたシングルプログラムは複数の処理単位を含み、その複数の処理単位が実行されることにより、タスク毎の目的とする処理機能を実現することができる。このように複数の処理単位は、目的とする処理機能を実現するために協働するものであり、例えば先の処理単位で処理された変数データを参照する後の処理単位や、先の処理単位の条件分岐によって実行される後の処理単位などを含む。
ここで、処理単位とは、各コアに割り振る際の最小単位であるコア配置単位や、関数をいう。コア配置単位は、処理ブロック、マクロタスク、あるいは単なる処理単位などと言い換えることができる。コア配置単位と関数との関係は、コア配置単位≧関数である。つまり、関数は、コア配置単位自体である場合や、コア配置単位に含まれる親関数やサブ関数の場合がある。
字句解析部10a及び構文・意味解析部10bは、C言語で記述されたシングルプログラムのソースコードを対象として、字句解析や、構文と意味の解析を行い、中間言語に展開する。字句解析部10a及び構文・意味解析部10bによって展開された中間言語は、汎用的な命令を含んでいる。なお、字句解析部10a及び構文・意味解析部10bは、特開2015−1807号公報のFE3に相当するため、詳細は、特開2015−1807号公報を参照されたい。
依存関係解析部10cは、中間言語に展開されたシングルプログラムに含まれる処理単位の依存関係を解析し、並列実行可能な処理単位を抽出する。依存関係には、後に実行される処理単位が先に実行される処理単位で更新された変数データを参照するなどのデータ依存関係と、後に実行される処理単位が先に実行される処理単位の条件分岐先となるなどの制御依存関係とが含まれる。このような依存関係がある複数の処理単位は、依存関係に従う処理順序で実行される必要がある。なお、本実施形態では、上述したようにタスク毎に分割されたシングルプログラムが並列化の対象である。タスク毎に分割されたシングルプログラムに含まれる複数の処理単位は、データ依存関係や制御依存関係を有している。
例えば、図3に示す例では、タスクAは処理単位A1〜A3を含み、処理単位A2、A3は処理単位A1に対して依存関係を有している。そして、処理単位A2と処理単位A3とは並列実行可能な処理単位である。また、タスクBは処理単位B1〜B2を含み、処理単位B2は処理単位B1に対して依存関係を有している。さらに、タスクCは処理単位C1〜C4を含み、処理単位C2は処理単位C1に対して依存関係を有し、処理単位C4は処理単位C3に対して依存関係を有している。処理単位C1、C2と処理単位C3、C4とは並列実行可能である。
コア割付部10dは、依存関係解析部10cで解析した解析結果に基づき、複数の処理単位を第1コア31c及び第2コア31dに割り付ける(割り振る)。この際、コア割付部10dは、例えば、並列実行可能な処理単位が第1コア31c及び第2コア31dで並行して実行されるように、複数の処理単位の割り振りを行う。例えば、図3に示すように、各タスク毎に、処理単位の依存関係が解析された場合の、第1コア31c及び第2コア31dへの各処理単位A1〜A3、B1〜B2、C1〜C4の割り振りの一例を説明する。まず、コア割付部10dは、タスクAの処理単位A1〜A3に関して、処理単位A1、A2を第1コア31cに割り付け、処理単位A2と並列に実行可能な処理単位A3を第2コア31dに割り付ける。また、コア割付部10dは、タスクBの処理単位B1、B2を第1コア31cに割り付け、タスクCの処理単位C1〜C4については、処理単位C1、C2を第1コア31cに割り付け、それらと並列に実行可能な処理単位C3、C4を第2コア31dに割り付ける。
そして、第1スケジューリング部10eは、第1コア31c及び第2コア31dに割り振られた複数の処理単位A1〜A3、B1〜B2、C1〜C4のスケジューリングを行う。具体的には、第1スケジューリング部10eは、各処理単位A1〜A3、B1〜B2、C1〜C4の実行時間や依存関係に基づいて、第1コア31c及び第2コア31dに割り振られた各処理単位A1〜A3、B1〜B2、C1〜C4の実行スケジュールを決定する。なお、依存関係解析部10c、コア割付部10d、及び第1スケジューリング部10eは、特開2015−1807号公報のMP5に相当するため、詳細は、特開2015−1807号公報を参照されたい。
図4に、第1スケジューリング部10eによるスケジューリング結果の一例を示す。タスクAの各処理単位A1〜A3は、上述したように、処理単位A1に対して、処理単位A2と処理単位A3とが依存する依存関係を有している。このため、図4に示す例のように、処理単位A1が実行される第1コア31cとは別の第2コア31dで実行される処理単位A3は、同期処理により、処理単位A1の完了後に実行開始するようにスケジュールされる。同期処理は、例えば、処理単位A1が完了したときに第1コア31cが完了情報をRAM31bに書き込み、第2コア31dが、その完了情報をRAM31bから読み出して確認したときに、処理単位A3の実行を開始することによって実現することができる。あるいは、同期処理として、第1コア31cが、処理単位A1の完了後に、第2コア31dに完了信号を通知するようにしてもよい。
また、図4に示す例では、タスクAの各処理単位A1〜A3の完了後、実行タスクがタスクBに切り替えられ、タスクBの各処理単位B1〜B2が実行されるようにスケジューリングされている。さらに、タスクBの各処理単位B1〜B2の完了後、実行タスクがタスクCに切り替えられ、タスクCの各処理単位C1〜C4が実行されるようにスケジューリングされている。
そして、図4に示す例では、タスクAの処理単位A1は、シンボルPで表されるRAM31bに保存される変数データにアクセスして、書き込みを行う関数を有している。また、タスクAの処理単位A2は、シンボルX、Zで表されるRAM31bに保存される変数データにアクセスして、書き込みを行う関数を有している。さらに、タスクBの処理単位B1は、シンボルWで表される変数データにアクセスして、書き込みを行う関数を有し、処理単位B2は、シンボルQで表される変数データにアクセスして書き込みを行う関数を有している。ただし、説明した例に限られず、各変数データのアクセスには、書き込みを行う関数によるばかりでなく、読み出しを行う関数による場合も含まれる。
本実施形態のコンピュータ10は、図2に示すように、さらに第2スケジューリング部10fを備えている。この第2スケジューリング部10fは、第1スケジューリング部10eによってスケジューリングされた、並列プログラムを構成する複数の処理単位の実行スケジュールにおける空き時間に、マルチコアマイコン31のハードウエアの異常診断処理を挿入して、並列プログラムの実行スケジュールを更新するものである。換言すれば、第2スケジューリング部10fは、第1スケジューリング部10eによって決定された、第1コア31c及び第2コア31dにおける複数の処理単位の実行スケジュールに基づき、処理単位が実行されないコアの空き時間に並行して、マルチコアマイコン31のハードウエアの異常診断処理が実行されるように、当該異常診断処理の実行スケジュールを決定するものである。すなわち、第2スケジューリング部10f(コンピュータ10)は、挿入すべき異常診断処理としてのプログラムを保有しており、その異常診断処理を実行可能な空き時間を探索し、探索された空き時間に異常診断処理を割り付ける。この結果、第2スケジューリング部10fによって実行スケジュールが更新された並列プログラム31a1は、シングルプログラムに含まれていた各タスクの処理単位に加えて、マルチコアマイコン31のハードウエアの異常診断処理を含むものとなる。
ここで、マルチコアマイコン31のハードウエアの異常診断処理について説明する。異常診断処理は、並列プログラム31a1を実行するマルチコアマイコン31のハードウエアに異常が発生していないかを診断するものである。このように、本実施形態による並列化ツールとしてのコンピュータ10は、マルチコアマイコン31のハードウエアの異常を診断する異常診断処理を含む並列プログラム31a1を生成するように構成されている。このため、マルチコアマイコン31は、生成された並列プログラム31a1を実行することで、自身のハードウエアに異常が生じておらず、正常に動作しているかどうかを診断することができ、ひいては、該当するハードウエアを利用したマルチコアマイコン31による処理動作が正常になされているかを監視することができる。
ハードウエアの異常診断処理の具体例としては、RAM31bの書換えチェック処理を挙げることができる。すなわち、異常診断処理の診断対象となるハードウエアは、マルチコアマイコン31の書換え可能なメモリであるRAM31bであり、異常診断処理としての書換えチェック処理は、RAM31bのデータが正常に書換え可能であるかをチェックするものである。例えば、書換えチェック処理は、以下の4つのステップにて実行することができる。まず、第1ステップとして、診断対象とする変数データの値が保存されているRAM31bの該当領域から変数データの値を読み出して、他のメモリ領域に退避させる。次に、第2ステップとして、変数データを読み出した該当領域にテスト値を書き込む。そして、第3ステップとして、書き込んだテスト値を該当領域から読み出して、その読み出した値がテスト値に一致するかどうかを判定する。最後に、第4ステップとして、退避させた値を用いて、該当領域を元の変数データの値に書き戻す。このようにして、書換えチェック処理は、変数データを保存するために利用されるRAM31bの記憶領域を個別に書換え可能かチェックする。
本実施形態では、書換えチェックが必要なRAM31bの記憶領域に関する情報(RAM情報)19が、第2スケジューリング部10fに与えられるように構成されている。より詳しく説明すると、シングルプログラムにおいて、変数データを示すシンボルとして使用されているシンボルデータをまとめた情報が、書換えチェックが必要なRAM情報19として、第2スケジューリング部10fに与えられる。並列プログラム31a1がC言語や中間言語で記述される場合、各変数データは対応するシンボルによって表される。各シンボルによって表される各変数データがマルチコアマイコン31のRAM31bのどの記憶領域に保存されるかは、コンパイラ20によって、関数や変数のシンボルなどが、具体的なアドレス情報に変換されることで初めて決定される。そのため、第2スケジューリング部10fには、書換えチェックが必要なRAM情報19として、変数データを示すシンボルをまとめた情報が与えられるのである。
書換えチェックが必要なRAM情報19として、シングルプログラムを作成する際に、使用する変数データを示すシンボルをまとめておき、そのまとめた情報が使用され得る。この場合、まとめた情報を、RAM情報19としてコンピュータ10に入力すればよい。あるいは、コンピュータ10が、シングルプログラムを解析する際に、使用されている変数データを示すシンボルを抽出してまとめたものを、RAM情報19として使用してもよい。これにより、書換えチェック処理は、シングルプログラムで定義されている変数データを保存するために利用される記憶領域を個別に書換え可能かチェックすることができるようになる。
なお、第2スケジューリング部10fは、すべての変数データに対して、共通の書換えチェック処理を実施するようにしてもよいが、変数データごとに、異なる書換えチェック処理を実施するようにしてもよい。例えば、異なる書換えチェック処理として、テスト値を異ならせたり、チェック回数を異ならせたりしてもよい。この場合、第2スケジューリング部10fが、異なる変数データに対して異なる書換えチェック処理を自動的に割り当てるようにしてもよいし、第2スケジューリング部10fに入力するRAM情報19に、各変数データに対して使用する書換えチェック処理を指定する情報を含ませてもよい。
また、書換えチェック処理の対象とするRAM31bの記憶領域は、シングルプログラムで使用される変数データが保存される記憶領域だけでなく、RAM31bの他のデータが記憶される記憶領域も対象に含めてもよい。逆に、変数データが保存されるRAM31bの記憶領域のすべてを書換えチェック処理の対象とするのではなく、データが壊れても影響が小さい変数データの記憶領域は、書換えチェック処理の対象から除外してもよい。
次に、第2スケジューリング部10fが、第1スケジューリング部10eが決定したスケジュール結果に、ハードウエアの異常監視処理を追加挿入して、スケジュールを更新するスケジュール更新処理の具体的な処理内容の一例を、図5のフローチャートを参照して説明する。
まず、最初のステップS100において、第2スケジューリング部10fは、入力されたRAM情報19の中から、1つのRAM情報を選択する。続くステップS110では、選択したRAM情報、すなわち選択した変数データを示すシンボルに関して、それが保存されるRAM31bの記憶領域を書換えチェックするための異常診断処理の実行に必要な時間情報を取得する。異常診断処理の実行に必要な時間情報は予め定められ、異常診断処理とともにデータとして用意されている。
ステップS120では、第1スケジューリング部10eでのスケジュール結果に基づき、第1コア31c及び第2コア31dにおいて、処理単位が実行されないコアの空き時間をサーチする。そして、第2スケジューリング部10fは、サーチした1つのコアの空き時間を対象として、以下に説明する処理を実行する。
まず、ステップS130では、サーチしたコアの空き時間に、別コアにて実行される処理単位が、異常診断処理が診断対象とするRAM31bの同じ記憶領域にアクセスするものであるかどうかを判定する。つまり、別コアにて実行される処理単位が、ステップS100で選択した変数データを示すシンボルと同じシンボルを対象として処理を行うものであるかどうかを判定する。例えば、図6に示す例において、第1〜第4異常診断処理CK1〜CK4の中の第3異常診断処理CK3は、変数データを示すシンボルWに対するものである。この第3異常診断処理CK3が、別コアとしての第1コア31cで処理単位B1が行われる時間帯に対応する、第2コア31dの空き時間を対象として、その空き時間に挿入可能であるかどうかが判定された場合を想定する。処理単位B1は、図6に示すように、変数データを示すシンボルWの書き込みを行う処理を含んでいる。従って、第3異常診断処理CK3の診断対象となるRAM記憶領域と、処理単位B1によりアクセスされるRAM記憶領域とは重複している。このため、判定対象とした第2コア31dの空き時間に第3異常診断処理CK3を挿入したとすると、第3異常診断処理CK3によるRAM記憶領域の書換え処理により、第1コア31cでの処理単位B1におけるRAMアクセスが影響を受け、処理単位B1が正常な処理を行い得ない可能性が生じる。
そのため、ステップS130での判定処理において、異常診断処理が対象とするRAM31bの記憶領域と別コアで実行される処理単位がアクセスするRAM31bの記憶領域とが重複していると判定(肯定的判定)した場合、ステップS150の処理に進む。ステップS150では、ステップS120でサーチしたコアの空き時間は、選択した変数データのためのRAM記憶領域の書換えチェック処理を行うのに適していないとみなし、次の空き時間をサーチする。そして、サーチした次の空き時間を判定対象として、再び、ステップS130の処理を実行する。
例えば、図6に示す例において、第3異常診断処理CK3を挿入するための次の空き時間として、第1コア31cで処理単位B2が行われる時間帯に対応する、第2コア31dの空き時間がサーチされた場合を想定する。この場合、処理単位B2は、変数データを示すシンボルQの書き込みを行う処理を含んでいるだけである。このため、ステップS130での判定処理では、異常診断処理が対象とするRAM31bの記憶領域と別コアで実行される処理単位がアクセスするRAM31bの記憶領域とは重複していないとの否定的な判定がなされることになる。この場合、第2スケジューリング部10fは、ステップS140に処理を進める。
ステップS140では、サーチしたコアの空き時間が、ステップS110で取得した異常診断処理の実行必要時間よりも短いかどうかを判定する。短いと判定(肯定的判定)した場合には、判定対象としているコアの空き時間では、異常診断処理の実行を完了できない。そのため、ステップS150の処理に進んで、次のコアの空き時間をサーチすることにより、判定対象とするコアの空き時間を変更する。一方、ステップS140の判定処理において、コアの空き時間は短くないと判定(否定的判定)した場合には、ステップS160の処理に進む。
ステップS160において、第2スケジューリング部10fは、選択した変数データのためのRAM記憶領域を書換えチェックするための異常診断処理を、判定対象としたコアの空き時間に挿入し(割り付け)て、第1スケジューリング部10eが決定したスケジュールを更新する。従って、並列化ツールとしてのコンピュータ10は、このように更新されたスケジュールに従って並列プログラム31a1を生成することで、別コアでの単位処理の実行に対してなんら影響を及ぼすことなく、RAM31bの記憶領域の書換えチェックを実施可能な並列プログラムを生成することができる。
続くステップS170では、異常診断処理を挿入したコアの空き時間の前後で、別コアが、異常診断処理と同じRAM記憶領域にアクセスする処理単位を実行するスケジュールとなっているかどうかを判定する。そのようなスケジュールになっていると判定(肯定的判定)した場合、ステップS180の処理に進む。一方、そのようなスケジュールにはなっていないと判定(否定的判定)した場合、ステップS200の処理に進む。ステップS180では、挿入した異常診断処理と、その異常診断処理の前後で、同じRAM記憶領域にアクセスする処理単位との間に同期処理が設定されているか否かを判定する。同期処理が設定されていない判定した場合、ステップS190の処理に進む。一方、同期処理が設定されていると判定した場合、ステップS200の処理に進む。
ステップS190では、異常診断処理と、その前後で同じRAM記憶領域にアクセスする処理単位との間に同期処理を追加する。この同期処理の追加により、並列プログラム31a1が実行される際には、同じRAM記憶領域にアクセスする単位処理が完了した後に異常診断処理が実行される、及び/又は、異常診断処理が完了した後に同じRAM記憶領域にアクセスする単位処理が実行されることになる。これにより、異常診断処理と、その異常診断処理が診断対象とするRAM記憶領域にアクセスする単位処理との実行時間がオーバーラップすることを確実に防止することができる。
例えば、第1スケジューリング部10eにより、図3に示すような、複数の処理単位A1〜A3、B1〜B2、C1〜C4の実行スケジュールが決定された場合に、図6に示すように、第1コア31cで処理単位A1が行われる時間帯に対応する、第2コア31dの空き時間に第1異常診断処理CK1が挿入された場合を想定する。この場合、図6に示すように、第1異常診断処理CK1の処理後に、第1コア31cにて、第1異常診断処理CK1と同じRAM記憶領域にアクセスする処理を含む処理単位A2が実行されるスケジュールとなっている。そのため、ステップS170では肯定的な判定がなされることになる。しかし、第1異常診断処理CK1と処理単位A2との間には、すでに同期処理が設定されている。このため、ステップS180では肯定的な判定がなされるので、ステップS190の処理は実行されない。
一方、図6に示すように、第3異常診断処理CK3が、第1コア31cで処理単位B2が行われる時間帯に対応する、第2コア31dの空き時間に挿入された場合、その第3異常診断処理CK3の実行前に、同じRAM記憶領域にアクセスする処理を含む処理単位B1が第1コア31cにて実行されるスケジュールとなっている。また、図3に示すように、処理単位B1と処理単位B2との間には同期処理が設定されていない。このため、ステップS180にて、第3異常診断処理CK3と処理単位B1との間には、同期処理は設定されていないと判定されることになる。従って、ステップS190の処理が実行され、図6に示すように、処理単位B1と第3異常診断処理CK3との間に同期処理が設定される。
最後に、ステップS200では、第2スケジューリング部10fは、与えられたRAM情報19に含まれる全RAM情報(すべての変数データに対応するすべてのシンボル)の選択が完了したかどうかを判定する。まだ全RAM情報の選択が完了していないと判定した場合には、ステップS100の処理に戻り、まだ選択していないRAM情報の中から1つのRAM情報を選択する。そして、上述したステップS110〜S200の処理を繰り返す。
次に、車載装置30の構成に関して説明する。車載装置30は、図7に示すように、マルチコアマイコン31、通信部32、センサ部33、入出力ポート34を備えて構成されている。また、マルチコアマイコン31は、ROM31a、RAM31b、第1コア31c、及び第2コア31dを備えて構成されている。車載装置30は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用され得る。以下、車載装置30がエンジン制御装置として適用された例について説明する。
第1コア31cと第2コア31dは、ROM31aに保存された並列プログラム31a1’を実行することで、例えばエンジン制御を実行する。具体的には、制御対象機器としての各アクチュエータを駆動することにより燃料噴射量、点火時期、吸入空気量などを制御する。なお、ROM31aには、エンジン制御で使用される定数データなども保存されている。RAM31bは、変数データなどを一時的に格納するものであり、マルチコアマイコン31が並列プログラム31a1’を実行するときに適宜アクセスされる。通信部32は、車内LAN等を介して接続された他のECUと通信を行う。センサ部33は、エンジンの状態を検出するための各種のセンサを含む。入出力ポート34は、エンジンを制御するための各種信号の送受信を行う。
車載装置30のマルチコアマイコン31が実行する並列プログラム31a1’は、上述したように、マルチコアマイコン31のハードウエアの異常診断処理を含んでいる。このため、マルチコアマイコン31は、この並列プログラム31a1’を実行することで、マルチコアマイコン31のハードウエアが正常に動作しているかを診断することができる。それにより、マルチコアマイコン31、そのハードウエアを利用した処理動作が正常になされているかを監視することができる。そして、万一、異常診断処理としての書換えチェック処理によりRAM異常が検出された場合には、マルチコアマイコン31は、異常が検出されたRAM記憶領域の使用を禁止したり、マルチコアマイコン31のリセットや、燃料カットなどのフェールセーフ処理などの異常処置を実行したりすればよい。
また、異常診断処理は、並列プログラム31a1’において、処理単位が実行されない空き時間となるコア以外のコアにおいて、空き時間と並行して実行される処理単位により利用されるハードウエアが、異常診断処理の診断対象となるハードウエアと重複しないことを条件として、空き時間に異常診断処理が実行されるように、実行スケジュールが決定されている。このため、マルチコアマイコン31は、並列プログラム31a1’を実行することで、ハードウエアを利用する単位処理の実行に対してなんら影響を及ぼすことなく、そのハードウエアの異常診断処理を実行することが可能となる。
さらに、マルチコアマイコン31が実行する並列プログラム31a1’は、異常診断処理が実行される前後の少なくとも一方の時間帯に、異常診断処理を実行するコア以外のコアにおいて、異常診断処理が診断対象とするハードウエアを利用する単位処理が実行されるスケジュールとなっている場合、当該ハードウエアを利用する単位処理が完了した後に異常診断処理の実行を開始するための同期処理、及び/又は、異常診断処理が完了した後にハードウエアを利用する単位処理の実行を開始するための同期処理を含んでいる。このため、マルチコアマイコン31が並列プログラム31a1’を実行した際に、異常診断処理と、その異常診断処理が診断対象とするハードウエアを利用する単位処理との実行時間がオーバーラップすることを確実に防止することができる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
(変形例1)
例えば、上述した実施形態では、異常診断処理として、RAM31bの書換えチェック処理を実行する例について説明した。しかしながら、異常診断処理は、RAM31b以外のマルチコアマイコン31のハードウエアの異常診断を行うものであってもよい。例えば、異常診断処理は、書換え可能なフラッシュROMを診断対象としてもよい。さらに、異常診断処理は、マルチコアマイコン31に内蔵されたカウンタ回路やA/D変換器を診断対象として、それらが正常に動作するものであるか否かをチェックするものであってもよい。
1…自動並列化コンパイラ、10…コンピュータ、10a…字句解析部、10b…構文・意味解析部、10c…依存関係解析部、10d…コア割付部、10e…スケジューリング部、10f…実行順序情報出力部、11…ディスプレイ、12…HDD、13…CPU、14…ROM、15…RAM、16…入力装置、17…読取部、18…記憶媒体、20…コンパイラ、30…車載装置、31…マルチコアマイコン、31a…ROM、31a1(31a1’)…並列プログラム、31b…RAM、31c…第1コア、31d…第2コア、32…通信部、33…センサ部、34…入出力ポート

Claims (16)

  1. コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(31c、31d)を有するマルチコアマイコン(31)用の並列プログラム(31a1)を生成する並列化方法であって、
    前記シングルプログラムに含まれる複数の処理単位(A1〜A3、B1〜B2、C1〜C4)の依存関係を解析し、解析した前記複数の処理単位の依存関係に基づき、前記複数の処理単位の前記複数のコアへの割り付けを行うとともに、前記複数の処理単位の実行スケジュールを決定する第1スケジューリング手順(10a〜10e)と、
    前記第1スケジューリング手順によって決定された、前記複数のコアにおける前記複数の処理単位の実行スケジュールに基づき、前記処理単位が実行されないコアの空き時間に、前記マルチコアマイコンのハードウエアの異常診断処理が実行されるように、当該異常診断処理の実行スケジュールを決定する第2スケジューリング手順(10f)と、を備え、
    前記第1及び第2スケジューリング手順によって決定された実行スケジュールに従って、前記複数のコアにおいて前記複数の処理単位及び前記異常診断処理を実行するための前記並列プログラムを生成するものであり、
    前記第2スケジューリング手順では、前記処理単位が実行されない空き時間となるコア以外のコアにおいて、前記空き時間と並行して実行される処理単位により利用されるハードウエアが、前記異常診断処理の診断対象となるハードウエアと重複しないことを条件として、前記空き時間に前記異常診断処理が実行されるように、前記異常診断処理の実行スケジュールが決定される並列化方法。
  2. 前記第2スケジューリング手順では、さらに、前記異常診断処理の実行に要する時間が、前記空き時間よりも短いことを条件として、前記空き時間に前記異常診断処理が実行されるように前記異常診断処理の実行スケジュールが決定される請求項1に記載の並列化方法。
  3. 前記第2スケジューリング手順では、前記異常診断処理が実行される前後の少なくとも一方の時間帯に、当該異常診断処理を実行するコア以外のコアにおいて、前記異常診断処理が診断対象とするハードウエアを利用する単位処理が実行されるスケジュールとなっている場合、当該ハードウエアを利用する単位処理が完了した後に前記異常診断処理が実行を開始するための同期処理、及び/又は、前記異常診断処理が完了した後に前記ハードウエアを利用する単位処理が実行を開始するための同期処理が追加される請求項1又は2に記載の並列化方法。
  4. 前記異常診断処理の診断対象となるハードウエアは、前記マルチコアマイコンの書換え可能なメモリ(31b)であり、前記異常診断処理は、前記メモリのデータが正常に書換え可能であるかをチェックする書換えチェック処理である請求項1乃至3のいずれかに記載の並列化方法。
  5. 前記書換えチェック処理は、前記シングルプログラムで定義されているデータを保存するために利用されるメモリ領域を個別に書換え可能かチェックするものである請求項4に記載の並列化方法。
  6. コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(31c、31d)を有するマルチコアマイコン(31)用の並列プログラム(31a1)を生成する並列化ツールであって、
    前記シングルプログラムに含まれる複数の処理単位(A1〜A3、B1〜B2、C1〜C4)の依存関係を解析し、解析した前記複数の処理単位の依存関係に基づき、前記複数の処理単位の前記複数のコアへの割り付けを行うとともに、前記複数の処理単位の実行スケジュールを決定する第1スケジューリング部(10a〜10e)と、
    前記第1スケジューリング部によって決定された、前記複数のコアにおける前記複数の処理単位の実行スケジュールに基づき、前記処理単位が実行されないコアの空き時間に、前記マルチコアマイコンのハードウエアの異常診断処理が実行されるように、当該異常診断処理の実行スケジュールを決定する第2スケジューリング部(10f)と、を備え、
    前記第1及び第2スケジューリング部によって決定された実行スケジュールに従って、前記複数のコアにおいて前記複数の処理単位及び前記異常診断処理を実行するための前記並列プログラムを生成するものであり、
    前記第2スケジューリング部は、前記処理単位が実行されない空き時間となるコア以外のコアにおいて、前記空き時間と並行して実行される処理単位により利用されるハードウエアが、前記異常診断処理の診断対象となるハードウエアと重複しないことを条件として、前記空き時間に前記異常診断処理が実行されるように、前記異常診断処理の実行スケジュールを決定する並列化ツール。
  7. 前記第2スケジューリング部は、さらに、前記異常診断処理の実行に要する時間が、前記空き時間よりも短いことを条件として、前記空き時間に前記異常診断処理が実行されるように前記異常診断処理の実行スケジュールを決定する請求項6に記載の並列化ツール。
  8. 前記第2スケジューリング部は、前記異常診断処理が実行される前後の少なくとも一方の時間帯に、当該異常診断処理を実行するコア以外のコアにおいて、前記異常診断処理が診断対象とするハードウエアを利用する単位処理が実行されるスケジュールとなっている場合、当該ハードウエアを利用する単位処理が完了した後に前記異常診断処理が実行を開始するための同期処理、及び/又は、前記異常診断処理が完了した後に前記ハードウエアを利用する単位処理が実行を開始するための同期処理を追加する請求項6又は7に記載の並列化ツール。
  9. 前記異常診断処理の診断対象となるハードウエアは、前記マルチコアマイコンの書換え可能なメモリ(31b)であり、前記異常診断処理は、前記メモリのデータが正常に書換え可能であるかをチェックする書換えチェック処理である請求項6乃至8のいずれかに記載の並列化ツール。
  10. 前記書換えチェック処理は、前記シングルプログラムで定義されているデータを保存するために利用されるメモリ領域を個別に書換え可能かチェックするものである請求項9に記載の並列化ツール。
  11. コアが一つであるシングルコアマイコン用のシングルプログラムから生成された、複数のコア(31c、31d)を有するマルチコアマイコン(31)用の並列プログラム(31a1)を実行するマルチコアマイコンであって、
    前記並列プログラムは、前記シングルプログラムに含まれていた複数の処理単位(A1〜A3、B1〜B2、C1〜C4)と、前記マルチコアマイコンのハードウエアの異常診断処理とを含み、
    前記複数の処理単位は、各処理単位の依存関係に基づき、前記複数のコアへ割り付けられるとともに、実行スケジュールが決定されたものであり、
    前記異常診断処理は、前記複数のコアにおける前記複数の処理単位の実行スケジュールに基づき、前記処理単位が実行されないコアの空き時間に前記異常診断処理が実行されるように、実行スケジュールが決定されたものであり、
    さらに、前記異常診断処理は、前記処理単位が実行されない空き時間となるコア以外のコアにおいて、前記空き時間と並行して実行される処理単位により利用されるハードウエアが、前記異常診断処理の診断対象となるハードウエアと重複しないことを条件として、前記空き時間に前記異常診断処理が実行されるように、実行スケジュールが決定されたものであるマルチコアマイコン。
  12. 前記マルチコアマイコンは、車両に搭載された車載機器を制御するための車載装置(30)に適用され、前記並列プログラムを実行することで前記車載機器を制御するものである請求項11に記載のマルチコアマイコン。
  13. 前記異常診断処理の実行に要する時間が、前記空き時間よりも短いことを条件として、前記空き時間に前記異常診断処理が実行されるように前記異常診断処理の実行スケジュールが決定される請求項11又は12に記載のマルチコアマイコン。
  14. 前記異常診断処理が実行される前後の少なくとも一方の時間帯に、当該異常診断処理を実行するコア以外のコアにおいて、前記異常診断処理が診断対象とするハードウエアを利用する単位処理が実行されるスケジュールとなっている場合、前記並列プログラムは、前記ハードウエアを利用する単位処理が完了した後に前記異常診断処理の実行を開始するための同期処理、及び/又は、前記異常診断処理が完了した後に前記ハードウエアを利用する単位処理の実行を開始するための同期処理を含み、
    前記マルチコアマイコンは、前記同期処理を実行することにより、前記異常診断処理と、当該異常診断処理が診断対象とするハードウエアを利用する単位処理との実行時間がオーバーラップすることを防止する請求項11乃至13のいずれかに記載のマルチコアマイコン。
  15. 前記異常診断処理の診断対象となるハードウエアは、前記マルチコアマイコンの書換え可能なメモリ(31b)であり、前記異常診断処理は、前記メモリのデータが正常に書換え可能であるかをチェックする書換えチェック処理である請求項11乃至14のいずれかに記載のマルチコアマイコン。
  16. 前記書換えチェック処理は、前記シングルプログラムで定義されているデータを保存するために利用されるメモリ領域を個別に書換え可能かチェックするものである請求項15に記載のマルチコアマイコン。
JP2018047058A 2018-03-14 2018-03-14 並列化方法、並列化ツール、及びマルチコアマイコン Active JP7139633B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018047058A JP7139633B2 (ja) 2018-03-14 2018-03-14 並列化方法、並列化ツール、及びマルチコアマイコン
DE102019202870.5A DE102019202870A1 (de) 2018-03-14 2019-03-04 Parallelisierungsverfahren, Parallelisierungswerkzeug und Multikernmikrocomputer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018047058A JP7139633B2 (ja) 2018-03-14 2018-03-14 並列化方法、並列化ツール、及びマルチコアマイコン

Publications (2)

Publication Number Publication Date
JP2019159931A true JP2019159931A (ja) 2019-09-19
JP7139633B2 JP7139633B2 (ja) 2022-09-21

Family

ID=67774725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018047058A Active JP7139633B2 (ja) 2018-03-14 2018-03-14 並列化方法、並列化ツール、及びマルチコアマイコン

Country Status (2)

Country Link
JP (1) JP7139633B2 (ja)
DE (1) DE102019202870A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181704A (zh) * 2020-09-28 2021-01-05 京东数字科技控股股份有限公司 一种大数据任务处理方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP2016192152A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2017102633A (ja) * 2015-12-01 2017-06-08 ルネサスエレクトロニクス株式会社 情報処理装置および半導体集積回路装置
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP2016192152A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2017102633A (ja) * 2015-12-01 2017-06-08 ルネサスエレクトロニクス株式会社 情報処理装置および半導体集積回路装置
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181704A (zh) * 2020-09-28 2021-01-05 京东数字科技控股股份有限公司 一种大数据任务处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
DE102019202870A1 (de) 2019-09-19
JP7139633B2 (ja) 2022-09-21

Similar Documents

Publication Publication Date Title
JP4629768B2 (ja) 並列化処理方法、システム、及びプログラム
US6405326B1 (en) Timing related bug detector method for detecting data races
US10296316B2 (en) Parallelization method, parallelization tool, and in-vehicle apparatus
JPWO2010047174A1 (ja) ソース・コード処理方法、システム、及びプログラム
JP5641233B2 (ja) 車両データ取得システム及び車両データ取得方法
JPS60175152A (ja) 浮動小数点加速プロセツサの自己試験のための方法及び装置
US20080127118A1 (en) Method and system for dynamic patching of software
JP5533789B2 (ja) 車載電子制御装置
US6854110B2 (en) System and method for obtaining scratch registers in computer executable binaries
JPH0748182B2 (ja) プログラム・エラー検出方法
CN117632570B (zh) 基于多核异构soc的多操作系统诊断方法、装置和系统
JP7139633B2 (ja) 並列化方法、並列化ツール、及びマルチコアマイコン
JP6427055B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP2014026347A (ja) 監視装置、コンピュータプログラム及び監視方法
US7779230B2 (en) Data flow execution of methods in sequential programs
JP7095513B2 (ja) マルチコアマイコン、及び車載装置
JP7204443B2 (ja) 車両制御装置およびプログラム実行方法
JP2013061783A (ja) マルチコア・プロセッサ
JP4576433B2 (ja) 情報処理装置、演算処理装置、情報処理装置の制御方法及びプログラム
Chabrol et al. A spatial and temporal partitioning approach for dependable automotive systems
JP2017224288A (ja) 並列化方法、並列化ツール、車載装置
JP2017224046A (ja) 並列化方法、並列化ツール、車載装置
JP7059776B2 (ja) 並列化方法、並列化ツール、及びマルチコアマイコン
Lambertz Software Quality is no Coincidence
CN115617318A (zh) 一种对程序进行编译优化的方法和相关产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220822

R151 Written notification of patent or utility model registration

Ref document number: 7139633

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151