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

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

Info

Publication number
JP6464982B2
JP6464982B2 JP2015199703A JP2015199703A JP6464982B2 JP 6464982 B2 JP6464982 B2 JP 6464982B2 JP 2015199703 A JP2015199703 A JP 2015199703A JP 2015199703 A JP2015199703 A JP 2015199703A JP 6464982 B2 JP6464982 B2 JP 6464982B2
Authority
JP
Japan
Prior art keywords
core
task
dependent task
dependent
allocated
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.)
Active
Application number
JP2015199703A
Other languages
English (en)
Other versions
JP2017073000A (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.)
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 JP2015199703A priority Critical patent/JP6464982B2/ja
Priority to DE102016219403.8A priority patent/DE102016219403A1/de
Publication of JP2017073000A publication Critical patent/JP2017073000A/ja
Application granted granted Critical
Publication of JP6464982B2 publication Critical patent/JP6464982B2/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
    • 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)

Description

本発明は、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成された並列プログラムを実装した車載装置に関する。
従来、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献1に開示された並列化コンパイル方法がある。
この並列化コンパイル方法では、シングルプロセッサシステムにより実行される組込みシステム用の逐次プログラムを複数のマクロタスク(以下、MT)に分割した後、制御依存性を有するMTを一つのMTに融合する。その後、並列化コンパイル方法では、データ依存性に基づき並列実行可能なMTを抽出するとともに、スタティックスケジューリングを行い、並列プログラムを生成する。
特開2015−1807号公報
しかしながら、特許文献1で生成された並列プログラムでは、あるコアに割り振られたMTの実行が完了するのを待って、他のコアに割り振られたMTを実行させる同期処理が含まれる。このように、この並列プログラムでは、コアがMTを実行させるための待ち状態が発生するため、マルチコアマイコンの性能を使いきれないという問題がある。
本発明は、上記問題点に鑑みなされたものであり、待ち状態を減らすことができる並列プログラムを生成できる並列化方法、並列化ツール、及び、待ち状態が減らすことができる車載装置を提供することを目的とする。
上記目的を達成するために本発明は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A11〜A14、A21、A22、B11〜B14、B21、B22)から複数のコアを有するマルチコアマイコン用に並列化した並列プログラムを生成するコンピュータが実行する方法であり、シングルプログラムにおける複数の処理の依存関係を解析して、複数の処理をマルチコアマイコンの異なるコア用に割り振る並列化方法であって、
各コアに割り振られる複数の処理毎に、依存関係がある処理を依存タスクに割り振り、依存関係がない処理を非依存タスクに割り振る分割処理手順(S10〜S12)と、
他コアの依存タスクに割り振られた処理の実行が完了したことを条件に、自コアの依存タスクに割り振られた処理の実行を開始するため自コアの依存タスクを待ち状態としている場合に、自コアの非依存タスクに割り振られた処理が実行される機能を並列プログラムに付与する付与処理手順(S15)と、を備えている。
このように、本発明は、各コアに割り振られる複数の処理毎に、依存関係がある処理を依存タスクに割り振り、依存関係がない処理を非依存タスクに割り振る。これによって、各コアには、依存関係がある処理を含む依存タスクと、依存関係がない処理を含む非依存タスクが割り振られる。さらに、本発明では、自コアの依存タスクを待ち状態としている場合に、自コアの非依存タスクに割り振られた処理が実行される機能を並列プログラムに付与する。よって、本発明では、各コアが依存タスクの処理の実行を待ち状態としている間に、非依存タスクの処理を実行する並列プログラムとすることができる。つまり、本発明では、各コアが依存タスクの処理と非依存タスクの処理の両方を実行しない待ち状態を減らすことができる並列プログラムを生成できる。
また、本発明のさらなる特徴は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A11〜A14、A21、A22、B11〜B14、B21、B22)から複数のコアを有するマルチコアマイコン用に並列化した並列プログラムを生成するツールであり、シングルプログラムにおける複数の処理の依存関係を解析して、複数の処理をマルチコアマイコンの異なるコア用に割り振るコンピュータを含む並列化ツールであって、
コンピュータは、
各コアに割り振られる複数の処理毎に、依存関係がある処理を依存タスクに割り振り、依存関係がない処理を非依存タスクに割り振る分割処理手順(S10〜S12)と、
他コアの依存タスクに割り振られた処理の実行が完了したことを条件に、自コアの依存タスクに割り振られた処理の実行を開始するため自コアの依存タスクを待ち状態としている場合に、自コアの非依存タスクに割り振られた処理が実行される機能を並列プログラムに付与する付与処理手順(S15)と、を実行する点にある。
これによって、上記と同様に、待ち状態を減らすことができる並列プログラムを生成できる。
また、本発明のさらなる特徴は、
複数のコアを有するマルチコアマイコンを備え、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A11〜A14、A21、A22、B11〜B14、B21、B22)からマルチコアマイコン用に並列化されたものであり、複数の処理の依存関係を解析して、複数の処理がマルチコアマイコンの異なるコア用に割り振られた並列プログラムを記憶する車載装置であって、
並列プログラムは、
各コアの夫々に対して、依存関係がある処理が割り振られた依存タスクと、依存関係がない処理が割り振られた非依存タスクと、を含み、
マルチコアマイコンは、
他コアの依存タスクに割り振られた処理の実行が完了したことを条件に、自コアの依存タスクに割り振られた処理の実行を開始するため自コアの依存タスクを待ち状態としている場合に、自コアの非依存タスクに割り振られた処理を実行させる非依存タスク実行部(S55)と、を備えている点にある。
このように、本発明は、各コアの夫々に対して、依存関係がある処理が割り振られた依存タスクと、依存関係がない処理が割り振られた非依存タスクとを含む並列プログラムを含んでいる。この並列プログラムは、マルチコアマイコン用に並列化されたものである。そして、マルチコアマイコンは、自コアが依存タスクを待ち状態としている場合に、自コアの非依存タスクに割り振られた処理を実行させる。このため、本発明は、各コアが依存タスクの処理と非依存タスクの処理の両方を実行しない待ち状態を減らすことができる。
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
第1実施形態における並列化ツールの概略構成を示すブロック図である。 第1実施形態における車載装置の概略構成を示すブロック図である。 第1実施形態における並列化方法の一部を示す図面である。 実施形態における並列プログラムの概略構成を示すイメージ図である。 実施形態におけるタスク起床時の処理動作を示すフローチャートである。 実施形態における依存タスク実行時の処理動作を示すフローチャートである。 実施形態における非依存タスク実行時の処理動作を示すフローチャートである。 実施形態における同期処理時の処理動作を示すフローチャートである。 実施形態における第1終了処理時の処理動作を示すフローチャートである。 実施形態における第2終了処理時の処理動作を示すフローチャートである。 実施形態における第1コアと第2コアの処理動作を示す図面である。
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理A11〜A14などから第1コア21cと第2コア21dを有するマルチコアマイコン21用に並列化した並列プログラム21a1を生成する例を採用する。この処理は、処理ブロックやマクロタスク(以下、MT)などと言い換えることができる。また、マルチコアマイコンは、マルチコアプロセッサと言い換えることができる。
このように、シングルプログラムから並列プログラム21a1を生成する背景としては、マイコンの発熱量増大や消費電力増加、クロック周波数の限界問題から、コアを複数もつマルチコアマイコンが主流になることなどがあげられる。また、並列プログラム21a1としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
なお、並列プログラム21a1を生成する際には、特開2015−1807号公報に記載されているように、シングルプログラムにおける複数のMTの依存関係を解析して、複数のMTをマルチコアプロセッサ21の異なるコア21c、21d用に割り振る。この点に関しては、特開2015−1807号公報を参照されたい。
本実施形態では、シングルプログラムの一例として、処理A11〜S14、A21、A22、B11〜B14、B21、B22を備えたものを採用する。この複数の処理A11などは、お互いに依存関係がある処理が含まれている。本実施形態では、処理A21、A22、B21、B22が依存関係のない処理であり、処理A11などが他の処理と依存関係がある例を採用する。
依存関係とは、例えば、ある処理が、自身よりも先に実行された処理で更新されたデータを参照するなどの関係である。つまり、複数の処理は、シングルプログラムにおける実行順序が先である先行処理と、先行処理の実行が完了した後に実行させる後行処理とを含んでいる。そして、後行処理は、先行処理の影響を受ける処理であり、例えば、先行処理で内容が更新される可能性があるデータなどを用いる処理である。
ここで、図1を用いて、コンピュータ10の構成に関して説明する。コンピュータ10は、並列化方法を実行する並列化ツールに相当し、並列プログラム21a1を生成する。コンピュータ10は、ディスプレイ11、HDD12、CPU13、ROM14、RAM15、入力装置16、読取部17などを備えて構成されている。また、コンピュータ10は、記憶媒体18に記憶された記憶内容を読み取り可能に構成されている。この記憶媒体18には、自動並列化コンパイラ1が記憶されている。なお、HDDは、hard disk driveの略称である。CPUは、Central Processing Unitの略称である。ROMは、Read Only Memoryの略称である。RAMは、Random Access Memoryの略称である。コンピュータ10及び記憶媒体18の構成は、特開2015−1807号公報に記載されたパーソナルコンピュータ100及び記憶媒体180を参照されたい。
自動並列化コンパイラ1は、並列プログラム21a1を生成するための手順を含んでいる。自動並列化コンパイラ1は、並列化方法に相当する。つまり、自動並列化コンパイラ1は、並列化方法を含むプログラムである。自動並列化コンパイラ1は、特開2015−1807号公報に記載されたものに加えて、分割処理手順と付与処理手順を含んでいる。分割処理手順と付与処理手順は、後程説明する。
次に、車載装置20構成に関して説明する。車載装置20は、図2に示すように、マルチコアプロセッサ21、通信部22、センサ部23、入出力ポート24を備えて構成されている。また、マルチコアプロセッサ21は、ROM21a、RAM21b、第1コア21c、第2コア21dを備えて構成されている。車載装置20は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。ここでは、一例として、車載装置20をエンジン制御装置に適用した例を採用する。この場合、並列プログラム21a1は、エンジン制御などの自動車制御プログラムと言える。しかしながら、並列プログラム21a1は、これに限定されない。なお、コアは、プロセッサエレメントとも称することができる。
RAM21b、通信部22、センサ部23、入出力ポート24は、特開2015−1807号公報に記載されたRAM420、通信部430、センサ部450、入出力ポート460を参照されたい。
ROM21aには、自動並列化コンパイラ1を用いて生成された並列プログラム21a1が記憶されている。第1コア21cと第2コア21dは、並列プログラム21a1を実行することで、エンジン制御を行う。並列プログラム21a1は、第1コア21cが実行するプログラムと、第2コア21dが実行するプログラムとを含んでいる。
次に、図3、図4を用いて、コンピュータ10が自動並列化コンパイラ1を実行した際の処理動作に関して説明する。コンピュータ10は、自動並列化コンパイラ1を実行することで並列プログラム21a1を生成する。
コンピュータ10は、特開2015−1807号公報に記載された方法と同様に、シングルプログラムの各処理単位でデータの依存関係を解析したり、シングルプログラムから並列化可能な処理を抽出したりする。そして、コンピュータ10は、特開2015−1807号公報に記載された方法と同様に、依存関係と処理時間をもとに、複数の処理を第1コア21cと第2コア21dとに割り振る。ここでは、この時点で、処理A11〜A14、A21、A22が第1コア21cに割り振られ、処理B11〜B14、B21、B22が第2コア21dに割り振られる例を採用する。以下においては、第1コア21cに割り振られた処理A11〜A14、A21、A22を第1処理群、第2コア21dに割り振られた処理B11〜B14、B21、B22を第2処理群とも称する。
その後、コンピュータ10は、各処理群を対象として、図3のフローチャートで示すように動作する。
ステップS10では、依存関係があるか否かを判定する(分割処理)。コンピュータ10は、処理に依存関係があるか否かを判定し、依存関係があると判定した場合、ステップS11へ進み、依存関係があると判定しなかった場合、ステップS12へ進む。コンピュータ10は、例えば今回の対象が処理A11であった場合、依存関係があると判定するためステップS11へ進み、今回の対象が処理A21であった場合、依存関係があると判定しないためステップS12へ進む。
ステップS11では、依存タスクに割り振る(分割処理)。コンピュータ10は、ステップS10で依存関係ありと判定した処理を依存タスクに割り振る。一方、ステップS12では、非依存タスクに割り振る(分割処理)。コンピュータ10は、ステップS10で依存関係ありと判定しなかった処理を非依存タスクに割り振る。
ステップS13では、全処理の割り振りが終了したか否かを判定する。コンピュータ10は、全処理の割り振りが終了したと判定した場合、ステップS14へ進み、全処理の割り振りが終了したと判定しなかった場合、ステップS10へ戻る。
よって、コンピュータ10は、図4に示すように、第1処理群の処理A11〜A14、A21、A22を対象とした場合、処理A11〜A14を依存タスクである第1タスクに割り振り、処理A21、A22を非依存タスクである第2タスクに割り振る。また、コンピュータ10は、第2処理群の処理B11〜B14、B21、B22を対象とした場合、処理B11〜B14を依存タスクである第3タスクに割り振り、処理B21、B22を非依存タスクである第4タスクに割り振る。
このように、コンピュータ10は、ステップS10〜S12を実行することで、各コア21c、21dに割り振られる複数の処理毎に、依存関係がある処理を依存タスクに割り振り、依存関係がない処理を非依存タスクに割り振る。よって、ステップS10〜S12は、分割処理手順に相当するとも言える。
なお、第1タスク〜第4タスクは、プログラムの実行単位である。第1タスク〜第4タスクは、例えば8msなどの所定時間毎に実行される。処理A11などは、各タスクで行われる演算の関数などである。また、各タスクは、SUSPENDED状態、READY状態、RUNNING状態、WAITING状態がある。後程説明する待ち状態及び処理待ち状態は、WAITING状態に相当する。
ステップS14では、タスク起床時にコア毎に依存タスクと非依存タスクを同時起床させ、非依存タスクを処理待ち状態とする機能を並列プログラム21a1に付与する(起床処理)。このように、コンピュータ10は、第1タスクと第2タスクの起床時に、第1タスクと第2タスクを一旦起床させ、第2タスクを待ち状態にする機能を並列プログラム21a1に付与する。また、コンピュータ10は、第3タスクと第4タスクの起床時に、第3タスクと第4タスクを一旦起床させ、第4タスクを待ち状態にする機能を並列プログラム21a1に付与する。よって、ステップS14は、起床処理手順に相当するとも言える。
なお、起床時とは、処理を実行するうえで必要となる準備が整っている状態から、整っている状態に遷移した時である。起床後は、より高い優先度または同一優先度を持つタスクの処置が実行中のため、各コア21c、21dなどのデバイスの利用権が割り当てられるのを待っている状態に遷移する。また、各コア21c、21dなどのデバイス利用権が割り当てられると実行中状態に遷移する。
ステップS15では、同期待ち状態になった時、依存タスクを処理待ち状態とし、非依存タスクの処理待ち状態を解除する機能を並列プログラム21a1に付与する(付与処理)。このように、コンピュータ10は、他コアの依存タスクに割り振られた処理の実行が完了したことを条件として自コアの依存タスクに割り振られた処理の実行を開始するために、自コアの依存タスクを待ち状態とする機能を並列プログラム21a1に付与する。この待ち状態は、同期待ち状態及び処理待ち状態に相当する。そして、コンピュータ10は、同期待ち状態としているときに、自コアの非依存タスクに割り振られた処理が実行される機能を並列プログラム21a1に付与する。よって、ステップS15は、付与処理手順に相当するとも言える。
例えば、コンピュータ10は、第3タスクに割り振られた処理B11の実行が完了したことを条件として第1タスクに割り振られた処理A12の実行を開始するために、第1タスクを待ち状態とする機能を並列プログラム21a1に付与する。さらに、コンピュータ10は、待ち状態としているときに、第2タスクに割り振られた処理A21が実行される機能を並列プログラム21a1に付与する。
ステップS16では、同期完了時、非依存タスクを処理待ち状態とし、依存タスクの処理待ち状態を解除する機能を並列プログラム21a1に付与する(切替処理)。同期完了時とは、同期待ちの対象である他コアの処理の実行が完了した時点を示す。言い換えると、同期完了時とは、自コアの処理の実行が完了して、同期待ち状態であった他コアの処理の実行が可能になった時点である。このように、コンピュータ10は、自コアの依存タスクに割り振られた処理の実行が完了し、他コアの依存タスクが待ち状態であった場合、他コアの非依存タスクを待ち状態とし、他コアの依存タスクの待ち状態を解除する機能を並列プログラム21a1に付与する。よって、ステップS16は、切替処理手順に相当するとも言える。例えば、コンピュータ10は、第1タスクに割り振られた処理の実行が完了したとき、第3タスクが待ち状態であった場合、第4タスクを待ち状態とし、且つ、第3タスクの待ち状態を解除する機能を並列プログラム21a1に付与する。
コンピュータ10は、自動並列化コンパイラ1を実行することで、図4に示す並列プログラム21a1を生成する。並列プログラム21a1は、第1タスクに割り振られた処理A11〜A14、及び第2タスクに割り振られたA21、A22が第1コア21cが実行するプログラムである。また、並列プログラム21a1は、第3タスクに割り振られた処理B11〜B14、及び第4タスクに割り振られたB21、B22が第2コア21dが実行するプログラムである。
なお、本実施形態では、コンピュータ10が自動並列化コンパイラ1を実行することで、並列プログラム21a1を生成する例を採用した。しかしながら、本発明は、これに限定されない。本発明は、作業者などが、特開2015−1807号公報に記載された並列化方法に加えて、ステップS10〜S16を行うことで、並列プログラム21a1を生成してもよい。
ここで、図5〜図11を用いて、車載装置20の動作に関して説明する。
まず、車載装置20は、タスク起床時に、図5のフローチャートで示すように動作する。ステップS20では、処理を実行する。ここでの処理とは、第1処理群や第2処理群とは別の処理であり、例えば1ms毎に実行される処理である。
その後、マルチコアプロセッサ21は、第1タスクと第2タスクを起床させ、第2タスクを処理待ち状態とする(起床処理部、ステップS21〜S23)。同様に、マルチコアプロセッサ21は、第3タスクと第4タスクを起床させ、第3タスクを処理待ち状態とする(起床処理部、ステップS24〜S26)。
なお、本実施形態では、二つのコア21c、21dを有した例を採用している。マルチコアプロセッサ21は、三つ以上のコアを有していた場合、全てのコアに対して、依存タスクと非依存タスクを一旦起床させ、非依存タスクを待ち状態にする(起床処理部)。
ステップS27では、処理を実行する。ここでの処理とは、第1処理群や第2処理群とは別の処理であり、例えば1ms毎に実行される処理である。
これによって、各コア21c、21dは、タスク起床後に、依存タスクを実行することになる。各コア21c、21dは、依存タスクを実行する場合、図6のフローチャートに示すように動作する。
各コア21c、21dは、ステップS30で処理を実行し、ステップS31で同期処理を行う。第1コア21cは、ステップS30とステップS31を繰り返し行う。つまり、第1コア21cは、初回のステップS30で処理A11を実行し、次のステップS30で処理A12を実行するなどして、処理A11〜A14を順番に実行する。一方、第2コア21dは、ステップS30とステップS31を繰り返し行う。つまり、第2コア21dは、初回のステップS30で処理B11を実行し、次のステップS30で処理B12を実行するなどして、処理B11〜B14を順番に実行する。
例えば、図11に示すように、第1コア21cは、処理A11の実行が完了して同期処理を行うことで、第2コア21dによる処理B11の実行が完了するのを待つ処理待ち状態となる。また、第1コア21cは、第2コア21dによる処理B11の実行時間が伸びた場合などに、処理待ち状態となる。
同様に、第2コア21dは、処理B12の実行が完了して同期処理を行うことで、第1コア21cによる処理A12の実行が完了するのを待つ処理待ち状態となる。また、第2コア21dは、第1コア21cによる処理A12の実行時間が伸びた場合などに、処理待ち状態となる。
そして、ステップS32では、第1終了処理を行う。この第1終了処理に関して、後程説明する。
ここで、同期処理に関して、図8を用いて説明する。各コア21c、21dは、同期処理を行う場合、図8にフローチャートで示すように動作する。なお、ここでは、一例として、自コアを第1コア21c、他コアを第2コア21dとする。
ステップS50では、自コア同期待ちを記憶する。言い換えると、ステップS50では、同期待ち履歴を保存する。マルチコアプロセッサ21は、第1コア21cが同期処理を行う場合、第1コア21cが同期待ちしていることをRAM21bなどに記憶する。
ステップS51では、他コアが全て同期待ち状態であるか否かを判定する。マルチコアプロセッサ21は、RAM21bなどを確認して、第2コア21dが同期待ち状態であるか否かを判定し、同期待ち状態であると判定した場合はステップS52へ進み、同期待ち状態であると判定しなかった場合はステップS55へ進む。なお、コアが三つ以上の場合、自コアは、他のコアが全て同期待ち状態であると判定した場合にステップS52へ進み、他のコアが全て同期待ち状態であると判定してない場合にステップS55へ進む。
ステップS52では、同期待ち履歴をクリアする。マルチコアプロセッサ21は、第1コア21cの同期待ち履歴だけでなく、第2コア21dの同期待ち履歴をクリアする。
ステップS53では、他コアの依存タスクの処理待ち状態を解除する(切替処理部)。そして、ステップS54では、他コアの非依存タスクを処理待ち状態に設定する(切替処理部)。このように、マルチコアプロセッサ21は、自コアの依存タスクにおける処理の事項が完了し、他コアの依存タスクが待ち状態であった場合、他コアの非依存タスクを待ち状態とし、且つ、他コアの依存タスクの待ち状態を解除することになる。よって、第1コア21cは、第1タスクにおける処理の実行が完了して同期処理を行う際に、第3タスクが処理待ち状態であった場合、第4タスクを処理待ち状態とし、第3タスクの処理待ち状態を解除する。
ステップS55では、自コアの非依存タスクの処理待ち状態を解除する(非依存タスク実行部)。そして、ステップS56では、自コアの依存タスクを処理待ち状態に設定する(非依存タスク実行部)。つまり、マルチコアプロセッサ21は、第3タスクに割り振られた処理の実行が完了したことを条件に、第1タスクに割り振られた処理の実行を開始するために第1タスクを待ち状態とする場合に、第2タスクに割り振られた処理を実行させる。例えば、第1コア21cは、図11に示すように、第2コア21dによる処理B11の実行が完了したことを条件に、処理A12を開始するために第1タスクを処理待ち状態とする場合に、処理A21を実行させる。
このように、第1タスク及び第3タスクは、自コアで処理待ち状態とし、他コアから処理待ち状態が解除される。一方、第2タスク及び第4タスクは、他コアから処理待ち状態とされ、自コアで処理待ち状態を解除する。
ここで、各コア21c、21dは、非依存タスクを実行する場合、図7のフローチャートに示すように動作する。各コア21c、21dは、ステップS40で処理を実行し、ステップS41で第2終了処理を行う。第1コア21cは、第2タスクに割り振られた処理の分だけステップS40を繰り返し行う。つまり、第1コア21cは、初回のステップS40で処理A21を実行し、次のステップS40で処理A22を実行した後に、第2終了処理を実行する。このように、第1コア21cは、第2タスクに割り振られた処理A21、A22を順番に実行する。一方、第2コア21dは、第4タスクに割り振られた処理の分だけステップS40を繰り返し行う。つまり、第2コア21dは、初回のステップS40で処理B21を実行し、次のステップS40で処理B22を実行した後に、第2終了処理を実行する。このように、第2コア21dは、第4タスクに割り振られた処理B21、B22を順番に実行する。
このように、第1コア21cは、第1タスクの処理待ち状態のときに、第2タスクの処理を実行する。同様に、第2コア21dは、第3タスクの処理待ち状態のときに、第4タスクの処理を実行する。例えば、図11に示すように、第1コア21cは、処理B11の実行が完了するのを待つ処理待ち状態の間に処理A21を実行する。また、第2コア21dは、処理A12の実行が完了するのを待つ処理待ち状態の間に処理B21を実行する。
なお、各コア21c、21dは、処理の実行中に処理待ち状態になると、その処理を中断する。そして、各コア21c、21dは、処理を中断している際に、処理待ち状態が解除されると、中断していた処理の実行を再開する。例えば、図11の例では、第1コア21cは、処理A21を実行中に第2タスクが処理待ち状態になり、その後、処理A13の実行が完了して第1タスクが処理待ち状態になり、且つ第2タスクの処理待ち状態が解除されると、処理A21の実行を再開する。さらに、第1コア21cは、処理A21の実行が完了した時点で、第1タスクの処理待ち状態が継続していた場合は、処理A22を実行する。
ここで、第1終了処理に関して、図9を用いて説明する。各コア21c、21dは、第1終了処理を行う場合、図9にフローチャートで示すように動作する。
ステップS60では、自コアの依存タスクの完了履歴を記憶する。第1コア21cは、第1タスクの完了履歴をRAM21bなどに記憶する。同様に、第2コア21dは、第3タスクの完了履歴をRAM21bなどに記憶する。
ステップS61では、自コアの非依存タスクが完了か否かを判定する。第1コア21cは、第2タスクが完了しているか否かを判定し、完了していると判定した場合はステップS64へ進み、完了していると判定しなかった場合はステップS62へ進む。同様に、第2コア21dは、第4タスクが完了しているか否かを判定し、完了していると判定した場合はステップS64へ進み、完了していると判定しなかった場合はステップS62へ進む。
ステップS62では、自コアの非依存タスクの処理待ち状態を解除する。第1コア21cは、第2タスクの処理待ち状態を解除する。同様に、第2コア21dは、第4タスクの処理待ち状態を解除する。
ステップS63では、自コアの依存タスクを処理待ち状態に設定する。第1コア21cは、第1タスクを処理待ち状態とする。同様に、第2コア21dは、第3タスクを処理待ち状態とする。
ステップS64では、他コアのタスクが全て完了しているか否かを判定する。第1コア21cは、第3タスクと第4タスクが完了しているか否かを判定し、完了していると判定した場合はステップS65へ進み、完了していると判定しなかった場合はステップS64の判定を繰り返す。同様に、第2コア21dは、第1タスクと第2タスクが完了しているか否かを判定し、完了していると判定した場合はステップS65へ進み、完了していると判定しなかった場合はステップS64の判定を繰り返す。
ステップS65では、全コアのタスクを全て終了する。第1コア21c及び第2コア21dは、全コアのタスクを全て終了する。例えば、第1コア21cは、自身のタスクに加えて、第2コア21dのタスクを含む全てのタスクを終了する。しかしながら、本発明は、これに限定されない。また、ここでの全てのタスクとは、図5のフローチャートで起床した全てのタスクである。
このように、各コア21c、21dは、自コアの非依存タスクが完了していない時は、非依存タスクを実行し、非依存タスクが完了している時は、他コアの完了を待つ。
次に、第2終了処理に関して、図10を用いて説明する。各コア21c、21dは、第2終了処理を行う場合、図10にフローチャートで示すように動作する。
ステップS70では、自コアの非依存タスクの完了履歴を記憶する。第1コア21cは、第2タスクの完了履歴をRAM21bなどに記憶する。同様に、第2コア21dは、第4タスクの完了履歴をRAM21bなどに記憶する。
ステップS71では、自コアの依存タスクが完了しているか否かを判定する。第1コア21cは、第1タスクが完了しているか否かを判定し、完了していると判定した場合はステップS72へ進み、完了していると判定しなかった場合はステップS71での判定を繰り返す。同様に、第2コア21dは、第3タスクが完了しているか否かを判定し、完了していると判定した場合はステップS72へ進み、完了していると判定しなかった場合はステップS71での判定を繰り返す。
ステップS72では、自コアの依存タスクの処理待ち状態を解除する。第1コア21cは、第1タスクの処理待ち状態を解除する。同様に、第2コア21dは、第3タスクの処理待ち状態を解除する。このように、各コア21c、21dは、自身に割り振られた依存タスクが完了していない間、ステップS71をループして、同期待ちする。
ステップS73では、自コアの非依存タスクを処理待ち状態に設定する。第1コア21cは、第2タスクを処理待ち状態とする。同様に、第2コア21dは、第4タスクを処理待ち状態とする。
以上のように、自動並列化コンパイラ1は、各コア21c、21dに割り振られる複数の処理毎に、依存関係がある処理を第1タスク及び第3タスクに割り振り、依存関係がない処理を第2タスク及び第4タスクに割り振る。これによって、各コア21c、21dには、依存関係がある処理を含む第1タスク及び第3タスクと、依存関係がない処理を含む第2タスクと第4タスクが割り振られる。
さらに、自動並列化コンパイラ1では、第1コア21cの第1タスクを待ち状態としている場合に、第1コア21cの第2タスクに割り振られた処理が実行される機能を並列プログラム21a1に付与する。よって、自動並列化コンパイラ1では、第1コア21cが第1タスクの処理の実行を待ち状態としている間に、第2タスクの処理を実行する並列プログラム21a1とすることができる。同様に、自動並列化コンパイラ1では、第2コア21dが第3タスクの処理の実行を待ち状態としている間に、第4タスクの処理を実行する並列プログラム21a1とすることができる。
つまり、自動並列化コンパイラ1では、第1コア21cが第1タスクの処理と、第2タスクの処理の両方を実行しない待ち状態を減らすことができる並列プログラム21a1を生成できる。同様に、自動並列化コンパイラ1では、第2コア21dが第3タスクの処理と、第4タスクの処理の両方を実行しない待ち状態を減らすことができる並列プログラム21a1を生成できる。
この事により、自動並列化コンパイラ1は、同期方式のメリットを生かしたまま、待ち状態によるマルチコアマイコン21の性能低下を抑える事が可能な並列プログラム21a1を生成できる。また、自動並列化コンパイラ1は、待ち状態を減らすための分割やスケジューリング調整にかかる工数も抑える事ができる。
また、コンピュータ10は、自動並列化コンパイラ1を実行することで並列プログラム21a1を生成する。よって、コンピュータ10は、自動並列化コンパイラ1と同様の効果を奏することができる。
また、車載装置20は、各コア21c、21dの夫々に対して、依存関係がある処理が割り振られた第1タスクまたは第3タスクと、依存関係がない処理が割り振られた第2タスクまたは第4タスクとを含む並列プログラム21a1を含んでいる。この並列プログラム21a1は、マルチコアマイコン21に並列化されたものである。そして、マルチコアマイコン21は、第1コア21cが第1タスクを待ち状態としている場合に、第2タスクに割り振られた処理を実行させる。同様に、マルチコアマイコン21は、第2コア21dが第3タスクを待ち状態としている場合に、第4タスクに割り振られた処理を実行させる。このため、車載装置20は、第1コア21cが第1タスクの処理と、第2タスクの処理の両方を実行しない待ち状態を減らすことができる。同様に、車載装置20は、第2コア21dが第3タスクの処理と、第4タスクの処理の両方を実行しない待ち状態を減らすことができる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
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 (9)

  1. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A11〜A14、A21、A22、B11〜B14、B21、B22)から複数の前記コアを有するマルチコアマイコン用に並列化した並列プログラムを生成するコンピュータが実行する方法であり、前記シングルプログラムにおける複数の前記処理の依存関係を解析して、複数の前記処理を前記マルチコアマイコンの異なる前記コア用に割り振る並列化方法であって、
    各コアに割り振られる複数の前記処理毎に、依存関係がある前記処理を依存タスクに割り振り、依存関係がない前記処理を非依存タスクに割り振る分割処理手順(S10〜S12)と、
    他コアの前記依存タスクに割り振られた前記処理の実行が完了したことを条件に、自コアの前記依存タスクに割り振られた前記処理の実行を開始するため前記自コアの前記依存タスクを待ち状態とする場合に、前記自コアの前記非依存タスクに割り振られた前記処理が実行される機能を前記並列プログラムに付与する付与処理手順(S15)と、を備えている並列化方法。
  2. 前記依存タスクと前記非依存タスクの起床時に、前記コア毎に、前記依存タスクと前記非依存タスクを一旦起床させ、前記非依存タスクを待ち状態にする機能を前記並列プログラムに付与する起床処理手順(S14)を備えている請求項1に記載の並列化方法。
  3. 前記自コアの前記依存タスクに割り振られた前記処理の実行が完了し、前記他コアの前記依存タスクが待ち状態であった場合、前記他コアの前記非依存タスクを待ち状態とし、且つ、前記他コアの前記依存タスクの待ち状態を解除する機能を前記並列プログラムに付与する切替処理手順(S16)を備えている請求項1又は2に記載の並列化方法。
  4. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A11〜A14、A21、A22、B11〜B14、B21、B22)から複数の前記コアを有するマルチコアマイコン用に並列化した並列プログラムを生成するツールであり、前記シングルプログラムにおける複数の前記処理の依存関係を解析して、複数の前記処理を前記マルチコアマイコンの異なる前記コア用に割り振るコンピュータを含む並列化ツールであって、
    前記コンピュータは、
    各コアに割り振られる複数の前記処理毎に、依存関係がある前記処理を依存タスクに割り振り、依存関係がない前記処理を非依存タスクに割り振る分割処理手順(S10〜S12)と、
    他コアの前記依存タスクに割り振られた前記処理の実行が完了したことを条件に、自コアの前記依存タスクに割り振られた前記処理の実行を開始するため前記自コアの前記依存タスクを待ち状態とする場合に、前記自コアの前記非依存タスクに割り振られた前記処理が実行される機能を前記並列プログラムに付与する付与処理手順(S15)と、を実行する並列化ツール。
  5. 前記依存タスクと前記非依存タスクの起床時に、前記コア毎に、前記依存タスクと前記非依存タスクを一旦起床させ、前記非依存タスクを待ち状態にする機能を前記並列プログラムに付与する起床処理手順(S14)を更に実行する請求項4に記載の並列化ツール。
  6. 前記自コアの前記依存タスクに割り振られた前記処理の実行が完了し、前記他コアの前記依存タスクが待ち状態であった場合、前記他コアの前記非依存タスクを待ち状態とし、且つ、前記他コアの前記依存タスクの待ち状態を解除する機能を前記並列プログラムに付与する切替処理手順(S16)を更に実行する請求項4又は5に記載の並列化ツール。
  7. 複数のコアを有するマルチコアマイコンを備え、前記コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(A11〜A14、A21、A22、B11〜B14、B21、B22)から前記マルチコアマイコン用に並列化されたものであり、複数の前記処理の依存関係を解析して、複数の前記処理が前記マルチコアマイコンの異なる前記コア用に割り振られた並列プログラムを記憶する車載装置であって、
    前記並列プログラムは、
    各コアの夫々に対して、依存関係がある前記処理が割り振られた依存タスクと、依存関係がない前記処理が割り振られた非依存タスクと、を含み、
    前記マルチコアマイコンは、
    他コアの前記依存タスクに割り振られた前記処理の実行が完了したことを条件に、自コアの前記依存タスクに割り振られた前記処理の実行を開始するため前記自コアの前記依存タスクを待ち状態とする場合に、前記自コアの前記非依存タスクに割り振られた前記処理を実行させる非依存タスク実行部(S55、S56)と、を備えている車載装置。
  8. 前記マルチコアマイコンは、前記依存タスクと前記非依存タスクの起床時に、前記コア毎に、前記依存タスクと前記非依存タスクを一旦起床させ、前記非依存タスクを待ち状態にする起床処理部(S21〜S26)を備えている請求項7に記載の車載装置。
  9. 前記マルチコアマイコンは、前記自コアの前記依存タスクに割り振られた前記処理の実行が完了し、前記他コアの前記依存タスクが待ち状態であった場合、前記他コアの前記非依存タスクを待ち状態とし、且つ、前記他コアの前記依存タスクの待ち状態を解除する切替処理部(S53、S54)を備えている請求項7又は8に記載の車載装置。
