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

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

Info

Publication number
JP6617511B2
JP6617511B2 JP2015201663A JP2015201663A JP6617511B2 JP 6617511 B2 JP6617511 B2 JP 6617511B2 JP 2015201663 A JP2015201663 A JP 2015201663A JP 2015201663 A JP2015201663 A JP 2015201663A JP 6617511 B2 JP6617511 B2 JP 6617511B2
Authority
JP
Japan
Prior art keywords
core
bus
suppression
execution
time
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
JP2015201663A
Other languages
English (en)
Other versions
JP2017076156A (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 JP2015201663A priority Critical patent/JP6617511B2/ja
Priority to DE102016219721.5A priority patent/DE102016219721A1/de
Publication of JP2017076156A publication Critical patent/JP2017076156A/ja
Application granted granted Critical
Publication of JP6617511B2 publication Critical patent/JP6617511B2/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • 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
    • 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/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
    • 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)
  • General Engineering & Computer Science (AREA)
  • Software Systems (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の実行が完了したことを示す値を記憶するとともに、記憶部の値をポーリングしながら待合せ処理を行うことが考えられる。
この場合、MTの実行中であるコアは、MTを実行するためにバスにアクセスする。一方、既にMTの実行が完了している待ち状態のコアは、他のコアがMTの実行が完了したか否かを確認するためにバスにアクセスする。よって、マルチコアマイコンでは、バスアクセスが競合するという問題がおこりうる。
また、従来技術ではないが、このような競合を抑制するために、並列化方法では、コアが待ち状態時にバスアクセスすることを抑制するためにnop(no operationの略称)命令を並列プログラムに付与することも考えられる。さらに、このnop命令の回数は、経験的であったり、トライアンドエラーで決められることが考えられる。このため、並列プログラムは、nop命令の回数が適切な回数よりも多かったり少なかったりすることが起こりうる。従って、並列プログラムは、待ち状態の時間が長くなり、マルチコアマイコンの性能を活かしきれないという問題がある。
本発明は、上記問題点に鑑みなされたものであり、バスアクセスの競合を減らしつつ、待ち時間が長くなることを抑制可能な並列プログラムを作成できる並列化方法、並列化ツール、及びバスアクセスの競合が減り且つ待ち時間が長くなることを抑制できる車載装置を提供することを目的とする。
上記目的を達成するために本発明は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT1〜MT7)から、共通のバスにアクセスする複数のコア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する並列化方法であって、
並列プログラムは、自コアに割り振られた処理の実行が完了した場合に、他コアに割り振られた処理の実行が完了するのを待って、自コアに割り振られた次の処理を実行させる同期処理を含むものであり、
並列プログラムから同期処理が行われる場所を検出する検出手順(S10)と、
検出された同期処理において、自コアに割り振られた処理の実行が完了してから、他コアに割り振られた処理の実行が完了するまでの待ち時間を算出する算出手順(S11、S12)と、
自コアが待っている間に自コアによるバスへのアクセスを抑制する抑制処理を、並列プログラムに追加する手順であり、算出された待ち時間に応じて抑制処理の実行時間である抑制時間を決定し、自コアによるバスへのアクセスを抑制時間の間禁止する抑制処理を追加する追加手順(S13)と、を備えている点にある。
このように、本発明は、抑制処理を並列プログラムに追加するため、他コアが処理を実行している間に、自コアとバスへのアクセスが競合することを低減可能な並列プログラムにできる。さらに、本発明は、並列プログラムから同期処理の場所を検出し、その同期処理における自コアの待ち時間を算出する。そして、本発明は、この待ち時間に応じて、抑制時間を決定するため、待ち時間が長くなることを抑制可能な並列プログラムとすることができる。
また、本発明のさらなる特徴は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT1〜MT7)から、共通のバスにアクセスする複数のコア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成するコンピュータを備えた並列化ツールであって、
並列プログラムは、自コアに割り振られた処理の実行が完了した場合に、他コアに割り振られた処理の実行が完了するのを待って、自コアに割り振られた次の処理を実行させる同期処理を含むものであり、
並列プログラムから同期処理が行われる場所を検出する検出部(S10)と、
検出された同期処理において、自コアに割り振られた処理の実行が完了してから、他コアに割り振られた処理の実行が完了するまでの待ち時間を算出する算出部(S11、S12)と、
自コアが待っている間に自コアによるバスへのアクセスを抑制する抑制処理を、並列プログラムに追加するものであり、算出された待ち時間に応じて抑制処理の実行時間である抑制時間を決定し、自コアによるバスへのアクセスを抑制時間の間禁止する抑制処理を追加する追加部(S13)と、を備えている点にある。
これによって、上記と同様に、待ち時間が長くなることを抑制可能な並列プログラムとすることができる。
また、本発明のさらなる特徴は、
共通のバス(21e)にアクセスする複数のコア(21c、21d)を有するマルチコアマイコン(21)と、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT1〜MT7)からマルチコアマイコン用に並列化されたものであり複数の処理がマルチコアマイコンの異なるコア用に割り振られた並列プログラム(21a1)と、を備えた車載装置であって、
並列プログラムは、
自コアに割り振られた処理の実行が完了した場合に、他コアに割り振られた処理の実行が完了するのを待って、自コアに割り振られた次の処理を実行させる同期処理を含むものであり、
並列プログラムから同期処理が行われる場所が検出され、
検出された同期処理において、自コアに割り振られた処理の実行が完了してから、他コアに割り振られた処理の実行が完了するまでの待ち時間が算出され、
並列プログラムには、自コアが待っている間に自コアによるバスへのアクセスを抑制時間の間禁止する抑制処理が追加されており、抑制処理の実行時間である抑制時間が、算出された待ち時間に応じて決定されており
複数のコアの夫々は、自身に割り振られた処理と、同期処理と、抑制処理を実行する点にある。
これによって、本発明の並列プログラムは、抑制処理を並列プログラムに追加するため、他コアが処理を実行している間に、自コアとバスへのアクセスが競合することを低減可能である。さらに、本発明の並列プログラムは、並列プログラムから同期処理の場所を検出し、その同期処理における自コアの待ち時間を算出されている。そして、本発明の並列プログラムは、この待ち時間に応じて、抑制時間を決定されているため、待ち時間が長くなることを抑制可能である。よって、本発明のコアは、自身に割り振られた処理と、同期処理と、抑制処理を実行するため、バスアクセスの競合が減り且つ待ち時間が長くなることを抑制できる。
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
第1実施形態におけるコンピュータの概略構成を示すブロック図である。 第1実施形態における車載装置の概略構成を示すブロック図である。 実施形態におけるコンピュータの機能を示すブロック図である。 実施形態におけるコンピュータの処理動作を示すフローチャートである。 実施形態における並列プログラムの概略構成を示すイメージ図である。 比較例における車載装置の処理動作を示す図面である。
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理MT1〜MT7などから第1コア21cと第2コア21dを有するマルチコアマイコン21用に並列化した並列プログラム21a1を生成する例を採用する。この処理は、処理ブロックやマクロタスクなどと言い換えることができる。また、マルチコアマイコンは、マルチコアプロセッサと言い換えることができる。
このように、並列プログラム21a1を生成する背景としては、マイコンの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアプロセッサ21が主流になることなどがあげられる。そして、マルチコアプロセッサ21は、車載装置の分野においても適用が必要となっている。また、並列プログラム21a1としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
なお、並列プログラム21a1を生成する際には、シングルプログラムにおける複数の処理MT1〜MT7の依存関係を解析して、複数の処理MT1〜MT7をマルチコアプロセッサ21の異なるコア21c、21d用に割り振る。この点に関しては、特開2015−1807号公報を参照されたい。
本実施形態では、シングルプログラムの一例として、第1処理MT1〜第7処理MT7を備えたものを採用する。この複数の処理MT1〜MT7は、お互いに依存関係がある処理が含まれている。本実施形態では、例えば第1処理MT1と第4処理MT4が依存関係のある例を採用する。
依存関係とは、例えば、ある処理が、自身よりも先に実行された処理で更新されたデータを参照するなどの関係である。つまり、複数の処理は、シングルプログラムにおける実行順序が先である先行処理と、先行処理の実行が完了した後に実行させる後行処理とを含んでいる。そして、後行処理は、先行処理の影響を受ける処理であり、例えば、先行処理で内容が更新される可能性があるデータなどを用いる処理である。
ここで、図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、バス21eを備えて構成されている。車載装置20は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。ここでは、一例として、車載装置20をエンジン制御装置に適用した例を採用する。この場合、並列プログラム21a1は、エンジン制御などの自動車制御プログラムと言える。しかしながら、並列プログラム21a1は、これに限定されない。なお、コアは、プロセッサエレメントとも称することができる。
RAM21b、通信部22、センサ部23、入出力ポート24は、特開2015−1807号公報に記載されたRAM420、通信部430、センサ部450、入出力ポート460を参照されたい。
ROM21aには、自動並列化コンパイラ1を用いて生成された並列プログラム21a1が記憶されている。第1コア21cと第2コア21dは、並列プログラム21a1を実行することで、エンジン制御を行う。詳述すると、第1コア21cと第2コア21dは、並列プログラム21a1を実行することで、バス21eにアクセスしてRAM21bの一時的な記憶機能を利用しつつ、エンジン制御を行う。よって、バス21eは、第1コア21cと第2コア21dに共通に設けられている。同様に、RAM21bは、第1コア21cと第2コア21dに共通に設けられている。なお、第1コア21cと第2コア21dは、図示しない発振回路から出力されるクロック信号に同期して動作するものである。
また、並列プログラム21a1は、依存関係がある二つの処理MTが別々のコア21c、21dに配置されることもある。よって、並列プログラム21a1は、依存関係がある二つの処理MTが別々のコア21c、21dに配置される場合、他コアに割り振られた処理順序が先の処理MTの実行が完了するのを待って、処理順序が後の処理MTを実行する同期処理を含んでいる。つまり、並列プログラム21a1は、自コアに割り振られた処理MTの実行が完了した場合に、他コアに割り振られた処理MTの実行が完了するのを待って、自コアに割り振られた次の処理MTを実行させる同期処理を含んでいる。そして、ここでの他コアに割り振られた処理MTは、自コアに割り振られた次の処理MTと依存関係があり、自コアに割り振られた次の処理MTよりも実行順序が先である。
このため、第1コア21cと第2コア21dは、同期処理を行うために、自身に割り振られた処理MTの実行が完了した場合にバス21eにアクセスして、同期待ちであることを示す情報(以下、完了情報)をRAM21bに記憶する。そして、他コアにおける依存関係がある処理MTの実行完了を待っている自コアは、処理MTを実行することなく、定期的にバス21eにアクセスして、RAM21bに完了情報が記憶されているか否かを確認する。つまり、他コアにおける依存関係がある処理MTの実行完了を待っている自コアは、非動作中に定期的に動作して、バス21eを介してRAM21bにアクセスし、完了情報が記憶されているか否かを確認する。このように、第1コア21cと第2コア21dは、お互いに待合せをしながら、言い換えると同期を取りながら、処理MTの実行を行う。よって、同期処理は、待合わせ処理と言うこともできる。
並列プログラム21a1は、周知のnop命令を含んでいる。よって、第1コア21cと第2コア21dは、nop命令を実行した場合、何もしない非動作状態となるため、バス21eへもアクセスしない。よって、nop命令は、自コアが待っている間に自コアによるバス21eへのアクセスを抑制する抑制処理に相当する。また、nop命令は、禁止命令にも相当する。
なお、並列プログラム21a1は、第1コア21cが実行するプログラムと、第2コア21dが実行するプログラムとを含んでいる。また、バス21eへのアクセスは、RAMアクセスと言い換えることもできる。
次に、図3、図4を用いて、コンピュータ10が自動並列化コンパイラ1を実行した際の処理動作に関して説明する。コンピュータ10は、自動並列化コンパイラ1を実行することで並列プログラム21a1を生成する。
図3は、コンピュータ10の処理を機能ブロックで表した図面である。コンピュータ10は、依存関係解析部10a、処理時間解析部10b、コア割付部10c、スケジューリング部10d、算出部10e、コード生成部10fを含んで構成されている。
依存関係解析部10aは、シングルプログラムの依存関係を解析し、並列化可能な処理MTを抽出する。処理時間解析部10bは、各処理MT1〜MT7の処理時間、すなわち、各処理MT1〜MT7の実行に要する時間を解析する。コア割付部10cは、各処理MT1〜MT7を各コア21c、21dに割り付ける(言い換えると、割り振る)。スケジューリング部10dは、各処理MT1〜MT7のスケジューリングを行うことで、各処理MT1〜MT7を並び替えたりする。ここまでは、特開2015−1807号公報を参照されたい。ここでは、この時点で、図5に示すように、各処理MT1〜MT7が各コア21c、21dに割り振られて並べられている例を採用する。このように、コンピュータ10は、特開2015−1807号公報に記載された方法と同様に、依存関係と処理時間をもとに、複数の処理MT1〜MT7を第1コア21cと第2コア21dとに割り振る。この時点での各処理MT1〜MT7は、並列プログラム21a1として用いることもできる。しかしながら、各処理MT1〜MT7では、上記のように待ち時間が長くなる可能性がある。
そこで、コンピュータ10は、算出部10eとコード生成部10fを備えている。算出部10eとコード生成部10fでは、図4にフローチャートで示す処理を実行する。なお、この時点における第1コア21cと第2コア21dとに割り振られた複数の処理MT1〜MT7は、プレプログラムと言える。また、第1コア21cと第2コア21dとで最初に実行される処理MTは、処理開始が開始時間t0で同期がとられている。また、各処理MT1〜MT7は、開始時間及び終了時間が予測値として解っている。開始時間及び終了時間は、開始時間t0を基準とした時間である。
まず、ステップS10では、nop命令が挿入されていない待合わせ処理があるか否かを判定する。なお、コンピュータ10のスケジューリング部10dは、算出部10eとコード生成部10fでの処理の前に、ステップS10を行う。
コンピュータ10は、プレプログラムから待合せ処理が行われる場所を検出する(検出部)。そして、コンピュータ10は、その待合せ処理にnop命令が挿入されていないものがあるか否かを判定する。そして、コンピュータ10は、nop命令が挿入されていないものがあると判定した場合はステップS11へ進み、nop命令が挿入されていないものがあると判定しなかった場合は図4のフローチャートを終了する。言い換えると、コンピュータ10は、プレプログラムから抽出した待合せ処理毎に、nop命令が挿入されているか否かを判定する。
図5の例の場合、コンピュータ10は、第1待合せ処理W1や第2待合せ処理W2が検出されることになる。そして、コンピュータ10は、第1待合せ処理W1や第2待合せ処理W2からnop命令が挿入されていない待合せ処理の有無を判定する。
なお、上記のように、プレプログラムは、並列プログラム21a1として用いることもできる。よって、ステップS10は、並列プログラム21a1から待合せ処理が行われる場所を検出し、その待合せ処理にnop命令が挿入されていないものがあるか否かを判定するとも言える。また、コンピュータ10は、自動並列化コンパイラ1を実行することで、ステップS10を実行する。よって、ステップS10は、検出手順に相当すると言える。
ステップS11では、算出部10eは、待合わせ直前処理の終了時間tbを取得する。そして、ステップS12では、算出部10eは、待合わせ直後処理の開始時間taを取得する。これは、検出された待合せ処理において、自コアに割り振られた処理の実行が完了してから、他コアに割り振られた処理の実行が完了するまでの待ち時間を算出するためである。算出部10eは、nop命令が挿入されていない待合せ処理の直前に実行される処理MTの終了時間tbと、その待合せ処理の直後に実行される処理MTの開始時間taとを取得する。そして、算出部10eは、終了時間tbから開始時間taを減算することで、待ち時間を算出する。
例えば、今回の対象が第1待合せ処理W1であった場合、算出部10eは、終了時間tbとして時間te2と、開始時間taとして時間ts4を取得して、時間te2−時間ts4の演算を実行することで待ち時間を算出する。また、今回の対象が第2待合せ処理W2であった場合、算出部10eは、終了時間tbとして時間te4と、開始時間taとして時間ts7を取得して、時間te4−時間ts7の演算を実行することで待ち時間を算出する。
なお、コンピュータ10は、自動並列化コンパイラ1を実行することで、ステップS11、S12を実行する。よって、ステップS11、S12は、算出手順に相当すると言える。
ステップS13では、(tb-ta)×比率により算出したnop数を待合せ処理内に追加する。コード生成部10fは、ROM14などに記憶された比率情報2を取得する。この比率情報2には、ステップS13で用いる比率が記憶されている。詳述すると、比率情報2には、待ち時間とnop命令の関係から比率を決定するための定数又はテーブル(線形補間)を含んでいる。この定数やテーブルは、待ち時間が必要以上に長くならないように、待ち時間に応じたnop命令回数を決めるためのものである。
他コアによる処理MTの実行が完了するのを待っている自コアは、nop命令を実行している間、バス21eへアクセスしない。この自コアによるバス21eへのアクセスは、自コアよるnop命令の実行時間の分だけ抑制される。よって、自コアがnop命令を実行している時間は、他コアによる処理MTの実行が完了するのを待っている自コアによる、バス21eへのアクセスを抑制する抑制時間に相当する。つまり、nop命令の回数は、抑制時間に対応していると言える。
このように、コード生成部10fは、自コアが待っている間に自コアによるバス21eへのアクセスを抑制する抑制処理を、並列プログラム21a1の待合せ処理内に追加するものである。そして、コード生成部10fは、算出された待ち時間に応じてnop命令の回数を決定し、自コアによるバス21eへのアクセスを抑制時間の間禁止するnop命令を追加する。詳述すると、コード生成部10fは、プレプログラムにおける待合せ処理内に、決定した回数のnop命令を追加する。例えば、コード生成部10fは、決定した回数のnop命令を追加する場合、時間的に均等な間隔でnop命令が実行されるように、追加する。なお、コード生成部10fは、算出した待ち時間に応じて、並列プログラム21a1に追加するnop命令の回数を調整すると言える。
よって、コード生成部10fは、追加部に相当する。なお、コンピュータ10は、自動並列化コンパイラ1を実行することで、ステップS13を実行する。このため、ステップS13は、追加手順に相当すると言える。
このようにして、コンピュータ10は、図5に示すような、並列プログラム21a1を生成する。第1待合せ処理W1には、待ち時間(te2−ts4)の長さに応じた回数のnop命令が追加されている。同様に、第2待合せ処理W2には、待ち時間(te4−ts7)の長さに応じた回数のnop命令が追加されている。第1待合せ処理W1と第2待合せ処理W2は、待ち時間の長さが異なる。よって、第1待合せ処理W1のnop回数と第2待合せ処理W2のnop回数は、異なる。
また、コンピュータ10は、並列プログラム21a1のソースを生成するとも言える。そして、並列プログラム21a1のソースは、コンパイル及び書き込みによって、車載装置20のROM21aに保存される。
なお、第1処理MT1は、開始時間ts1、終了時間te1である。また、第2処理MT2は、開始時間ts2、終了時間te2である。そして、開始時間ts1と開始時間ts2は、処理開始t0と等しい同時間である。また、第3処理MT3の開始時間ts3は、終了時間te1及び開始時間ts4と等しい。このように、第3処理MT3の実行開始と、第4処理MT4の実行開始は、同期がとれている。そして、第3処理MT3の実行が終了すると第5処理MT5が実行されるため、第3処理MT3の終了時間te3は、第5処理MT5の開始時間ts5と等しい。
同様に、第6処理MT6の開始時間ts6は、第5処理MT5の終了時間te5及び第7処理MT7の開始時間ts7と等しい。このように、第6処理MT6の実行開始と、第7処理MT7の実行開始は、同期がとれている。
なお、te4は、第4処理MT4の終了時間である。te6は、第6処理MT6の終了時間である。te7は、第7処理MT7の終了時間である。
ここで、図6の比較例を参照しながら、コンピュータ10の効果に関して説明する。比較例では、第1段目に図示するように、依存関係がある第1処理MT1と第3処理MT3が第1コアに割り振られ、第3処理と依存関係がある第2処理MT2が第2コアに割り振られている例を採用する。そして、比較例では、図6の中段に、待合せ処理中のnop命令の回数が比較的少ない例を図示し、図6の下段に、待合せ処理中のnop命令の回数が比較的多い例を図示している。比較例1のマルチコアプロセッサは、図6の中段に示すように第1処理MT1〜第3処理MT3を実行する。また、比較例2のマルチコアプロセッサは、図6の下段に示すように第1処理MT1〜第3処理MT3を実行する。
比較例1のマルチコアプロセッサは、nop命令が少ないため、第1コアが第1処理MT1を実行するためのRAMアクセスと、第2コアが完了情報を確認するためのRAMアクセスとが競合しやすくなる。よって、比較例1のマルチコアプロセッサは、nop命令が多い場合よりも、競合の頻度が増え、待ち時間が長くなりやすい。
一方、比較例2のマルチコアプロセッサは、nop命令が多いため、第1コアが第1処理MT1を実行するためのRAMアクセスと、第2コアが完了情報を確認するためのRAMアクセスとが競合しにくい。しかしながら、比較例2のマルチコアプロセッサは、nop命令の回数が多いため、待ち時間が長くなりやすい。また、比較例2のマルチコアプロセッサは、第1処理MT1の次の処理である第3処理MT3の実行開始が遅れやすい。
コンピュータ10は、nop命令を並列プログラム21a1に追加するため、比較例と同様に、他コアが処理MTを実行している間に、自コアとバス21eへのアクセスが競合することを低減可能な並列プログラム21a1にできる。コンピュータ10は、例えば、第1コア21cが第1処理MT1を実行している間に、第1待合せ処理W1中の第2コア21dがバス21eへアクセスすることを抑制可能な並列プログラム21a1にできる。よって、コンピュータ10は、第1コア21cと第2コア21dとでバス21eへのアクセスが競合することを低減可能な並列プログラム21a1にできる。
さらに、コンピュータ10は、並列プログラム21a1から待合せ処理の場所を検出し、その待合せ処理における待ち時間を算出する。そして、コンピュータ10は、この待ち時間に応じて、nop命令の回数を決定するため、待ち時間が長くなることを抑制可能な並列プログラム21a1とすることができる。同様に、自動並列化コンパイラ1は、待ち時間が長くなることを抑制可能な並列プログラム21a1とすることができる。
また、上記のように、各処理MT1〜MT7を並列化する際には、各処理MT1〜MT7の処理時間の情報を解析してスケジューリングする。このため、待合せ処理を実行している際に、他のコアで実行されている処理MTが解っている。つまり、あるコアが、他コアで処理MTの実行が完了を待っている場合、他コアが実行している処理MTが解っている。よって、並列化方法では、自コアがどれだけ待たされるかを計算することができる。コンピュータ10は、この計算結果を利用して、nop命令の回数を自動的に調整するものである。従って、コンピュータ10は、容易に、上記のような並列プログラム21a1とすることができる。また、自動並列化コンパイラ1は、コンピュータ10と同様の効果を奏することができる。
また、マルチコアプロセッサ21は、以上のように生成された並列プログラム21a1を実行するものである。つまり、各コア21c、21dの夫々は、自身に割り振られた処理MTと、待合せ処理と、抑制処理を実行する。このため、各コア21c、21dの夫々は、バス21eへのアクセスの競合が減り且つ待ち時間が長くなることを抑制できる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
自動並列化コンパイラ1は、自コアに割り振られた処理MTの実行が完了してから、予め設定した条件を満たすまで自コアによるバス21eへのアクセスを禁止する抑制処理を追加するものであってもよい(追加手順)。このように、自動並列化コンパイラ1は、予め設定した条件を満たすまで自コアによるバス21eへのアクセスを禁止することで、自コアによるバス21eへのアクセスを抑制時間の間だけ禁止する抑制処理を追加してもよい。
同様に、コンピュータ10は、自コアに割り振られた処理MTの実行が完了してから、予め設定した条件を満たすまで自コアによるバス21eへのアクセスを禁止する抑制処理を追加するものであってもよい(追加部)。このように、コンピュータ10は、予め設定した条件を満たすまで自コアによるバス21eへのアクセスを禁止することで、自コアによるバス21eへのアクセスを抑制時間の間だけ禁止する抑制処理を追加してもよい。
よって、車載装置20は、上記のように抑制処理が追加された並列プログラム21a1を備えていてもよい。
また、自動並列化コンパイラ1は、自コアに割り振られた処理MTの実行が完了してからの経過時間が、条件として予め設定した時間に達するまで自コアによるバス21eへのアクセスを禁止する抑制処理を追加するものであってもよい(追加手順)。このように、自動並列化コンパイラ1は、予め設定した時間に達するまで自コアによるバス21eへのアクセスを禁止することで、自コアによるバス21eへのアクセスを禁止する抑制処理を追加してもよい。
同様に、コンピュータ10は、自コアに割り振られた処理MTの実行が完了してからの経過時間が、条件として予め設定した時間に達するまで自コアによるバス21eへのアクセスを禁止する抑制処理を追加するものであってもよい(追加部)。このように、コンピュータ10は、予め設定した時間に達するまで自コアによるバス21eへのアクセスを禁止することで、自コアによるバス21eへのアクセスを禁止する抑制処理を追加してもよい。
よって、車載装置20は、上記のように抑制処理が追加された並列プログラム21a1を備えていてもよい。
また、自動並列化コンパイラ1は、自コアに割り振られた処理MTの実行が完了してからの自コアの動作タイミングが、条件として予め設定した回数に達するまで自コアによるバス21eへのアクセスを禁止する抑制処理を追加するものであってもよい(追加手順)。このように、自動並列化コンパイラ1は、動作タイミングが予め設定した回数に達するまで自コアによるバス21eへのアクセスを禁止することで、自コアによるバス21eへのアクセスを禁止する抑制処理を追加してもよい。なお、動作タイミングとは、クロック信号に同期して動作するタイミングである。
同様に、コンピュータ10は、自コアに割り振られた処理MTの実行が完了してからの自コアの動作タイミングが、条件として予め設定した回数に達するまで自コアによるバス21eへのアクセスを禁止する抑制処理を追加するものであってもよい(追加部)。このように、コンピュータ10は、動作タイミングが予め設定した回数に達するまで自コアによるバス21eへのアクセスを禁止することで、自コアによるバス21eへのアクセスを禁止する抑制処理を追加してもよい。
よって、車載装置20は、上記のように抑制処理が追加された並列プログラム21a1を備えていてもよい。
1 自動並列化コンパイラ、2 比率情報、10 コンピュータ、10e 算出部、10f コード生成部、11 ディスプレイ、12 HDD、13 CPU、14 ROM、15 RAM、16 入力装置、17 読取部、18 記憶媒体、20 車載装置、21 マルチコアプロセッサ、21a ROM、21a1 並列プログラム、21b RAM、21c 第1コア、21d 第2コア、21e バス、22 通信部、23 センサ部、24 入出力ポート

