JP2017073083A - 並列化方法、並列化ツール、車載装置 - Google Patents

並列化方法、並列化ツール、車載装置 Download PDF

Info

Publication number
JP2017073083A
JP2017073083A JP2015201423A JP2015201423A JP2017073083A JP 2017073083 A JP2017073083 A JP 2017073083A JP 2015201423 A JP2015201423 A JP 2015201423A JP 2015201423 A JP2015201423 A JP 2015201423A JP 2017073083 A JP2017073083 A JP 2017073083A
Authority
JP
Japan
Prior art keywords
priority
processing
program
core
execution
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
JP2015201423A
Other languages
English (en)
Other versions
JP6428557B2 (ja
Inventor
貴之 永井
Takayuki Nagai
貴之 永井
範幸 鈴木
Noriyuki Suzuki
範幸 鈴木
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 JP2015201423A priority Critical patent/JP6428557B2/ja
Priority to DE102016219449.6A priority patent/DE102016219449A1/de
Publication of JP2017073083A publication Critical patent/JP2017073083A/ja
Application granted granted Critical
Publication of JP6428557B2 publication Critical patent/JP6428557B2/ja
Active 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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
    • 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】早期に優先処理が実行されやすい並列プログラムを生成できる並列化方法、並列化ツール、車載装置を提供すること。
【解決手段】コンピュータは、各MTを第1コアと第2コアに割り振った後に、優先MTの管理番号を対象MT番号とし、この優先MTの一つ前の処理である優先前MTの管理番号を比較先MT番号とする(S20、S21)。コンピュータは、対象MT番号<比較先MT番号であるか否か、すなわち、シングルプログラムにおける実行順が優先前MTよりも優先MTの方が早いか否かを判定する(S22)。そして、コンピュータは、優先MTと優先前MTとを並び替えても依存関係が崩れないと判定した場合、対象MTと優先前MTとを入れ替える(S24、S25)。
【選択図】図9

Description

本発明は、シングルコアマイコン用のプログラムから、マルチコアマイコン用のプログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成されたマルチコアマイコン用のプログラムを実装した車載装置に関する。
従来、シングルコアマイコン用のプログラムから、マルチコアマイコン用のプログラムを生成する並列化方法の一例として特許文献1に開示された並列化コンパイル方法がある。
この並列化コンパイル方法では、シングルプロセッサシステムにより実行される組込みシステム用の逐次プログラムを複数のマクロタスク(以下、MT)に分割した後、制御依存性を有するMTを一つのMTに融合する。その後、並列化コンパイル方法では、データ依存性に基づき並列実行可能なMTを抽出するとともに、スタティックスケジューリングを行い、並列プログラムを生成する。
特開2015−1807号公報
ところで、MTの中には、実行期限が要件として規定されているMT(以下、優先処理)が含まれることも考えられる。しかしながら、シングルコアマイコン用のプログラムは、MTが逐次実行されるため、優先処理の完了が最も遅れる時間を見積る事ができ、実行期限内に優先処理が完了するか否かの判断が容易である。このため、シングルコアマイコン用のプログラムでは、MTに実行期限を示す内容が含まれていない場合がある。従って、特許文献1で生成された並列プログラムでは、優先処理の実行期限が満たされないことが起こりうる。
本発明は、上記問題点に鑑みなされたものであり、早期に優先処理が実行され、優先処理の実行期限が満たされやすい並列プログラムを生成可能にできる並列化方法、並列化ツール、車載装置を提供することを目的とする。
上記目的を達成するために本発明は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A1〜A3、B1、B2、C1、D1〜D3、E1〜E3、MT1〜MT9)から複数のコアを有するマルチコアマイコン用に並列化した並列プログラムを生成する方法であり、シングルプログラムにおける複数の処理の依存関係を解析して、複数の処理をマルチコアマイコンの異なるコア用に割り振る並列化方法であって、
複数の処理のうち実行期限の要件がある優先処理に対して、シングルプログラムにおける実行順に管理番号を付与するとともに、優先処理であることを示す優先情報を付与する付与処理手順(S10、S11)と、
各コアに割り振られる複数の処理毎に、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先処理ほど、並列プログラムにおける実行順が早くなるように配置する配置処理手順(S20〜S25、S30〜S33)と、を備えていることを特徴とする。
このように、本発明は、付与処理手順を備えているため、複数の処理における優先処理と、優先処理のシングルプログラムにおける実行順とを把握可能とすることができる。そして、本発明は、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先処理ほど、並列プログラムにおける優先処理の実行順が早くなるように配置する。このため、本発明は、早期に優先処理が実行され、優先処理の実行期限が満たされやすい並列プログラムを生成可能とすることができる。
また、本発明のさらなる特徴は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A1〜A3、B1、B2、C1、D1〜D3、E1〜E3、MT1〜MT9)から複数のコアを有するマルチコアマイコン用に並列化した並列プログラムを生成するツールであり、シングルプログラムにおける複数の処理の依存関係を解析して、複数の処理をマルチコアマイコンの異なるコア用に割り振るコンピュータを含んで構成された並列化ツールであって、
複数の処理のうち実行期限の要件がある優先処理に対して、シングルプログラムにおける実行順に管理番号を付与するとともに、優先処理であることを示す優先情報を付与する付与ステップ(S10、S11)と、
各コアに割り振られる複数の処理毎に、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先処理ほど、並列プログラムにおける実行順が早くなるように配置する配置ステップ(S20〜S25、S30〜S33)と、を有する点にある。
これによって、上記と同様に、早期に優先処理が実行され、優先処理の実行期限が満たされやすい並列プログラムを生成できる。
また、本発明のさらなる特徴は、
複数のコアを有するマルチコアマイコンと、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A1〜A3、B1、B2、C1、D1〜D3、E1〜E3、MT1〜MT9)からマルチコアマイコン用に並列化された並列プログラムとを備えた車載装置であって、
並列プログラムは、
シングルプログラムにおける複数の処理の依存関係が解析されて、複数の処理がマルチコアマイコンの異なるコア用に割り振られており、
複数の処理のうち実行期限の要件がある優先処理に対して、シングルプログラムにおける実行順に管理番号が付与され、且つ、優先処理であることを示す優先情報が付与されており、
各コアに割り振られる複数の処理毎に、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先処理ほど、並列プログラムにおける実行順が早くなるように配置されており、
マルチコアマイコンの各コアは、自身に割り振られた並列プログラムにおける複数の処理により動作する点にある。
上記のように、並列プログラムは、早期に優先処理が実行され、優先処理の実行期限が満たされやすい。このため、車載装置は、各コアが早期に優先処理を実行し、優先処理の実行期限が満たされやすくなる。
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
第1実施形態における並列化ツールの概略構成を示すブロック図である。 第1実施形態における車載装置の概略構成を示すブロック図である。 第1実施形態における並列化方法の一部を示す図面である。 第1実施形態における並列化方法の付与処理がなされたシングルプログラムを示す図面である。 第1実施形態における並列化方法の抽出処理で並び替えられたマクロタスクを示す図面である。 第1実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。 第1実施形態における並列化方法の再配置処理で各コア用に配置されたマクロタスクを示す図面である。 第1実施形態における並列化方法の付与処理を示すフローチャートである。 第1実施形態における並列化方法の再配置処理を示すフローチャートである。 第2実施形態における並列化方法の配置処理を示すフローチャートである。 第2実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。 第3実施形態における並列化方法の排除処理を示すフローチャートである。 第3実施形態における並列化方法の排除処理を経て各コア用に配置されたマクロタスクを示す図面である。 第4実施形態における車載装置の概略構成を示すブロック図である。 第4実施形態におけるシングルプログラムを示す図面である。 第4実施形態における並列化方法の付与処理がなされたシングルプログラムを示す図面である。 第4実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。 第4実施形態における並列化方法の再配置処理で各コア用に配置されたマクロタスクを示す図面である。 第5実施形態における並列化方法の配置処理で各コア用に配置されたマクロタスクを示す図面である。 第6実施形態における並列化方法の排除処理を経て各コア用に配置されたマクロタスクを示す図面である。
以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
(第1実施形態)
本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数のマクロタスクA1〜A3などから第1コア21cと第2コア21dを有するマルチコアマイコン用に並列化した並列プログラム21a1を生成する例を採用する。なお、並列プログラム21a1を生成する際には、特開2015−1807号公報に記載されているように、シングルプログラムにおける複数のマクロタスクの依存関係を解析して、複数のマクロタスクをマルチコアマイコンの異なるコア用に割り振る。この点に関しては、特開2015−1807号公報を参照されたい。なお、マイコンは、プロセッサと言い換えることもできる。
図3に示すように、シングルプログラムは、一例として、マクロタスクA1〜A3、B1、B2、C1、D1〜D3、E1〜E3を備えたものを採用する。このマクロタスクは、特許請求の範囲における処理に相当する。また、マクロタスクは、例えば図3のように、MTと略称で記載することもある。さらに、マクロタスクは、処理ブロックと言い換えることもできる。なお、シングルプログラムは、逐次プログラムとも言える。
複数のマクロタスクには、実行期限があるマクロタスクが含まれている。実行期限があるマクロタスクは、この実行期限までに実行が完了している必要がある。なお、実行期限とは、マイコンによって早期に実行する必要がある期限とも言える。実行期限が要件として規定されたマクロタスクは、特許請求の範囲における優先処理に相当する。本実施形態では、MTA3、MTC1、MTD2が優先処理である例を採用している。なお、図面においては、優先処理と、優先処理ではない通常処理とを区別するために、優先処理にハッチングを施している。また、以下においては、優先処理を優先マクロタスク(優先MT)、通常処理を通常マクロタスク(通常MT)とも称する。
ここで、コンピュータ10と、車載装置20の構成に関して説明する。コンピュータ10は、並列化方法を実行する並列化ツールに相当する。図1に示すように、コンピュータ10は、ディスプレイ11、HDD12、CPU13、ROM14、RAM15、入力装置16、読取部17などを備えて構成されている。また、コンピュータ10は、記憶媒体18に記憶された記憶内容を読み取り可能に構成されている。なお、HDDは、hard disk driveの略称である。CPUは、Central Processing Unitの略称である。ROMは、Read Only Memoryの略称である。RAMは、Random Access Memoryの略称である。コンピュータ10及び記憶媒体18の構成は、特開2015−1807号公報に記載されたパーソナルコンピュータ100及び記憶媒体180を参照されたい。
自動並列化コンパイラ1は、並列化方法に相当する。つまり、自動並列化コンパイラ1は、並列化方法を含むプログラムである。自動並列化コンパイラ1は、特開2015−1807号公報に記載されたものに加えて、付与処理手順、配置処理手順を含んでいる。付与処理手順及び配置処理手順は、後程説明する。特に、本実施形態では、配置処理手順として、再配置処理手順を含んでいると言える。
車載装置20は、図2に示すように、マルチコアプロセッサ21、ROM21a、RAM21b、第1コア21c、第2コア21d、通信部22、センサ部23、入出力ポート24を備えて構成されている。車載装置20は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。ここでは、一例として、車載装置20をエンジン制御装置に適用した例を採用する。この場合、並列プログラム21a1は、エンジン制御などの自動車制御プログラムと言える。しかしながら、並列プログラム21a1は、これに限定されない。なお、マルチコアプロセッサは、マルチコアマイコンに相当する。また、コアは、プロセッサエレメントとも称することができる。
RAM21b、通信部22、センサ部23、入出力ポート24は、特開2015−1807号公報に記載されたRAM420、通信部430、センサ部450、入出力ポート460を参照されたい。
ROM21aには、自動並列化コンパイラ1を用いて生成された並列プログラム21a1が記憶されている。第1コア21cと第2コア21dは、並列プログラム21a1を実行することで、エンジン制御を行う。
次に、図3〜図9を用いて、コンピュータ10が自動並列化コンパイラ1を実行した際の処理動作に関して説明する。
図3に示すように、シングルプログラムの実行順序は、MTA1〜MTA3、MTB1、MTB2、MTC1、MTD1〜MTD3、MTE1〜MTE3である。つまり、シングルプログラムは、この順番で実行される。コンピュータ10は、このシングルプログラムの各MT単位でデータの依存関係を解析する。依存関係とは、あるMTが、自身よりも先に実行されたMTで更新されたデータを参照する関係である。つまり、複数のMTA1〜MTE3は、実行順序が先である先行MTと、先行MTの実行が完了した後に実行させる後行MTとを含んでいる。そして、後行MTは、先行MTの影響を受けるMTであり、例えば、先行MTで内容が更新される可能性があるデータなどを用いるMTである。また、依存関係は、更新と参照の順序が逆の場合も含む。図3における矢印は、依存関係を示している。この依存関係の解析に関しては、特開2015−1807号公報を参照されたい。
コンピュータ10は、依存関係の解析が終了すると、図8のフローチャートを実行する。ステップS10では、各MTに対して管理番号を付与する(付与ステップ)。ステップS11では、優先MTに対して優先情報を付与する(付与ステップ)。つまり、コンピュータ10は、優先MTに加えて通常MTを含む全MTに対して、シングルプログラムにおける実行順に管理番号0〜11を付与するとともに、優先MTに対して優先情報を付与する。本実施形態の管理番号は、連番であり、数字が小さい方がシングルプログラムにおける実行順が早いことを示している。これによって、シングルプログラムは、図4に示すように、全MTに対して管理番号0〜11が付与され、優先MTに優先情報が付与される。各MTは、管理番号が付与されることで、例えば二つのMTにおいて、どちらのMTがシングルプログラムにおける実行順が早いかを把握可能である。また、優先MTには、優先情報が付与されることで、各MTが優先MTであるか否かを把握可能である。なお、図面では、優先情報として優と記載している。
このように、コンピュータ10は、自動並列化コンパイラ1を実行することで、付与ステップを行うことになる。よって、自動並列化コンパイラ1は、複数のMTのうち実行期限の要件がある優先MTに対して、シングルプログラムにおける実行順に管理番号を付与するとともに、優先MTであることを示す優先情報を付与する手順(付与処理手順)を含んでいると言える。また、本実施形態の自動並列化コンパイラ1は、優先MTに加えて通常MTを含む全てのMTに対して、シングルプログラムにおける実行順に管理番号を付与する手順(付与処理手順)を含んでいると言える。つまり、ステップS10、S11は、付与処理手順に相当するとも言える。
また、コンピュータ10は、シングルプログラムから並列化可能な処理を抽出する。このとき、コンピュータ10は、例えば、図5に示すように、並列化可能なMTが横に並ぶように図を並べ替える。この抽出に関しては、特開2015−1807号公報を参照されたい。本実施形態における抽出は、MTに管理番号と優先情報が付与されている点だけが特開2015−1807号公報と異なる。
そして、コンピュータ10は、依存関係と処理時間をもとに、複数のMTを第1コア21cと第2コア21dとに割り振る。つまり、コンピュータ10は、第1コア21c用に複数のMTを配置するとともに、第2コア21d用に複数のMTを配置する。これによって、シングルプログラムは、図6に示すように、全MTが第1コア21cと第2コア21dとに割り振られる。具体的には、MTA2、MTB1、MTD1、MTD3、MTE1が第1コア21c用であり、MTA1、MTA3、MTB2、MTD2、MTE2、MTE3、MTC1が第2コア21d用である。
なお、MTA2、MTB1、MTD1、MTD3、MTE1や、MTA1、MTA3、MTB2、MTD2、MTE2、MTE3、MTC1は、各コア21c、21d用に割り振られたMTの集まりであるため、MT群とも言える。以下においては、第1コア21c用に割り振られたMTA2、MTB1、MTD1、MTD3、MTE1を第1MT群、第2コア21d用に割り振られたMTA1、MTA3、MTB2、MTD2、MTE2、MTE3、MTC1を第2MT群とも称する。
この割り振りに関しては、特開2015−1807号公報を参照されたい。本実施形態における割り振りは、MTに管理番号と優先情報が付与されている点だけが特開2015−1807号公報と異なる。
図6に示すように、第1コア21cに割り振られたMTA2などと、第2コア21dに割り振られたMTA1などは、並列プログラムとして用いることができるため、仮並列プログラムとも言える。この仮並列プログラムは、特開2015−1807号公報に記載された並列化方法によって作成できる。つまり、コンピュータ10は、特開2015−1807号公報に記載された並列化方法に従って、一旦、仮並列プログラムを作成する。
しかしながら、MTC1がMTA2の後にさえ実施されれば良いため、仮並列プログラムでは、MTC1の実行順が最後になってしまう可能性がある。この場合、MTC1は、仮並列プログラムにおける実行順がシングルコアソフトにおける実行順より遅くなる。
そこで、コンピュータ10は、上記のようにMTを第1コア21cと第2コア21dに割り振った後に、図9のフローチャートを実行する。コンピュータ10は、各コア21c、21dに割り振られた複数のMT毎に、すなわち、各MT群に対して個別に図9のフローチャートを実行する。なお、コンピュータ10は、コア間の依存関係を満たしつつ、優先MTが含まれているMT群のみを対象にして図9のフローチャートを実行する。よって、本実施形態では、コンピュータ10は、優先MTが含まれていない第1MT群は対象とせず、第2MT群のみを対象に図9のフローチャートを実行する。当然ながら、第1MT群と第2MT群に優先MTが含まれていた場合、コンピュータ10は、第1MT群を対象に図9のフローチャートを実行し、且つ、第2MT群を対象に図9のフローチャートを実行する。さらに、後程説明するステップS24では、コア間の依存関係を満たすために、全MT群を対象として依存関係を維持できるか否かを判定する。
しかしながら、本発明はこれに限定されない。コンピュータ10は、MT毎に図9のフローチャートを実行するのではなく、コア間の依存関係を満たしつつ、全MTを対象に図9のフローチャートを実行してもよい。
ステップS20では、優先MTの管理番号を対象MT番号とする(配置ステップ)。コンピュータ10は、MT群から優先MTを抽出して、この優先MTの管理番号を対象MT番号とする。
ステップS21では、優先MTの一つ前の処理、すなわち優先前MTの管理番号を比較先MT番号とする(配置ステップ)。コンピュータ10は、MT群から優先MTの一つ前に配置されている優先前MTを抽出して、この優先前MTの管理番号を比較先MT番号とする。なお、優先前MTは、比較先MTと言い換えることもできる。
ステップS22では、対象MT番号<比較先MT番号であるか否かを判定する(配置ステップ)。コンピュータ10は、対象MT番号と比較先MT番号とを比較して、シングルプログラムにおける実行順が優先前MTよりも優先MTの方が早いか否かを判定する。そして、コンピュータ10は、対象MT番号<比較先MT番号であると判定した場合、シングルプログラムにおける実行順が優先前MTよりも優先MTの方が早いとみなしてステップS24へ進む。例えば、図6に示すように、今回の優先MTがMTC1の場合、コンピュータ10は、ステップS24へ進むことになる。
また、コンピュータ10は、対象MT番号<比較先MT番号であると判定しなかった場合、シングルプログラムにおける実行順が優先MTよりも優先前MTの方が早いとみなしてステップS23へ進む。なお、コンピュータ10は、シングルプログラムにおける実行順が優先MTよりも優先前MTの方が早いとみなした場合、MT群における優先MTの位置を変更することなく、ステップS23へ進む。例えば、図6に示すように、今回の優先MTがMTA3やMTD2の場合、コンピュータ10は、ステップS23へ進むことになる。よって、MTA3とMTD2のMT群における位置は、図6と図7に示すように変更されない。さらに、コンピュータ10は、図7に示すように、MTC1が並び替えられて再配置された場合、ステップS22でNO判定し、ステップS23へ進むことになる。この並び替えに関しては、後程ステップS24、S25で説明する。
ステップS23では、全優先MTで再配置が完了したか否かを判定する(配置ステップ)。コンピュータ10は、全ての優先MTを対象としてステップS22でNO判定した場合に全優先MTで再配置が完了したとみなして図9のフローチャートを終了する。また、コンピュータ10は、ステップS22でNO判定していない優先MTがある場合、全優先MTで再配置が完了していないとみなしてステップS20へ戻る。
ステップS24では、依存関係を維持できるか否かを判定する(配置ステップ)。コンピュータ10は、今回の優先MTと優先前MTとを並び替えても依存関係が崩れないと判定した場合、ステップS25へ進む。また、コンピュータ10は、今回の優先MTと優先前MTとを並び替えると依存関係が崩れると判定した場合、ステップS23へ進む。例えば、今回の優先MTがMTC1で、且つ、MTC1の位置が図6のMTE3の直後やMTE2の直後やMTD2の直後であった場合、コンピュータ10は、ステップS25へ進むことになる。
ステップS25では、対象MTと優先前MTと入れ替える(配置ステップ)。コンピュータ10は、対象MTと優先前MTとを並び替えて配置する。今回の優先MTがMTC1であった場合、コンピュータ10は、ステップS21、S22、S24、S25を繰り返し実行することになるため、MTC1とMTE3を並び替え、その後、MTC1とMTE2を並び替え、その後、MTC1とMTD2を並び替える。この結果、コンピュータ10は、MTC1を図6に示す位置から図7に示す位置に再配置する。このように再配置した場合、コンピュータ10は、ステップS22でNO判定することになる。
このようにして、コンピュータ10は、並列プログラム21a1を作成する。つまり、コンピュータ10は、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先MTほど、並列プログラム21a1における実行順が早くなるように配置する。この並列プログラム21a1は、全ての優先MTに関して、シングルプログラムのときよりも実行順が早くなっている。なお、図7に示すように、MTA2、MTB1、MTD1、MTD3、MTE1の実行順で配置されたMT群は、第1コア21c用のプログラムである。一方、MTA1、MTA3、MTB2、MTC1、MTD2、MTE2、MTE3の実行順で配置されたMT群は、第2コア21d用のプログラムである。
また、コンピュータ10は、自動並列化コンパイラ1を実行することで、配置ステップを行うことになる。よって、自動並列化コンパイラ1は、優先MTに付与された管理番号と、優先MTの一つ前に配置された通常MTに付与された管理番号とを比較する手順(配置処理手順)を含んでいる。さらに、自動並列化コンパイラ1は、シングルプログラムの実行順が通常MTよりも優先MTの方が先であり、且つ、通常MTと優先MTの処理順を入れ替えても依存関係が崩れない場合に、通常MTと優先MTとを並び替える手順(配置処理手順)とを含んでいる。つまり、ステップS20〜S25は、配置処理手順に相当するとも言える。
以上のように、自動並列化コンパイラ1は、付与処理手順を備えているため、複数のMTにおける優先MTと、優先MTのシングルプログラムにおける実行順とを把握可能とすることができる。そして、自動並列化コンパイラ1は、管理番号と優先情報とに基づき、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先MTほど、並列プログラム21a1における優先MTの実行順が早くなるように配置する手順を含んでいる。このため、自動並列化コンパイラ1は、早期に優先MTが実行されやすい並列プログラム21a1を生成可能とすることができる。従って、自動並列化コンパイラ1は、シングルコアソフトのときよりも優先MTの実行順を遅らせない事ができ、優先MTの実行期限が満たされやすい並列プログラム21a1を生成可能とすることができる。
また、コンピュータ10は、自動並列化コンパイラ1を実行するため、早期に優先MTが実行され、優先MTの実行期限が満たされやすい並列プログラム21a1を生成できる。従って、コンピュータ10は、実行期限の要件を満たしやすい並列プログラム21a1を生成できる。
さらに、自動並列化コンパイラ1は、上記のように、優先MTの管理番号と、一つ前に配置されたMTの管理番号とを比較して、MTと優先MTとを並び替える手順とを含んでいるため、容易に依存関係を満たしつつ並び変えを可能とすることができる。また、コンピュータ10は、容易に並列プログラム21a1を生成できる。
なお、自動並列化コンパイラ1は、MT群毎に、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先MTほど、並列プログラム21a1における実行順が早くなるように並び変えて配置する手順を含んでいれば採用できる。同様に、コンピュータ10は、MT群毎に、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先MTほど、並列プログラム21a1における実行順が早くなるように並び変えて配置するものであれば採用できる。そして、車載装置20は、MT群毎に、依存関係を満たしつつ、シングルプログラムにおける実行順が早い優先MTほど、並列プログラム21a1における実行順が早くなるように並び変えて配置された並列プログラムを備えていれば採用できる。
また、上記のように、車載装置20のROM21aには、自動並列化コンパイラ1を用いて生成された並列プログラム21a1、言い換えると、コンピュータ10によって生成された並列プログラム21a1が記憶されている。そして、車載装置20は、第1コア21cが並列プログラム21a1における第1コア21c用のプログラムを実行し、第2コア21dが並列プログラム21a1における第2コア21d用のプログラムを実行することで、エンジン制御を行う。このため、車載装置20は、各コア21c、21dが早期に優先MTを実行しやすく、優先MTの実行期限を満たしやすい。
なお、組み込みソフトウェアでは、処理の応答性を向上させるために、可能な限り処理を実装しないようにするため、優先MTに実行要件が付与されていないことが考えられる。このような場合、特開2015−1807号公報に記載された並列化方法で生成された並列プログラムは、優先MTの実行期限が見せない可能性がある。しかしながら、自動並列化コンパイラ1、コンピュータ10、車載装置20は、上記のように優れた効果を奏することができる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明のその他の形態として、第2〜第6実施形態に関して説明する。上記実施形態及び第2〜第6実施形態は、夫々単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本発明は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
(第2実施形態)
本実施形態の自動並列化コンパイラ1は、仮並列プログラムを作成することなく並列プログラム21a1を生成する手順を含んでいる点が第1実施形態と異なる。同様に、本実施形態のコンピュータ10は、仮並列プログラムを作成することなく並列プログラム21a1を生成する点が第1実施形態と異なる。そして、本実施形態の車載装置20は、仮並列プログラムを作成することなく生成された並列プログラム21a1が搭載されている点が第1実施形態と異なる。なお、本実施形態では、便宜的に、第1実施形態と同じ符号を採用する。また、以下の実施形態に関しても、便宜的に、第1実施形態と同じ符号を採用する。
なお、本実施形態の自動並列化コンパイラ1は、少なくとも優先MTに対して、シングルプログラムにおける実行順に管理番号を付与する手順(付与処理手順)を含んでいる。よって、本実施形態のコンピュータ10は、少なくとも優先MTに対して、シングルプログラムにおける実行順に管理番号を付与する(付与ステップ)。また、本実施形態の車載装置20は、少なくとも優先MTに対して、シングルプログラムにおける実行順に管理番号が付与された並列プログラム21a1を備えている。
本実施形態のコンピュータ10は、図5を用いて説明したように、並列化可能な処理を抽出して並列化可能なMTが横に並ぶように図を並べ替えた後、図10のフローチャートを実行する。つまり、本実施形態のコンピュータ10は、図6を用いて説明した仮並列プログラムの生成は行なわない。本実施形態のコンピュータ10は、図10のフローチャートを実行することで、仮並列プログラムを作成することなく並列プログラム21a1を生成する。
ステップS30では、未配置の優先MTで最も管理番号が小さい優先MTを対象優先MTとして選択する(配置ステップ)。本実施形態のコンピュータ10は、各コア21c、21d用のプログラムとして配置されていない優先MTのなかで、最も管理番号が小さい優先MTを対象優先MTとして選択する。なお、本実施形態のコンピュータ10は、未配置の優先MTがなかった場合、ステップS31に進むことなく、ステップS34へ進む。
ステップS31では、現在の最上位に配置した場合に依存関係を維持できるか否かを判定する。(配置ステップ)。現在の最上位とは、各コア21c、21d用のプログラムにおいて、MTが配置されておらず、実行順が最も早くなる位置である。そして、本実施形態のコンピュータ10は、対象優先MTを現在の最上位に配置した場合に、依存関係を維持できると判定した場合、すなわち、依存関係が崩れないと判定した場合、ステップS32へ進む。また、本実施形態のコンピュータ10は、依存関係を維持できると判定しなかった場合、ステップS34へ進む。
ステップS32では、本実施形態のコンピュータ10は、対象優先MTを現時点での最上位に配置する(配置ステップ)。そして、ステップS33では、本実施形態のコンピュータ10は、全MTで配置が完了したか否かを判定する(配置ステップ)。そして、本実施形態のコンピュータ10は、全MTで配置が完了したと判定しなかった場合はステップS30へ戻り、全MTで配置が完了したと判定した場合は図10のフローチャートを終了する。
ステップS34では、本実施形態のコンピュータ10は、特開2015−1807号公報に記載された方法でMTを配置する。
このように、本実施形態のコンピュータ10は、優先MTと通常MTを、依存関係を満たすように各コア21c、21dに割り振りつつ、シングルプログラムにおける実行順が早い優先MTほど、並列プログラム21a1における実行順が早くなるように配置する。これによって、本実施形態のコンピュータ10は、図11に示すような並列プログラム21a1を作成できる。この並列プログラム21a1は、図7の仮並列プログラムとMTの実行順が異なる。第2コア21d用のプログラムでは、MTC1とMTB2の実行順が逆になっている。また、この並列プログラム21a1は、図6に示す仮並列プログラムよりもMTC1の実行順を早くすることができる。なお、第1コア21c用のプログラムでは、MTD11とMTD3の間に完了待ちW1が発生することになる。これは、MTD3がMTB2と依存関係にあるためである。完了待ちは、待ち処理や待合せ処理と言い換えることができる。
さらに、自動並列化コンパイラ1は、優先MTと通常MTを、依存関係を満たすように各コア21c、21dに割り振りつつ、シングルプログラムでの実行順が早い優先MTほど、並列プログラム21a1での実行順が早くなるように配置する手順を含んでいる。よって、ステップS30〜S33は、配置処理手順に相当するとも言える。また、本実施形態の自動並列化コンパイラ1は、配置処理手順を含んでいると言える。従って、本実施形態の車載装置20は、上記のように生成された並列プログラム21a1を備えていると言える。
本実施形態のコンピュータ10は、第1実施形態のコンピュータ10と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ1は、第1実施形態の自動並列化コンパイラ1と同様の効果を奏することができる。さらに、本実施形態の車載装置20は、第1実施形態の車載装置20と同様の効果を奏することができる。
なお、ステップS34では、依存関係を満たすように、通常処理を配置してもよい(配置ステップ)。例えば、ステップS34では、未配置の通常MTで最も管理番号が小さい通常MTを対象通常MTとして選択し、選択した対象通常MTを現時点での最上位に配置する(配置ステップ)。よって、本実施形態の自動並列化コンパイラ1は、優先MTを配置することで依存関係が崩れる場合、依存関係を満たすように、通常MTを配置する手順(配置処理手順)を含んでいると言える。また、本実施形態の車載装置20は、優先MTを配置することで依存関係が崩れる場合、依存関係を満たすように、通常MTが配置された並列プログラム21a1を備えていると言える。
この場合、本実施形態の自動並列化コンパイラ1は、優先MTと通常MTに対して、すなわち全てのMTに対して、シングルプログラムにおける実行順に管理番号を付与する手順(付与処理手順)を含んでいる。よって、本実施形態のコンピュータ10は、全てのMTに対して、シングルプログラムにおける実行順に管理番号を付与する(付与ステップ)。また、本実施形態の車載装置20は、全てのMTに対して、シングルプログラムにおける実行順に管理番号を付与された並列プログラム21a1を備えている。
(第3実施形態)
図4などに示すように、MTD3は、MTB2と依存関係がある。このため、第1コア21cは、図11に示す第1コア21c用のプログラムを実行すると、MTD1を実行した後に、第2コア21dがMTB2の実行を完了するのを待つ完了待ちW1が発生する。
そこで、本実施形態の自動並列化コンパイラ1は、完了待ちW1を低減する手順を含んでいる。同様に、本実施形態のコンピュータ10は、完了待ちW1を低減できる並列プログラム21a1を生成するステップを含んでいる。そして、本実施形態の車載装置20は、自動並列化コンパイラ1における並列化方法で生成された並列プログラム21a1、言い換えると、本実施形態のコンピュータ10によって生成された並列プログラム21a1を備えている。本実施形態は、これらの点が第2実施形態と異なる。
なお、本実施形態の自動並列化コンパイラ1は、優先MTを含む全てのMTに対して、シングルプログラムにおける実行順に管理番号を付与する手順(付与処理手順)を含んでいる。よって、本実施形態のコンピュータ10は、優先MTを含む全てのMTに対して、シングルプログラムにおける実行順に管理番号を付与する(付与ステップ)。また、本実施形態の車載装置20は、優先MTを含む全てのMTに対して、シングルプログラムにおける実行順に管理番号が付与された並列プログラム21a1を備えている。
本実施形態のコンピュータ10は、自動並列化コンパイラ1を実行することで、第2実施形態で説明したように並列プログラム21a1を生成した後に、図12のフローチャートを実行する。
ステップS40では、完了待ちW1があるか否かを判定する(低減ステップ)。本実施形態のコンピュータ10は、作成した並列プログラム21a1に完了待ちW1が発生するか否かを判定する。詳述すると、本実施形態のコンピュータ10は、一つのコアにおいて、他のコアにおけるMTの実行が完了したことを待つ完了待ちW1が発生するか否かを判定する。そして、本実施形態のコンピュータ10は、完了待ちW1が発生すると判定した場合、ステップS41へ進み、発生すると判定しなかった場合、図12のフローチャートを終了する。図11に示す並列プログラム21a1の場合、本実施形態のコンピュータ10は、第1コア21cにおいて、第2コア21dにおけるMTB2が完了したことを待つ完了待ちW1が発生すると判定してステップS41へ進む。
ステップS41では、要因MTの管理番号を対象MT番号とする(低減ステップ)。要因MTとは、完了待ちW1の要因となるMTである。本実施形態のコンピュータ10は、MT群から要因MTを抽出して、この要因MTの管理番号を対象MT番号とする。図11に示す並列プログラム21a1の場合、本実施形態のコンピュータ10は、MTB2を要因MTとして抽出し、MTB2の管理番号4を対象MT番号とする。
ステップS42では、要因MTの一つ前の処理、すなわち要因前MTの管理番号を比較先MT番号とする(低減ステップ)。本実施形態のコンピュータ10は、MT群から要因MTの一つ前に配置されている要因前MTを抽出して、この要因前MTの管理番号を比較先MT番号とする。図11に示す並列プログラム21a1の場合、本実施形態のコンピュータ10は、MTC1を要因前MTとして抽出し、MTC1の管理番号5を比較先MT番号とする。
なお、ここでの対象MT番号は、第1実施形態における対象MT番号と区別するために、要因MT番号と称することもできる。同様に、ここでの比較先MT番号は、第1実施形態における比較先MT番号と区別するために、要因前MT番号と称することもできる。
ステップS43では、対象MT番号<比較先M番号であるか否かを判定する(低減ステップ)。本実施形態のコンピュータ10は、対象MT番号と比較先MT番号とを比較して、シングルプログラムにおける実行順が要因前MTよりも要因MTの方が早いか否かを判定する。そして、本実施形態のコンピュータ10は、対象MT番号<比較先M番号であると判定した場合、シングルプログラムにおける実行順が要因前MTよりも要因MTの方が早いとみなしてステップS44へ進む。図11に示すように、今回の要因MTがMTB2の場合、本実施形態のコンピュータ10は、ステップS44へ進むことになる。
また、本実施形態のコンピュータ10は、対象MT番号<比較先M番号であると判定しなかった場合、シングルプログラムにおける実行順が要因MTよりも要因前MTの方が早いとみなしてステップS40へ戻る。なお、本実施形態のコンピュータ10は、シングルプログラムにおける実行順が要因MTよりも要因前MTの方が早いとみなした場合、MT群における要因MTの位置を変更することなく、ステップS40へ戻る。
ステップS44では、要因MTと要因前MTとを並び替えても依存関係を維持できるか否かを判定する(低減ステップ)。本実施形態のコンピュータ10は、要因MTと要因前MTとを並び替えても依存関係が崩れないと判定した場合、ステップS45へ進む。また、本実施形態のコンピュータ10は、要因MTと要因前MTとを並び替えると依存関係が崩れると判定した場合、ステップS40へ戻る。
ステップS45では、要因MTと要因前MTと入れ替える(低減ステップ)。本実施形態のコンピュータ10は、要因MTと要因前MTとを並び替えて配置する。要因MTがMTB2であった場合、本実施形態のコンピュータ10は、ステップS45を実行することになるため、MTB2とMTC1を並び替える。この結果、本実施形態のコンピュータ10は、MTB2を図11に示す位置から図13に示す位置に再配置する。
ステップS46では、全ての要因MTに対して再配置が完了したか否かを判定する(低減ステップ)。本実施形態のコンピュータ10は、全ての要因MTに対して再配置が完了したと判定した場合、図12のフローチャートを終了する。また、本実施形態のコンピュータ10は、全ての要因MTに対して再配置が完了したと判定しなかった場合、ステップS40へ戻る。
このようにして、本実施形態のコンピュータ10は、並列プログラム21a1を作成する。つまり、本実施形態のコンピュータ10は、図13に示すような、完了待ちW1を削除した並列プログラム21a1を作成する。
また、本実施形態のコンピュータ10は、自動並列化コンパイラ1を実行することで、低減ステップを行うことになる。よって、自動並列化コンパイラ1は、完了待ちW1が発生する場合、要因MTに付与された管理番号と、要因前MTに付与された管理番号とを比較する手順を含んでいる。さらに、自動並列化コンパイラ1は、シングルプログラムにおける実行順が要因前MTよりも要因MTの方が先であり、且つ、要因前MTと要因MTの実行順を入れ替えても依存関係が崩れない場合に、要因MTと要因前MTとを並び替える手順を含んでいる。この手順は、完了待ちW1を減らすためである。このように、ステップS40〜S46は、低減処理手順に相当するとも言える。また、自動並列化コンパイラ1は、低減処理手順を含んでいると言える。従って、本実施形態の車載装置20は、上記のように生成された並列プログラム21a1を備えていると言える。
本実施形態のコンピュータ10は、第2実施形態のコンピュータ10と同様の効果を奏することができ、且つ、第2実施形態のコンピュータ10で生成された並列プログラム21a1よりも完了待ちW1を減らすことができる。
本実施形態の自動並列化コンパイラ1は、第2実施形態の自動並列化コンパイラ1と同様の効果を奏することができる。さらに、本実施形態の自動並列化コンパイラ1は、第2実施形態のコンピュータ10で生成された並列プログラム21a1よりも完了待ちW1が少ない並列プログラム21a1を作成可能とすることができる。
本実施形態の車載装置20は、第2実施形態の車載装置20と同様の効果を奏することができる。さらに、本実施形態の車載装置20は、第2実施形態の車載装置20よりも各コア21c、21dが並列プログラム21a1を実行した際の完了待ちW1を減らすことができる。
(第4実施形態)
本実施形態では、車両のブレーキシステム制御装置に車載装置20を適用した例を採用する。よって、シングルプログラムは、ブレーキシステムのプログラムである。また、本実施形態の自動並列化コンパイラ1は、第1実施形態と同様に、仮並列プログラムを作成してから並列プログラム21a1を生成する手順を含む。このため、本実施形態のコンピュータ10は、仮並列プログラムを作成してから並列プログラム21a1を生成する。
図14に示すように、本実施形態の車載装置20の構成は、第1実施形態と同様である。本実施形態の車載装置20は、センサ部23が少なくともブレーキペダルセンサから出力されたセンサ値を取得する点、及びRAM21bにブレーキペダルのセンサ値が記憶されている点が第1実施形態と異なる。また、本実施形態の車載装置20は、入出力ポート24を介して、ブレーキ機構に対して駆動信号を出力する点、エンジン機構に点火信号などの車両駆動信号を出力する点、及び、エンジン機構に緊急停止信号を出力する点が異なる。緊急停止信号は、車両を停止させるための信号であり、車両駆動信号を全て破棄させる。
シングルプログラムは、図15に示すように、MT1〜MT9を含んで構成されている。各MT1〜MT9の依存関係は、図15の矢印で示す通りである。
MT1のブレーキペダルセンサ入力部は、ユーザのペダル踏込量に応じて変化するセンサ出力電圧をAD変換して、センサ値としてRAM21bに格納する処理である。
MT2のブレーキペダル故障判定部とMT3の緊急停止制御部は、センサ値を元に、ブレーキペダルの故障を判定し、故障が発生した時に、通常制御を無視して車両を緊急停止させるための制御を実施する処理である。なお、もしも故障が発生した際には、緊急停止制御部MT3の実行まで速やかに完了しなければならない。よって、MT1〜MT3の夫々には、実行期限DL1の要件がある。
MT4の故障発生時のデータ記憶部とMT5の故障表示部(対ユーザ)は、故障発生時の各種データを記憶し、通常とは異なる車両制御である事、及びブレーキペダルが故障となっている事をユーザに通知するための表示を行う処理である。なお、記憶した各種データは、他車載装置との連携制御や故障解析に用いる。また、表示が遅すぎるとユーザの混乱を招くため、MT5は、実行期限DL2の要件がある。
MT6のブレーキペダル操作推定部とMT7の目標車速算出部とMT8のブレーキ駆動部は、センサ値を元にユーザのブレーキ操作を推定して、ユーザが求めている目標車速を算出し、その算出値に基づきブレーキを駆動させる処理である。ただし、ペダル故障時には、センサ値とユーザ操作に大きな乖離が発生している可能性がある。このため、ペダル故障時には、目標車速の値を規定値に置き換える。なお、推定するブレーキ操作は、踏込量や踏むスピードなどである。
MT9のデータ送信部は、他車載装置との連携制御を行うために、ブレーキの駆動状態や、故障発生時のデータを送信する処理である。
本実施形態のコンピュータ10は、第1実施形態と同様に、各MT1〜MT9に対して依存関係の解析を行い、その後、付与ステップを行う。これによって、図16に示すように、MT1〜MT9の夫々には、管理番号と優先情報が付与される。
その後、本実施形態のコンピュータ10は、第1実施形態と同様に、仮並列プログラムを生成する。これによって、本実施形態のコンピュータ10は、図17に示すような仮並列プログラムを生成することになる。図17に示すように、MT1、MT2は、実行期限DL1を満たしている。また、MT5は、実行期限DL2を満たしている。しかしながら、MT3は、実行期限D1を満たせていない。
しかしながら、本実施形態のコンピュータ10は、第1実施形態と同様に、図9のフローチャートを実行する。これによって、本実施形態のコンピュータ10は、図18に示すような並列プログラム21a1を生成することになる。つまり、本実施形態のコンピュータ10は、MT3を並び替えて配置することで、MT3の実行順がMT4、MT5よりも早い並列プログラム21a1を生成できる。これによって、MT3は、実行期限D1を満たしている。このように、本実施形態のコンピュータ10は、MT1〜MT3が実行期限D1を満たせ、且つ、MT5が実行期限DL2を満たせる並列プログラム21a1を生成できる。なお、この並列プログラム21a1では、完了待ちW2が発生する。
本実施形態のコンピュータ10は、第1実施形態のコンピュータ10と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ1は、第1実施形態の自動並列化コンパイラ1と同様の効果を奏することができる。さらに、本実施形態の車載装置20は、第1実施形態の車載装置20と同様の効果を奏することができる。
(第5実施形態)
本実施形態では、第4実施形態と同様に、車両のブレーキシステム制御装置に車載装置20を適用した例を採用する。よって、シングルプログラムは、第4実施形態のものと同様である。また、本実施形態の自動並列化コンパイラ1は、第2実施形態と同様に、並列プログラム21a1を生成する手順を含む。このため、本実施形態のコンピュータ10は、仮並列プログラムを作成することなく並列プログラム21a1を生成する。
つまり、本実施形態のコンピュータ10は、第2実施形態と同様に、図10のフローチャートを実行する。これによって、本実施形態のコンピュータ10は、図19に示すような並列プログラム21a1を生成することになる。図19に示すように、本実施形態のコンピュータ10は、MT1〜MT3が実行期限D1を満たせ、且つ、MT5が実行期限DL2を満たせる並列プログラム21a1を生成できる。なお、この並列プログラム21a1では、完了待ちW3〜W5が発生する。
本実施形態のコンピュータ10は、第2実施形態のコンピュータ10と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ1は、第2実施形態の自動並列化コンパイラ1と同様の効果を奏することができる。さらに、本実施形態の車載装置20は、第2実施形態の車載装置20と同様の効果を奏することができる。
(第6実施形態)
本実施形態では、第4実施形態と同様に、車両のブレーキシステム制御装置に車載装置20を適用した例を採用する。よって、シングルプログラムは、第4実施形態のものと同様である。また、本実施形態の自動並列化コンパイラ1は、第3実施形態と同様に、第5実施形態で生成された並列プログラム21a1で発生する完了待ちW5を低減する手順を含んでいる。よって、本実施形態のコンピュータ10は、第3実施形態と同様に、第5実施形態で生成された並列プログラム21a1で発生する完了待ちを低減できる並列プログラム21a1を生成する。そして、本実施形態の車載装置20は、このような並列プログラム21a1が搭載されている。
本実施形態のコンピュータ10は、第3実施形態と同様に、図12のフローチャートを実行する。これによって、本実施形態のコンピュータ10は、図20に示すように、第5実施形態での並列プログラム21a1に対してMT4とMT5を並び替えることになる。このため、本実施形態のコンピュータ10は、第5実施形態での並列プログラム21a1における完了待ちW5を削除できる。従って、本実施形態のコンピュータ10は、図20に示すような並列プログラム21a1を生成することになる。
本実施形態のコンピュータ10は、第3実施形態のコンピュータ10と同様の効果を奏することができる。また、本実施形態の自動並列化コンパイラ1は、第3実施形態の自動並列化コンパイラ1と同様の効果を奏することができる。さらに、本実施形態の車載装置20は、第3実施形態の車載装置20と同様の効果を奏することができる。
1 自動並列化コンパイラ、10 コンピュータ、11 ディスプレイ、12 HDD、13 CPU、14 ROM、15 RAM、16 入力装置、17 読取部、18 記憶媒体、20 車載装置、21 マルチコアプロセッサ、21a ROM、21a1 並列プログラム、21b RAM、21c 第1コア、21d 第2コア、22 通信部、23 センサ部、24 入出力ポート