JP2015199703A 2015-10-07 2015-10-07 並列化方法、並列化ツール、車載装置 Active JP6464982B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015199703A JP6464982B2 (ja) 2015-10-07 2015-10-07 並列化方法、並列化ツール、車載装置
DE102016219403.8A DE102016219403A1 (de) 2015-10-07 2016-10-06 Parallelisierungsverarbeitung, parallelisierungswerkzeug und fahrzeuggebundene vorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015199703A JP6464982B2 (ja) 2015-10-07 2015-10-07 並列化方法、並列化ツール、車載装置

Publications (2)

Publication Number Publication Date
JP2017073000A JP2017073000A (ja) 2017-04-13
JP6464982B2 true JP6464982B2 (ja) 2019-02-06

Family

ID=58405641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015199703A Active JP6464982B2 (ja) 2015-10-07 2015-10-07 並列化方法、並列化ツール、車載装置

Country Status (2)

Country Link
JP (1) JP6464982B2 (ja)
DE (1) DE102016219403A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697122B (zh) * 2017-10-20 2024-03-15 华为技术有限公司 任务处理方法、设备及计算机存储介质
JP7042105B2 (ja) 2018-02-16 2022-03-25 日立Astemo株式会社 プログラム実行制御方法および車両制御装置
WO2020026315A1 (ja) 2018-07-30 2020-02-06 三菱電機株式会社 割り込み制御装置、割り込み制御方法および割り込み制御プログラム
JP7095620B2 (ja) * 2019-02-21 2022-07-05 株式会社デンソー 演算装置
CN110365768B (zh) * 2019-07-15 2021-07-06 腾讯科技(深圳)有限公司 分布式系统的数据同步方法、装置、介质、电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3039953B2 (ja) * 1989-04-28 2000-05-08 株式会社日立製作所 並列化装置
WO2011104812A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、割込プログラム、および割込方法
JP2012108576A (ja) * 2010-11-15 2012-06-07 Toyota Motor Corp マルチコアプロセッサ、処理実行方法、プログラム
KR101901587B1 (ko) * 2011-12-13 2018-10-01 삼성전자주식회사 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Also Published As