Claims (15)

  1. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT1〜MT7)から、共通のバス(21e)にアクセスする複数の前記コア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する並列化方法であって、
    前記並列プログラムは、自コアに割り振られた前記処理の実行が完了した場合に、他コアに割り振られた前記処理の実行が完了するのを待って、自コアに割り振られた次の前記処理を実行させる同期処理を含むものであり、
    前記並列プログラムから前記同期処理が行われる場所を検出する検出手順(S10)と、
    検出された前記同期処理において、前記自コアに割り振られた前記処理の実行が完了してから、前記他コアに割り振られた前記処理の実行が完了するまでの待ち時間を算出する算出手順(S11、S12)と、
    前記自コアが待っている間に前記自コアによる前記バスへのアクセスを抑制する抑制処理を、前記並列プログラムに追加する手順であり、算出された前記待ち時間に応じて前記抑制処理の実行時間である抑制時間を決定し、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理を追加する追加手順(S13)と、を備えている並列化方法。
  2. 前記追加手順では、前記抑制処理として、前記自コアに対して前記バスへのアクセスを禁止する禁止命令を追加するものであり、前記抑制時間に対応した回数の前記禁止命令を追加する請求項1に記載の並列化方法。
  3. 前記追加手順では、前記自コアに割り振られた前記処理の実行が完了してから、予め設定した条件を満たすまで前記自コアによる前記バスへのアクセスを禁止することで、前記抑制時間の間、前記自コアによる前記バスへのアクセスを禁止する前記抑制処理を追加する請求項1に記載の並列化方法。
  4. 前記追加手順では、前記自コアに割り振られた前記処理の実行が完了してからの経過時間が、前記条件として予め設定した時間に達するまで前記自コアによる前記バスへのアクセスを禁止することで、前記抑制時間の間、前記自コアによる前記バスへのアクセスを禁止する前記抑制処理を追加する請求項3に記載の並列化方法。
  5. 記追加手順では、前記自コアに割り振られた前記処理の実行が完了してからの前記自コアの動作タイミングが、前記条件として予め設定した回数に達するまで前記自コアによる前記バスへのアクセスを禁止することで、前記抑制時間の間、前記自コアによる前記バスへのアクセスを禁止する前記抑制処理を追加する請求項3に記載の並列化方法。
  6. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT1〜MT7)から、共通のバス(21e)にアクセスする複数の前記コア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成するコンピュータを備えた並列化ツールであって、
    前記並列プログラムは、自コアに割り振られた前記処理の実行が完了した場合に、他コアに割り振られた前記処理の実行が完了するのを待って、自コアに割り振られた次の前記処理を実行させる同期処理を含むものであり、
    前記並列プログラムから前記同期処理が行われる場所を検出する検出部(S10)と、
    検出された前記同期処理において、前記自コアに割り振られた前記処理の実行が完了してから、前記他コアに割り振られた前記処理の実行が完了するまでの待ち時間を算出する算出部(S11、S12)と、
    前記自コアが待っている間に前記自コアによる前記バスへのアクセスを抑制する抑制処理を、前記並列プログラムに追加するものであり、算出された前記待ち時間に応じて前記抑制処理の実行時間である抑制時間を決定し、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理を追加する追加部(S13)と、を備えている並列化ツール。
  7. 前記追加部では、前記抑制処理として、前記自コアに対して前記バスへのアクセスを禁止する禁止命令を追加するものであり、前記抑制時間に対応した回数の前記禁止命令を追加する請求項6に記載の並列化ツール。
  8. 前記追加部では、前記自コアに割り振られた前記処理の実行が完了してから、予め設定した条件を満たすまで前記自コアによる前記バスへのアクセスを禁止することで、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理を追加する請求項6に記載の並列化ツール。
  9. 前記追加部では、前記自コアに割り振られた前記処理の実行が完了してからの経過時間が、前記条件として予め設定した時間に達するまで前記自コアによる前記バスへのアクセスを禁止することで、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理を追加する請求項8に記載の並列化ツール。
  10. 前記追加部では、前記自コアに割り振られた前記処理の実行が完了してからの前記自コアの動作タイミングが、前記条件として予め設定した回数に達するまで前記自コアによる前記バスへのアクセスを禁止することで、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理を追加する請求項8に記載の並列化ツール。
  11. 共通のバス(21e)にアクセスする複数のコア(21c、21d)を有するマルチコアマイコン(21)と、前記コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT1〜MT7)から前記マルチコアマイコン用に並列化されたものであり複数の前記処理が前記マルチコアマイコンの異なる前記コア用に割り振られた並列プログラム(21a1)と、を備えた車載装置であって、
    前記並列プログラムは、
    自コアに割り振られた前記処理の実行が完了した場合に、他コアに割り振られた前記処理の実行が完了するのを待って、自コアに割り振られた次の前記処理を実行させる同期処理を含むものであり、
    前記並列プログラムから前記同期処理が行われる場所が検出され、
    検出された前記同期処理において、前記自コアに割り振られた前記処理の実行が完了してから、前記他コアに割り振られた前記処理の実行が完了するまでの待ち時間が算出され、
    前記並列プログラムには、前記自コアが待っている間に前記自コアによる前記バスへのアクセスを抑制時間の間禁止する抑制処理が追加されており、前記抑制処理の実行時間である前記抑制時間が、算出された前記待ち時間に応じて決定されており
    複数の前記コアの夫々は、自身に割り振られた前記処理と、前記同期処理と、前記抑制処理を実行する車載装置。
  12. 前記並列プログラムは、前記抑制処理として、前記自コアに対して前記バスへのアクセスを禁止する禁止命令が追加されており、前記抑制時間に対応した回数の前記禁止命令が追加されている請求項11に記載の車載装置。
  13. 前記並列プログラムは、前記自コアに割り振られた前記処理の実行が完了してから、予め設定した条件を満たすまで前記自コアによる前記バスへのアクセスを禁止させることで、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理が追加されている請求項11に記載の車載装置。
  14. 前記並列プログラムは、前記自コアに割り振られた前記処理の実行が完了してからの経過時間が、前記条件として予め設定した時間に達するまで前記自コアによる前記バスへのアクセスを禁止させることで、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理が追加されている請求項13に記載の車載装置。
  15. 前記並列プログラムは、前記自コアに割り振られた前記処理の実行が完了してからの前記自コアの動作タイミングが、前記条件として予め設定した回数に達するまで前記自コアによる前記バスへのアクセスを禁止させることで、前記自コアによる前記バスへのアクセスを前記抑制時間の間禁止する前記抑制処理が追加されている請求項13に記載の車載装置。