Claims (18)

  1. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A1〜A3、B1、B2、C1、D1〜D3、E1〜E3、MT1〜MT9)から複数の前記コアを有するマルチコアマイコン用に並列化した並列プログラムを生成する方法であり、前記シングルプログラムにおける複数の前記処理の依存関係を解析して、複数の前記処理を前記マルチコアマイコンの異なる前記コア用に割り振る並列化方法であって、
    複数の前記処理のうち実行期限の要件がある優先処理に対して、前記シングルプログラムにおける実行順に管理番号を付与するとともに、前記優先処理であることを示す優先情報を付与する付与処理手順(S10、S11)と、
    各コアに割り振られる複数の前記処理毎に、前記管理番号と前記優先情報とに基づき、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置する配置処理手順(S20〜S25、S30〜S33)と、を備えていることを特徴とする並列化方法。
  2. 前記付与処理手順では、全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与し、
    前記配置処理手順(S20〜S25)は、各コアに割り振られた複数の前記処理毎に、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように並び変えて配置する手順を含んでいることを特徴とする請求項1に記載の並列化方法。
  3. 前記配置処理手順(S20〜S25)では、前記優先処理に付与された前記管理番号と、前記優先処理の一つ前に配置された前記処理である優先前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記優先前処理よりも前記優先処理の方が先であり、且つ、前記優先前処理と前記優先処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記優先前処理と前記優先処理とを並び替える手順を含んでいることを特徴とする請求項2に記載の並列化方法。
  4. 前記配置処理手順(S30〜S33)では、前記優先処理と前記優先処理ではない通常処理とを、前記依存関係を満たすように各コアに割り振りつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置する手順を含んでいることを特徴とする請求項1に記載の並列化方法。
  5. 前記配置処理手順では、前記優先処理を配置することで前記依存関係が崩れる場合、前記依存関係を満たすように、前記通常処理を配置する手順を含んでいることを特徴とする請求項4に記載の並列化方法。
  6. 前記付与処理手順では、前記優先処理を含む全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与する手順を含んでおり、
    一つの前記コアにおいて、他の前記コアにおける前記処理の実行が完了したことを待つ完了待ちが発生する場合、前記完了待ちの要因となる前記処理である要因処理に付与された前記管理番号と、前記要因処理の一つ前に配置された前記処理である要因前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記要因前処理よりも前記要因処理の方が先であり、且つ、前記要因前処理と前記要因処理の実行順を入れ替えても前記依存関係が崩れない場合に、前記完了待ちを減らすために前記要因前処理と前記要因処理とを並び替える低減処理手順を備えていることを特徴とする請求項5に記載の並列化方法。
  7. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A1〜A3、B1、B2、C1、D1〜D3、E1〜E3、MT1〜MT9)から複数の前記コアを有するマルチコアマイコン用に並列化した並列プログラムを生成するツールであり、前記シングルプログラムにおける複数の前記処理の依存関係を解析して、複数の前記処理を前記マルチコアマイコンの異なる前記コア用に割り振るコンピュータを含んで構成された並列化ツールであって、
    複数の前記処理のうち実行期限の要件がある優先処理に対して、前記シングルプログラムにおける実行順に管理番号を付与するとともに、前記優先処理であることを示す優先情報を付与する付与ステップ(S10、S11)と、
    各コアに割り振られる複数の前記処理毎に、前記管理番号と前記優先情報とに基づき、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置する配置ステップ(S20〜S25、S30〜S33)と、を備えていることを特徴とする並列化ツール。
  8. 前記付与ステップでは、全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与し、
    前記配置ステップ(S20〜S25)は、各コアに割り振られた複数の前記処理毎に、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように並び変えて配置することを特徴とする請求項7に記載の並列化ツール。
  9. 前記配置ステップ(S20〜S25)では、前記優先処理に付与された前記管理番号と、前記優先処理の一つ前に配置された前記処理である優先前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記優先前処理よりも前記優先処理の方が先であり、且つ、前記優先前処理と前記優先処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記優先前処理と前記優先処理とを並び替えることを特徴とする請求項8に記載の並列化ツール。
  10. 前記配置ステップ(S30〜S33)では、前記優先処理と前記優先処理ではない通常処理とを、前記依存関係を満たすように各コアに割り振りつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置することを特徴とする請求項7に記載の並列化ツール。
  11. 前記配置ステップでは、前記優先処理を配置することで前記依存関係が崩れる場合、前記依存関係を満たすように、前記通常処理を配置することを特徴とする請求項10に記載の並列化ツール。
  12. 前記付与ステップでは、前記優先処理を含む全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号を付与し、
    一つの前記コアにおいて、他の前記コアにおける前記処理の実行が完了したことを待つ完了待ちが発生する場合、前記完了待ちの要因となる前記処理である要因処理に付与された前記管理番号と、前記要因処理の一つ前に配置された前記処理である要因前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記要因前処理よりも前記要因処理の方が先であり、且つ、前記要因前処理と前記要因処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記完了待ちを減らすために前記要因前処理と前記要因処理とを並び替える低減ステップを備えていることを特徴とする請求項11に記載の並列化ツール。
  13. 複数のコアを有するマルチコアマイコンと、前記コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A1〜A3、B1、B2、C1、D1〜D3、E1〜E3、MT1〜MT9)から前記マルチコアマイコン用に並列化された並列プログラムとを備えた車載装置であって、
    前記並列プログラムは、
    前記シングルプログラムにおける複数の前記処理の依存関係が解析されて、複数の前記処理が前記マルチコアマイコンの異なる前記コア用に割り振られており、
    複数の前記処理のうち実行期限の要件がある優先処理に対して、前記シングルプログラムにおける実行順に管理番号が付与され、且つ、前記優先処理であることを示す優先情報が付与されており、
    各コアに割り振られる複数の前記処理毎に、前記管理番号と前記優先情報とに基づき、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置されており、
    前記マルチコアマイコンの各コアは、自身に割り振られた前記並列プログラムにおける複数の前記処理により動作することを特徴とする車載装置。
  14. 前記並列プログラムは、
    全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号が付与されており、
    各コアに割り振られた複数の前記処理毎に、前記依存関係を満たしつつ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように並び変えて配置されていることを特徴とする請求項13に記載の車載装置。
  15. 前記並列プログラムは、
    前記優先処理に付与された前記管理番号と、前記優先処理の一つ前に配置された前記処理である優先前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記優先前処理よりも前記優先処理の方が先であり、且つ、前記優先前処理と前記優先処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記優先前処理と前記優先処理とが並び替えられていることを特徴とする請求項14に記載の車載装置。
  16. 前記並列プログラムは、前記優先処理と前記優先処理ではない通常処理とが、前記依存関係を満たすように各コアに割り振られ、前記シングルプログラムにおける実行順が早い前記優先処理ほど、前記並列プログラムにおける実行順が早くなるように配置されていることを特徴とする請求項13に記載の車載装置。
  17. 前記並列プログラムは、前記優先処理を配置することで前記依存関係が崩れる場合、前記依存関係を満たすように、前記通常処理が配置されていることを特徴とする請求項16に記載の車載装置。
  18. 前記並列プログラムは、
    前記優先処理を含む全ての前記処理に対して、前記シングルプログラムにおける実行順に前記管理番号が付与され、
    一つの前記コアにおいて、他の前記コアにおける前記処理の実行が完了したことを待つ完了待ちが発生する場合、前記完了待ちの要因となる前記処理である要因処理に付与された前記管理番号と、前記要因処理の一つ前に配置された前記処理である要因前処理に付与された前記管理番号とを比較し、前記シングルプログラムにおける実行順が前記要因前処理よりも前記要因処理の方が先であり、且つ、前記要因前処理と前記要因処理の処理順を入れ替えても前記依存関係が崩れない場合に、前記完了待ちを減らすために前記要因前処理と前記要因処理とが並び替えられていることを特徴とする請求項17に記載の車載装置。