Publication number Publication date
DE102016219403A1 (de) 2017-04-13
JP2017073000A (ja) 2017-04-13

Similar Documents

Publication Publication Date Title
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
KR101738641B1 (ko) 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
US11449364B2 (en) Processing in a multicore processor with different cores having different architectures
US9619282B2 (en) Task scheduling in big and little cores
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
Xu et al. Cache-aware compositional analysis of real-time multicore virtualization platforms
Axer et al. Response-time analysis of parallel fork-join workloads with real-time constraints
US8984200B2 (en) Task scheduling in big and little cores
Bailey et al. Finding the limits of power-constrained application performance
KR101626378B1 (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
JP6427054B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
WO2020121840A1 (ja) 演算制御装置
US9910717B2 (en) Synchronization method
JP2016218503A (ja) 並列化コンパイル方法、並列化コンパイラ、及び車載装置
Forsberg et al. HePREM: A predictable execution model for GPU-based heterogeneous SoCs
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
CN108139929B (zh) 用于调度多个任务的任务调度装置和方法
US10162679B2 (en) Method and system for assigning a computational block of a software program to cores of a multi-processor system
JP6477260B2 (ja) アプリケーションを実行する方法及びリソースマネジャ
US10255119B2 (en) Parallelization method, parallelization tool and vehicle-mounted device
KR101658792B1 (ko) 컴퓨팅 시스템 및 방법
Moore et al. Inflation and deflation of self-adaptive applications
US20200065147A1 (en) Electronic devices and methods for 5g and b5g multi-core load balancing
KR102022972B1 (ko) 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법
JP6933001B2 (ja) 並列化方法、並列化ツール

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181224

R151 Written notification of patent or utility model registration

Ref document number: 6464982

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