JP2015201663A 2015-10-12 2015-10-12 並列化方法、並列化ツール、車載装置 Active JP6617511B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015201663A JP6617511B2 (ja) 2015-10-12 2015-10-12 並列化方法、並列化ツール、車載装置
DE102016219721.5A DE102016219721A1 (de) 2015-10-12 2016-10-11 Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2017076156A JP2017076156A (ja) 2017-04-20
JP6617511B2 true JP6617511B2 (ja) 2019-12-11

Family

ID=58405647

Family Applications (1)

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

Country Status (2)

Country Link
JP (1) JP6617511B2 (ja)
DE (1) DE102016219721A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108806235B (zh) * 2017-05-03 2020-11-06 南京交通职业技术学院 按需服务的智能公交调度方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Also Published As

Publication number Publication date
DE102016219721A1 (de) 2017-04-13
JP2017076156A (ja) 2017-04-20

Similar Documents

Publication Publication Date Title
Schranzhofer et al. Timing analysis for TDMA arbitration in resource sharing systems
US8612978B2 (en) Code execution utilizing single or multiple threads
KR101738641B1 (ko) 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
US9207977B2 (en) Systems and methods for task grouping on multi-processors
JP5773065B2 (ja) スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法
JP6427054B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
EP2420930A2 (en) Apparatus and method for thread scheduling and lock acquisition order control based on deterministic progress index
CA2433379A1 (en) Modulo scheduling of multiple instruction chains
JP2009151645A (ja) 並列処理装置及びプログラム並列化装置
WO2020121840A1 (ja) 演算制御装置
US20170364341A1 (en) Parallelization method, parallelization tool, and in-vehicle device
JP2017107448A (ja) 並列化方法、並列化ツール、車載装置
JP6617511B2 (ja) 並列化方法、並列化ツール、車載装置
JP6427055B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP5726006B2 (ja) タスクおよびリソースのスケジューリング装置及びその方法並びに制御装置
US20130117757A1 (en) Method and apparatus for scheduling application programs
JP5614699B2 (ja) マルチコアシステムのためのタスク割り当て関連方法、その装置、そのシステム、及びそのプログラム
CN116880986A (zh) 任务调度方法、装置、车载控制器、电子设备和存储介质
JP6428557B2 (ja) 並列化方法、並列化ツール
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
Copic et al. Efficient sporadic task handling in parallel AUTOSAR applications using runnable migration
KR101733339B1 (ko) 사이버 물리 시스템을 위한 보안 제약 사항을 포함하는 실시간 스케줄링 장치 및 방법
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
CN112363816B (zh) 嵌入式多核操作系统确定性调度方法、系统及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191028

R151 Written notification of patent or utility model registration

Ref document number: 6617511

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