JP2015201423A 2015-10-09 2015-10-09 並列化方法、並列化ツール Active JP6428557B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015201423A JP6428557B2 (ja) 2015-10-09 2015-10-09 並列化方法、並列化ツール
DE102016219449.6A DE102016219449A1 (de) 2015-10-09 2016-10-07 Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015201423A JP6428557B2 (ja) 2015-10-09 2015-10-09 並列化方法、並列化ツール

Publications (2)

Publication Number Publication Date
JP2017073083A true JP2017073083A (ja) 2017-04-13
JP6428557B2 JP6428557B2 (ja) 2018-11-28

Family

ID=58405388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015201423A Active JP6428557B2 (ja) 2015-10-09 2015-10-09 並列化方法、並列化ツール

Country Status (2)

Country Link
JP (1) JP6428557B2 (ja)
DE (1) DE102016219449A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021012601A (ja) * 2019-07-08 2021-02-04 株式会社デンソー 並列化方法、半導体制御装置、車載制御装置
CN115220990A (zh) * 2021-12-09 2022-10-21 广州汽车集团股份有限公司 一种多核系统程序流监测方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0380337A (ja) * 1989-04-28 1991-04-05 Hitachi Ltd 並列化装置
JP2010244332A (ja) * 2009-04-07 2010-10-28 Nec Corp マルチコアシステムのためのタスク割り当て手段、その方法及びそのプログラム
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP2014225137A (ja) * 2013-05-16 2014-12-04 株式会社デンソー タスクスケジューラ,マイクロプロセッサ及びタスクスケジューリング方法
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0380337A (ja) * 1989-04-28 1991-04-05 Hitachi Ltd 並列化装置
JP2010244332A (ja) * 2009-04-07 2010-10-28 Nec Corp マルチコアシステムのためのタスク割り当て手段、その方法及びそのプログラム
WO2011104823A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP2014225137A (ja) * 2013-05-16 2014-12-04 株式会社デンソー タスクスケジューラ,マイクロプロセッサ及びタスクスケジューリング方法
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021012601A (ja) * 2019-07-08 2021-02-04 株式会社デンソー 並列化方法、半導体制御装置、車載制御装置
CN115220990A (zh) * 2021-12-09 2022-10-21 广州汽车集团股份有限公司 一种多核系统程序流监测方法、装置、设备及存储介质
CN115220990B (zh) * 2021-12-09 2024-04-19 广州汽车集团股份有限公司 一种多核系统程序流监测方法、装置、设备及存储介质

Also Published As

Publication number Publication date
DE102016219449A1 (de) 2017-04-13
JP6428557B2 (ja) 2018-11-28

Similar Documents

Publication Publication Date Title
US9417935B2 (en) Many-core process scheduling to maximize cache usage
US8332854B2 (en) Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
JP5516744B2 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US20090019449A1 (en) Load balancing method and apparatus in symmetric multi-processor system
JP2012511204A (ja) リソースを最適化するためのタスク再編成方法
KR20130087257A (ko) Gpu의 자원 할당을 위한 방법 및 장치
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
US20150113252A1 (en) Thread control and calling method of multi-thread virtual pipeline (mvp) processor, and processor thereof
US9471387B2 (en) Scheduling in job execution
US20170039091A1 (en) Vehicle Control Apparatus
KR20110075296A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
US20170052891A1 (en) Multi-core processor system and method for managing a shared cache in the multi-core processor system
JP2020095441A (ja) 演算制御装置
JP6428557B2 (ja) 並列化方法、並列化ツール
US20130117757A1 (en) Method and apparatus for scheduling application programs
WO2021044810A1 (ja) コア割当装置及びコア割当方法
KR102224844B1 (ko) 선점 방식을 선택하는 방법 및 장치.
US20240061718A1 (en) Method and system for managing hybrid spark cluster for efficient spark job execution
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
JP5614699B2 (ja) マルチコアシステムのためのタスク割り当て関連方法、その装置、そのシステム、及びそのプログラム
JP6617511B2 (ja) 並列化方法、並列化ツール、車載装置
JP2020086807A (ja) 車両制御装置およびプログラム実行方法
CN112363816B (zh) 嵌入式多核操作系统确定性调度方法、系统及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180808

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181015

R151 Written notification of patent or utility model registration

Ref document number: 6428557

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250