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

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

Info

Publication number
JP2019191870A
JP2019191870A JP2018083128A JP2018083128A JP2019191870A JP 2019191870 A JP2019191870 A JP 2019191870A JP 2018083128 A JP2018083128 A JP 2018083128A JP 2018083128 A JP2018083128 A JP 2018083128A JP 2019191870 A JP2019191870 A JP 2019191870A
Authority
JP
Japan
Prior art keywords
data
cores
memory
access
processing units
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
JP2018083128A
Other languages
English (en)
Other versions
JP7059776B2 (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 JP2018083128A priority Critical patent/JP7059776B2/ja
Priority to DE102019205674.1A priority patent/DE102019205674A1/de
Publication of JP2019191870A publication Critical patent/JP2019191870A/ja
Application granted granted Critical
Publication of JP7059776B2 publication Critical patent/JP7059776B2/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/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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
    • 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

Landscapes

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

Abstract

【課題】並列プログラムの実行時における複数のコアによるメモリへのアクセス時間を全体として短縮させることが可能な並列プログラムを生成する。【解決手段】格納メモリ決定部10hは、コア割付及びスケジューリング部10dら各タスクの複数の処理単位の複数のコアへの割り付け情報を取得し、データアクセス解析部10gから複数の処理単位がアクセスするデータに関するデータアクセス情報を取得し、タスク実行頻度解析部10fから各タスクの実行頻度を示す実行頻度情報を取得する。格納メモリ決定部10hは、それらの情報に加えて、複数のコアによる複数のメモリの各々へのアクセス必要時間を示すアクセスレイテンシ情報2を用いることで、複数のコアによるデータへのアクセス時間が全体として短縮されるように、複数のメモリの中から、データを格納するメモリを決定する。【選択図】図2

Description

本発明は、シングルコアマイコン用のシングルプログラムからマルチコアマイコン用の並列プログラムを生成する並列化方法と並列化ツール、及びシングルプログラムから生成された並列プログラムを実行するマルチコアマイコンに関する。
従来、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として、特許文献1に開示された並列化コンパイル方法が知られている。
この並列化コンパイル方法では、シングルプログラムのソースコードの字句解析や構文解析を行って中間言語に展開し、この中間言語を用いて、複数のマクロタスク(処理単位)の依存関係の解析や最適化等を行う。また、従来の並列化コンパイル方法では、各マクロタスクの依存関係やマクロタスク毎の実行時間を基にコアへの割り付けやスケジューリングを行って並列プログラムを生成する。
特開2015−1807号公報
並列プログラムを実行するマルチコアマイコンが、複数のコアによってアクセス可能な、複数のRAMや複数のROMなどの複数のメモリを有し、かつ、複数のコアによる複数のメモリへのアクセス必要時間(アクセスレイテンシ)が異なる場合、データをどのメモリに格納するかに応じて、並列プログラムの実行時間に差が生じることが考えられる。例えば、第1コアと第2コアとが、割り付けられた処理単位をそれぞれ実行したとき、第1コアからアクセスする頻度が第2コアからアクセスする頻度よりも高いデータを、第1コアからのアクセス必要時間が第2コアからのアクセス必要時間よりも長いメモリに格納した場合、アクセス頻度の高い第1コアからのアクセス時間が長くかかることに起因して、並列プログラムの実行時間が長くなってしまう。
本発明は、上述した点に鑑みてなされたものであり、並列プログラムの実行時における複数のコアによるメモリへのアクセス時間を全体として短縮させることが可能な並列プログラムを生成する並列化方法と並列化ツール、及びその並列プログラムを実行するマルチコアマイコンを提供することを目的とする。
上記目的を達成するために本開示の一つは、
コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(C0、C1、C2)と複数のコアがアクセス可能な複数のメモリ(L0、L1、L2、G0、G1)とを有し、当該複数のメモリは複数のコアによるアクセスに要するアクセス必要時間が異なるメモリを含むマルチコアマイコン(20)用の並列プログラム(18a)を生成する並列化方法であって、
シングルプログラムに含まれる、複数の処理単位からなるタスク毎に、複数の処理単位の依存関係に基づき、複数の処理単位の前記複数のコアへの割り付けと実行順序とを決定し、この決定した複数のコアへの割り付け及び実行順序に従って複数の処理単位が実行されるように並列プログラムを生成する並列プログラム生成手順(10a〜10e)と、
複数の処理単位の複数のコアへの割り付け情報、複数の処理単位がアクセスするデータに関するデータアクセス情報、タスクの実行頻度を示す実行頻度情報、及び複数のコアによる複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報に基づき、複数のコアによるデータへのアクセス時間が全体として短縮されるように、複数のメモリの中から、データを格納するメモリを決定する格納メモリ決定手順(10h)と、
格納メモリ決定手順によって決定されたデータとその格納先のメモリとの関係を示すメモリマップ(18b)を生成するメモリマップ生成手順(10i)と、を備える。
本開示の並列化方法によれば、格納メモリ決定手順において、複数の処理単位の複数のコアへの割り付け情報、複数の処理単位がアクセスするデータに関するデータアクセス情報、タスクの実行頻度を示す実行頻度情報、及び複数のコアによる複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報を用いることで、複数のコアによるデータへのアクセス時間が全体として短縮されるように、複数のメモリの中から、データを格納するメモリを決定することが可能になる。
そして、本開示の並列化方法によれば、メモリマップ生成手順において、決定されたデータとその格納先のメモリとの関係を示すメモリマップが生成される。このメモリマップを利用することにより、マルチコアマイコンにおいて、そのメモリマップに含まれるデータと格納先メモリとの関係を満たすように、各データを格納するメモリを定めることができる。その結果、マルチコアマイコンの複数のコアによるデータのアクセス時間を全体として短縮することができ、ひいては、並列プログラムの実行時間の短縮化を図ることができる。
本開示の他の一つは、
コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(C0、C1、C2)と複数のコアがアクセス可能な複数のメモリ(L0、L1、L2、G0、G1)とを有し、当該複数のメモリは複数のコアによるアクセスに要するアクセス必要時間が異なるメモリを含むマルチコアマイコン(20)用の並列プログラム(18a)を生成する並列化ツールであって、
シングルプログラムに含まれる、複数の処理単位からなるタスク毎に、複数の処理単位の依存関係に基づき、複数の処理単位の複数のコアへの割り付けと実行順序とを決定し、この決定した複数のコアへの割り付け及び実行順序に従って複数の処理単位が実行されるように並列プログラムを生成する並列プログラム生成部(10a〜10e)と、
複数の処理単位の複数のコアへの割り付け情報、複数の処理単位がアクセスするデータに関するデータアクセス情報、タスクの実行頻度を示す実行頻度情報、及び複数のコアによる複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報に基づき、複数のコアによるデータへのアクセス時間が全体として短縮されるように、複数のメモリの中から、データを格納するメモリを決定する格納メモリ決定部(10h)と、
格納メモリ決定部によって決定されたデータとその格納先のメモリとの関係を示すメモリマップ(18b)を生成するメモリマップ生成部(10i)と、を備える
本開示の並列化ツールによれば、格納メモリ決定部が、複数の処理単位の複数のコアへの割り付け情報、複数の処理単位がアクセスするデータに関するデータアクセス情報、タスクの実行頻度を示す実行頻度情報、及び複数のコアによる複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報を用いることで、複数のコアによるデータへのアクセス時間が全体として短縮されるように、複数のメモリの中から、データを格納するメモリを決定することが可能になる。
そして、メモリマップ生成部が、決定されたデータとその格納先のメモリとの関係を示すメモリマップを生成する。このメモリマップを利用することにより、マルチコアマイコンにおいて、そのメモリマップに含まれるデータと格納先メモリとの関係を満たすように、各データを格納するメモリを定めることができる。その結果、マルチコアマイコンの複数のコアによるデータのアクセス時間を全体として短縮することができ、ひいては、並列プログラムの実行時間の短縮化を図ることができる。
本開示の他の一つは、
コアが一つであるシングルコアマイコン用のシングルプログラムから生成された、複数のコア(C0、C1、C2)を有するマルチコアマイコン(20)用の並列プログラム(18a)を実行するマルチコアマイコンであって、
複数のコアがアクセス可能な複数のメモリ(L0、L1、L2、G0、G1)を有し、当該複数のメモリは複数のコアによるアクセスに要するアクセス必要時間が異なるメモリを含み、
並列プログラムは、シングルプログラムに含まれる、複数の処理単位からなるタスク毎に、複数の処理単位の依存関係に基づき、複数の処理単位の複数のコアへの割り付けと実行順序とが決定され、この決定された複数のコアへの割り付け及び実行順序に従って複数の処理単位が実行されるように生成されたものであり、
複数のコアが、それぞれ割り付けられた処理単位の実行のためにデータにアクセスする際、そのアクセス対象となるメモリは、複数の処理単位の複数のコアへの割り付け情報、複数の処理単位がアクセスするデータに関するデータアクセス情報、タスクの実行頻度を示す実行頻度情報、及び複数のコアによる複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報に基づき、複数のコアによるデータへのアクセス時間が全体として短縮されるように、複数のメモリの中から、データを格納するメモリが決定され、その決定されたデータと格納先のメモリとの関係を示すように生成されたメモリマップ(18b)に従って定められたメモリである。
メモリマップには、複数のコアが、それぞれ割り付けられた処理単位の実行のためにデータにアクセスする際に、そのデータを格納するための最適なメモリが定められている。従って、このメモリマップを利用することにより、マルチコアマイコンにおいて、そのメモリマップに含まれるデータと格納先メモリとの関係を満たすように、各データを格納するメモリを定めることができる。その結果、マルチコアマイコンの複数のコアによるデータのアクセス時間を全体として短縮することができ、ひいては、並列プログラムの実行時間の短縮化を図ることができる。
上記括弧内の参照番号は、本開示の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら発明の範囲を制限することを意図したものではない。
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
実施形態における、自動並列化ツールとしてのコンピュータの概略構成を示すブロック図である。 実施形態における、自動並列化ツールとしてのコンピュータの機能を示すブロック図である。 各タスクの処理単位を複数のコアに割り付けたコア割付情報の一例を示す図である。 データアクセス解析部によって生成される、各タスクの処理単位によってアクセスされるデータに関するデータアクセス情報の一例を示す図である。 マルチコアマイコンにおいて、各コアに対するメモリの配置の一例を示す図である。 各コアから各メモリへのアクセス必要時間を示す、アクセスレイテンシ情報の一例を示す図である。 RAMに格納されるデータについて、格納先となるメモリを決定するとともにメモリマップを作成するための処理を示すフローチャートである。 データROMに格納されるデータについて、格納先となるメモリを決定するとともにメモリマップを作成するための処理を示すフローチャートである。 コードROMに格納されるデータについて、格納先となるメモリを決定するとともにメモリマップを作成するための処理を示すフローチャートである。 単位時間当たりの各処理単位による各データへのアクセス頻度を算出した結果の一例を示す図である。 単位時間当たりの各コアによる各データへのアクセス頻度を算出した結果の一例を示す図である。 アクセスレイテンシ情報を考慮して、各データを各メモリに格納したと仮定した場合の、単位時間当たりのアクセス必要時間の合計を算出した結果の一例を示す図である。
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、並列化ツールとしてのコンピュータ10が、コアが一つであるシングルコアマイコン用のシングルプログラムから、3個のコアC0、C1、C2を有するマルチコアマイコン20用に並列化した並列プログラム18aを生成する例について説明する。なお、マルチコアマイコン20が備えるコアの数は3個に限られず、2個であってもよいし、4個以上であってもよい。
このように、シングルプログラムから並列プログラム18aを生成する背景として、制御の高度化によりプログラム量は年々増加する傾向にあるのに対し、シングルコアマイコンの性能向上には限界があることが挙げられる。つまり、例えばシングルコアマイコンの動作周波数を高めて処理能力を向上しようとしても、動作周波数を高めるにも限界があり、また動作周波数を高めることにより発熱量の増大や消費電力の増加を招いてしまう。このため、コア数の増加により処理能力向上を図るマルチコアマイコン20を適用することが有効と考えられている。
この際、プログラムの開発者が、マルチコアの能力を最大限に発揮させられるように、各コアに適切に処理を割り振ったり、そのスケジューリングも行ったりしなければならないとすると、プログラムの開発負荷が増加してしまう。このようなプログラムの開発負荷を低減するために、シングルプログラムから並列プログラム18aを自動生成することは技術的意義がある。さらに、シングルプログラムから並列プログラム18aを自動生成することにより、シングルプロセッサ用に開発した既存のソフト資産を有効に活用することも可能となる。
まず、図1を参照して、コンピュータ10の構成に関して説明する。コンピュータ10は、並列化方法を実行する並列化ツールに相当し、シングルプログラムから並列プログラム18aを生成するものである。なお、本実施形態では、コンピュータ10は、C言語で記述されたシングルプログラムに基づき、C言語で記述された並列プログラム18aを生成するように構成される。このため、後述するマルチコアマイコン20のROMに記憶され、マルチコアマイコン20によって実行される並列プログラム18a’は、図2に示すように、さらにコンパイラ19によりコンパイルされて、バイナリコードに翻訳されたものとなる。
しかしながら、本発明は、これに限定されない。シングルプログラムは、C言語とは異なるプログラミング言語で記述されていてもよい。また、並列プログラム18aは、例えば、シングルプログラムの解析時に使用する中間言語で記述されていてもよい。あるいは、コンピュータ10は、C言語で記述された並列プログラムと中間言語で記述された並列プログラムとをともに生成してもよい。さらに、コンピュータ10が、コンパイラ19としての機能も取り込み、直接、バイナリコードの並列プログラム18a’を生成してもよい。
コンピュータ10は、図1に示すように、ディスプレイ11、HDD12、CPU13、ROM14、RAM15、入力装置16、読取部17などを備えて構成されている。コンピュータ10は、読取部17により、記憶媒体1に記憶された記憶内容を読み取ることができる。図1に示すように、記憶媒体1には、例えば、自動並列化コンパイラ1aが記憶される。なお、コンピュータ10及び記憶媒体1は、特開2015−1807号公報に記載されたパーソナルコンピュータ100及び記憶媒体180と同様であるため、詳細は、特開2015−1807号公報を参照されたい。
自動並列化コンパイラ1aは、並列プログラム18aを生成するための手順をコンピュータ10に実行させるソフトウエアである。よって、自動並列化コンパイラ1aにより、コンピュータ10は並列化方法を実行可能となる。換言すれば、自動並列化コンパイラ1aは、並列化方法を含むプログラムである。コンピュータ10は、自動並列化コンパイラ1aを実行することで、並列化ツールとして、並列プログラム18aを生成する。
次に、図2を参照して、並列化ツールとしてのコンピュータ10が有する、シングルプログラムから並列プログラム18aを生成するための各機能及び処理手順について説明する。図2は、コンピュータ10の各機能及び処理手順を機能ブロックとして表した図である。図2に示すように、コンピュータ10は、字句解析部10a、構文・意味解析部10b、依存関係解析部10c、コア割付及びスケジューリング部10d、コード生成部10e、タスク実行頻度解析部10f、データアクセス解析部10g、格納メモリ決定部10h、及びメモリマップ生成部10iとしての機能を有している。
本実施形態では、図2に示すように、コンピュータ10には、制御対象機器を制御するためのシングルプログラム全体を一度に解析して並列プログラムを生成するのではなく、独立した処理機能(タスク)毎に分割されたシングルプログラムを対象として、その並列プログラムを生成する。なお、本実施形態により生成される並列プログラム18aは、マルチコアマイコン20において実行されるときの実行速度を早めることができるので、制御対象機器として、例えば、素早い処理速度が求められる、車両に搭載されたエンジンや電動モータとすることが好適である。この場合、マルチコアマイコン20は、車両に搭載されるエンジン制御装置、モータ制御装置、ハイブリッド制御装置などの車載装置として具現化される。
タスク毎に分割されたシングルプログラムは複数の処理単位を含み、その複数の処理単位が実行されることにより、タスク毎の目的とする処理機能を実現することができる。このように複数の処理単位は、目的とする処理機能を実現するために協働するものであり、例えば先の処理単位で処理された変数データを参照する後の処理単位や、先の処理単位の条件分岐によって実行される後の処理単位などを含む。
ここで、処理単位とは、各コアに割り振る際の最小単位であるコア配置単位や、関数をいう。コア配置単位は、処理ブロック、マクロタスク、あるいは単なる処理単位などと言い換えることができる。コア配置単位と関数との関係は、コア配置単位≧関数である。つまり、関数は、コア配置単位自体である場合や、コア配置単位に含まれる親関数やサブ関数の場合がある。
字句解析部10a及び構文・意味解析部10bは、C言語で記述されたシングルプログラムのソースコードを対象として、字句解析や、構文と意味の解析を行い、中間言語に展開する。字句解析部10a及び構文・意味解析部10bによって展開された中間言語は、汎用的な命令を含んでいる。なお、字句解析部10a及び構文・意味解析部10bは、特開2015−1807号公報のFE3に相当するため、詳細は、特開2015−1807号公報を参照されたい。
依存関係解析部10cは、中間言語に展開されたシングルプログラムに含まれる処理単位の依存関係を解析し、並列実行可能な処理単位を抽出する。依存関係には、後に実行される処理単位が先に実行される処理単位で更新された変数データを参照するなどのデータ依存関係と、後に実行される処理単位が先に実行される処理単位の条件分岐先となるなどの制御依存関係とが含まれる。このような依存関係がある複数の処理単位は、依存関係に従う処理順序で実行される必要がある。なお、本実施形態では、上述したようにタスク毎に分割されたシングルプログラムが並列化の対象である。タスク毎に分割されたシングルプログラムに含まれる複数の処理単位は、データ依存関係や制御依存関係を有している。
コア割付及びスケジューリング部10dは、依存関係解析部10cで解析した解析結果に基づき、複数の処理単位を3個のコアC0〜C2に割り付ける(割り振る)。この際、コア割付及びスケジューリング部10dは、例えば、並列実行可能な処理単位が2個以上のコアC0〜C2で並行して実行されるように、複数の処理単位の割り付けを行う。コア割付及びスケジューリング部10dは、各タスクの処理単位の割り付けが終了する毎に、あるいは、すべてのタスクの処理単位の割り付けが完了したときなど、任意のタイミングで、どの処理単位をいずれのコアC0〜C2に割り付けたかに関するコア割付情報を格納メモリ決定部10hに出力する。
図3にコア割付情報の一例を示す。図3に示すコア割付情報は、シングルプログラムに含まれるタスクは、第1タスクと第2タスクの2つのタスクであって、第1タスクには6個の処理単位が含まれており、処理単位ナンバーが「1」の処理単位と、「4」の処理単位とが、コアC0に割り付けられたことを示している。また、処理単位ナンバーが「2」の処理単位と、「5」の処理単位とが、コアC1に割り付けられたことを示している。さらに、処理単位ナンバーが「3」の処理単位と、「6」の処理単位とが、コアC2に割り付けられたことを示している。第2タスクに関しては、4個の処理単位の内、処理単位ナンバーが「1」の処理単位と、「4」の処理単位とが、コアC0に割り付けられ、処理単位ナンバーが「2」の処理単位がコアC1に割り付けられ、処理単位ナンバーが「3」の処理単位がコアC2に割り付けられたことを示している。なお、処理単位ナンバーは、第1タスク及び第2タスクのそれぞれのタスクに含まれる複数の処理単位を区別するために、便宜的に付与したものである。
さらに、コア割付及びスケジューリング部10dは、3個のコアC0〜C2に割り付けられた複数の処理単位のスケジューリングを行う。具体的には、コア割付及びスケジューリング部10dは、各処理単位の実行時間や依存関係に基づいて、3個のコアC0〜C2に割り付けられた各処理単位の実行スケジュールを決定する。なお、依存関係解析部10c、及びコア割付及びスケジューリング部10dは、特開2015−1807号公報のMP5に相当するため、詳細は、特開2015−1807号公報を参照されたい。
コード生成部10eは、コア割付及びスケジューリング部10dによって決定された各コアC0〜C2への割り付け及び実行順序に従って該当するタスクの複数の処理単位が実行されるように、並列プログラムに相当するプログラムコードを生成する。コンピュータ10は、コード生成部10eによって生成されたプログラムコードを並列プログラム21a1として出力する。
タスク実行頻度解析部10fは、並列化の対象となっているタスクのプログラムから、該当するタスクの実行頻度に関する情報を抽出することで、各タスクの実行頻度を解析する。具体的には、タスク実行頻度解析部10fは、タスクの実行頻度情報として、タスクの実行周期を示す情報を抽出する。そして、タスク実行頻度解析部10fは、抽出した実行頻度情報を格納メモリ決定部10hに出力する。
データアクセス解析部10gは、構文・意味解析部10bによって中間言語に展開された、シングルプログラムに含まれる各処理単位が、マルチコアマイコン20のメモリ(RAM、データROM、コードROM)に格納されるデータにアクセスするものであるかどうか、アクセスする場合には、そのアクセス対象となるデータを解析する。そして、データアクセス解析部10gは、すべてのタスクの解析が完了した時点など、任意のタイミングで、その解析結果をデータアクセス情報としてまとめ、格納メモリ決定部10hに出力する。各タスクに含まれる複数の処理単位がアクセスする、マルチコアマイコン20のメモリに格納されるデータには、RAMに格納される変数又は定数データ、データROMに格納される定数データ、及びコードROMに格納される、処理単位として共用される関数データの少なくとも1つが含まれる。データアクセス解析部10gは、RAMに格納されるデータ、データROMに格納されるデータ、及びコードROMに格納されるデータ毎に分けて、データアクセス情報を生成する。
ここで、一例として、マルチコアマイコン20のRAMに格納されるデータを対象として、データアクセス解析部10gによって生成されるデータアクセス情報を図4に示す。図4に示す例おいて、データナンバーの1〜10は、マルチコアマイコン20のRAMに格納されて、並列プログラム18aに含まれるすべてのタスクのいずれかの処理単位によりアクセスされるすべてのデータを対象として、それらのデータを区別するために便宜的に付与された番号である。ただし、データアクセス情報に含まれるデータは、単一の処理単位によってアクセスされるデータを対象から除外し、複数の処理単位によってアクセスされるデータだけに絞り込んでもよい。単一の処理単位によってアクセスされるデータは、その単一の処理単位が割り付けられたコアから最も短いアクセス時間でアクセス可能なRAMに保存されればよいためである。
また、データアクセス情報には、各タスクの、処理単位ナンバーによって区別される各々の処理単位が、データナンバーによって区別されるどのデータにアクセスするかに関する情報が含まれている。例えば、図4に例示するデータアクセス情報には、第1タスクの処理単位ナンバーが「1」の処理単位は、データナンバーが「1」のデータ、「3」のデータ、及び「7」のデータにそれぞれ1回アクセスするとの情報が含まれている。また、第1タスクの処理単位ナンバーが「2」の処理単位は、データナンバーが「2」のデータ、「3」のデータ、「7」のデータ及び「8」のデータにそれぞれ1回アクセスするとの情報が含まれている。データアクセス情報には、第1タスクの他の処理単位及び第2タスクの各処理単位に関しても、同様に、どのデータにアクセスするかの情報が含まれている。
格納メモリ決定部10hには、上述したタスクの実行頻度情報、各処理単位によるデータアクセス情報、及び処理単位のコア割付情報に加えて、図2に示すように、マルチコアマイコン20における、各コアC0〜C2から各メモリへのアクセス必要時間を示すアクセスレイテンシ情報(アクセス必要時間情報)2が入力される。このアクセスレイテンシ情報2は、予め、並列プログラム18a’を実装するマルチコアマイコン20における各コアC0〜C2に対する各メモリの配置に基づき、計算もしくは実測により、各コアC0〜C2から各メモリへのアクセス必要時間を求めてデータ化したものである。
例えば、マルチコアマイコン20が、各コアC0〜C2に対するメモリの配置として、図5に示すようなRAMの配置を有していたとする。具体的には、図5に示す例では、コアC0の近傍にローカルRAML0が配置され、コアC1の近傍にローカルRAML1が配置され、コアC2の近傍にローカルRAML2が配置され、コアC0とコアC1とを結ぶバスに接続されるようにグローバルRAMG0が配置され、コアC0とコアC1との接続バスとコアC2とを結ぶバスに接続されるようにグローバルRAMG1が配置されている。なお、図5では省略しているが、マルチコアマイコン20は、メモリとして、制御に使用する定数データなどを格納する複数のデータROM、及び並列プログラム18aや関数データを格納するための複数のコードROMも有している。これらの複数のデータROM及び複数のコードROMも、各コアC0〜C2からのアクセス必要時間が異なる。
図5に示すような、各コアC0〜C2に対する各メモリL0〜L2、G0〜G1の配置において、各コアC0〜C2から各メモリL0〜L2、G0〜G1へのアクセス必要時間を求め、アクセスレイテンシ情報2としてまとめた結果の一例を図6に示す。なお、図6では、マルチコアマイコン20の命令実行サイクルを時間単位として、それぞれのアクセス必要時間を示している。
図6に示すように、例えば、コアC0が、ローカルRAML0にアクセスする場合には1サイクルに相当する時間で済む。しかし、コアC0が、ローカルRAML1にアクセスする場合には3サイクル、ローカルRAML2にアクセスする場合には5サイクル、グローバルRAMG0にアクセスする場合には2サイクル、グローバルRAMG1にアクセスする場合には4サイクルに相当する時間をそれぞれ要することとなる。このように、一般的に、各コアC0〜C2の近傍に配置されたメモリL0〜L2ほど、該当するコアC0〜C2によるアクセス必要時間は短時間で済む。逆に、各コアC0〜C2から離間して配置されたメモリ(例えば、コアC0に対するメモリL2)ほど、アクセス必要時間は長くなる。このため、例えば、コアC0に割り付けられた処理単位によって高頻度でアクセスされるデータが、ローカルRAML2に格納されたとすると、コアC0からローカルRAML2へのアクセス時間が長くかかるようになってしまい、ひいては、並列プログラム18aの実行時間が長くなってしまうという問題が生じる。
このため、格納メモリ決定部10hは、タスクの実行頻度情報、各処理単位によるデータアクセス情報、各処理単位のコア割付情報、及びアクセスレイテンシ情報2に基づき、複数のコアC0〜C2によるデータへのアクセス時間が全体として短縮されるように、複数のメモリ(例えば、メモリL0〜L2、G0〜G1)の中から、データを格納するメモリを決定する。そして、メモリマップ生成部10iは、格納メモリ決定部10hによって決定されたデータとその格納先のメモリとの関係を示すとともに、格納先メモリにおける各データの格納場所を示すアドレス情報を示すメモリマップ18bを生成する。
並列化ツールとしてのコンピュータ10により生成された並列プログラム18aは、上述したように、コンパイラ19によってコンパイルされ、バイナリコードに翻訳された並列プログラム18a’に変換される。コンパイラ19は、図2に示すように、コンピュータ10から与えられるメモリマップ18bを参照して、メモリマップ18bに含まれるデータと格納先メモリとの関係を満たすように、コンパイル後の並列プログラム18a’が各データを格納するメモリと、そのメモリにおける格納場所を示すアドレスを定める。つまり、コンパイラ19は、格納先のメモリ及び当該メモリのアドレス情報に従って、各データの格納場所を定める。このように、メモリマップ18bを利用することにより、マルチコアマイコン20にて並列プログラム18a’を実行するときに、メモリマップ18bに含まれるデータと格納先メモリとの関係を満たすように、各データを格納するメモリを定めることができる。その結果、マルチコアマイコン20の複数のコアC0〜C2によるデータのアクセス時間を全体として短縮することができ、ひいては、並列プログラム181’の実行時間の短縮化を図ることができる。
なお、データROM及び/又はコードROMに関するメモリマップが生成された場合には、並列プログラム18a’をマルチコアマイコン20のROMに実装する際に、併せて、メモリマップ18bに従って、該当するデータROM及び/又はコードROMの指定されたアドレスに、定数データ及び/又は関数データを格納すればよい。
以下、図7〜図9のフローチャート及び図10〜図12の説明図を参照しつつ、格納メモリ決定部10hが、複数のメモリの中からデータを格納するメモリを決定するとともに、メモリマップ生成部がメモリマップを生成するための処理について詳しく説明する。図7のフローチャートは、RAMに格納されるデータについて、格納先となるメモリを決定するとともにメモリマップを作成するための処理を示す。図8のフローチャートは、データROMに格納されるデータについて、格納先となるメモリを決定するとともにメモリマップを作成するための処理を示す。図9のフローチャートは、コードROMに格納されるデータについて、格納先となるメモリを決定するとともにメモリマップを作成するための処理を示す。
最初に、図7のフローチャートに示す処理について説明する。最初のステップS100では、タスク実行頻度解析部10fから、各タスクの実行頻度情報を取得する。また、コア割付及びスケジューリング部10dから、図3に示すような、各タスクに含まれる処理単位の各コアC0〜C2へのコア割付情報を取得する。さらに、データアクセス解析部10gから、図4に示すような、RAMに格納されるデータのデータアクセス情報を取得する。なお、ステップS100における各情報の取得は、一度にまとめて行われる必要はない。例えば、複数回に分けてそれぞれの情報の一部を取得し、すべての情報が収集できた時点で、それまで取得した情報をまとめることにより、各情報を取得することも可能である。
続くステップS110では、ステップS100にて取得した各タスクの実行頻度情報、コア割付情報、及びデータアクセス情報に基づき、データ毎に、単位時間当たりの各コアC0〜C2からのアクセス頻度を算出する。各コアC0〜C2からのアクセス頻度を算出する具体例を、図10及び図11の説明図を参照して詳しく説明する。
まず、各タスクの実行頻度情報とデータアクセス情報とに基づいて、図10に示すような、単位時間当たりの各処理単位による各データへのアクセス頻度(アクセス回数)を算出する。図10の単位時間当たりの各処理単位による各データへのアクセス頻度は、図4に示した各処理単位の各データへのアクセス情報に基づいて算出されたものである。図4に示すように、第1タスクは実行周期が1ms毎であり、第2タスクは実行周期が4ms毎である。このように第1タスクと第2タスクとでは実行周期が異なり、第1タスクは第2タスクの4倍の頻度で実行される。従って、図4に示される、第1タスクの処理単位によるデータアクセスの回数と、第2タスクの処理単位によるデータアクセスの回数とをそのまま同等に扱うことはできない。
そのため、各タスクの実行周期を利用して、単位時間当たりに、各タスクの処理単位による各データのアクセスの回数を算出する。これにより、各タスクの処理単位による各データへのアクセス回数の持つ意味が同等になる。図10に示す例では、単位時間を8msとしている。単位時間である8msの間に、第1タスクに含まれる処理単位の実行回数は8回となり、第2タスクに含まれる処理単位の実行回数は2回となる。従って、図4に示すデータアクセス情報のアクセス回数が、第1タスクに含まれる処理単位については8倍され、第2タスクに含まれる処理単位については2倍される。これにより、図10に示す単位時間当たりの各処理単位による各データへのアクセス頻度が得られる。
さらに、図10に示すような、単位時間当たりの各処理単位による各データへのアクセス頻度と、図3に示すような、各処理単位の各コアC0〜C2への割付情報とに基づいて、各コア毎に、各データへのアクセス頻度(アクセス回数)をまとめることにより、図11に示すような、単位時間当たりの各コアC0〜C2による各データへのアクセス頻度を算出する。例えば、図3のコア割付情報が得られた場合、第1タスクの処理単位ナンバーが「1」、「4」の処理単位と、第2タスクの処理単位ナンバーが「1」、「4」の処理単位とが、コアC0に割り付けられることになる。単位時間当たりのコアC0からの各データへのアクセス回数を求めるために、コアC0に割り付けられるすべての処理単位(第1タスクの処理単位ナンバーが「1」、「4」の処理単位と、第2タスクの処理単位ナンバーが「1」、「4」の処理単位)による各データへのアクセス回数の総計をデータ毎に求める。同様に、単位時間当たりのコアC1、C2からの各データへのアクセス回数を求めるために、コアC1、C2に割り付けられるすべての処理単位による各データへのアクセス回数の総計をデータ毎に求める。このようにして各コアC0〜C2からの各データへのアクセス回数の総計をまとめることで、図11に示す、単位時間当たりの各コアC0〜C2による各データへのアクセス頻度が得られる。
次に、図7のフローチャートのステップS120では、図6に示すような、各コアC0〜C2から各RAML0、L1、L2、G0、G1にアクセスする必要時間に関するアクセスレイテンシ情報を取得する。続くステップS130では、各データを各RAML0、L1、L2、G0、G1に格納したと仮定した場合の、単位時間当たりのアクセス必要時間の合計を算出する。このアクセス必要時間の合計は、図11の単位時間当たりの各コアからのアクセス頻度と図6のアクセスレイテンシ情報とから算出することができる。
例えば、データナンバーが「1」のデータをRAML0に格納した場合、コアC0からデータナンバーが「1」のデータへのアクセス頻度は18回であり、RAML0へのアクセス必要時間は1サイクルであるため、コアC0からRAML0へのアクセス必要時間の合計は18×1=18(サイクル)となる。また、コアC1とコアC2からRAML0に格納されたデータナンバーが「1」のデータへのアクセス必要時間の合計は、それぞれ、2×3=6(サイクル)、16×5=80(サイクル)となる。従って、データナンバーが「1」のデータをRAML0に格納した場合、各コアC0〜C2からのアクセス必要時間の合計は、18+6+80=104(サイクル)となる。同様にして、データナンバーが「1」のデータが他のRAML1、L2、G0、G1に格納された場合の、各コアC0〜C2からのアクセス必要時間の合計も求めることができる。さらに、他のデータに関しても、各RAML0、L1、L2、G0、G1に格納したと仮定した場合の、単位時間当たりの各コアC0〜C2からのアクセス必要時間の合計を求めて、それらをまとめたものが、図12に示すアクセス必要時間の合計データとなる。
ステップS140では、アクセス必要時間の合計データに基づき、データ毎に、アクセス必要時間の合計が最小となるメモリを、該当データを格納するメモリとして決定する。例えば、図12に示すアクセス必要時間の合計データが得られた場合、データナンバーが「1」のデータに関しては、RAML0とRAMG0とのアクセス必要時間の合計が最も小さい。このため、データナンバーが「1」のデータを格納するメモリは、RAML1(又はRAMG0)に決定する。他のデータナンバーのデータについても、同様にして、該当のデータを格納するメモリを決定することができる。
そして、ステップS150では、ステップS140にて決定した各データと格納先となるRAMとの関係に加え、格納先RAMにおける格納場所のアドレスを決定し、その決定したアドレス情報をメモリマップ18bとして生成する。
以上が、RAMに格納されるデータについて、格納先となるメモリを決定するとともにメモリマップ18bを作成するための処理となる。データROM及びコードROMに格納されるデータに関しても、図8及び図9のフローチャートに示すように、基本的に上述した図7のフローチャートと同様の処理によって、格納先となるメモリを決定するとともにメモリマップ18bを作成することができる。従って、図8及び図9のフローチャートに関しては、詳細な説明を省略する。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
(変形例1)
例えば、上述した実施形態では、マルチコアマイコン20が、RAM、データROM、及びコードRAMをそれぞれ複数備え、RAM、データROM、及びコードRAMに格納されるデータに関して、最適なメモリに格納する例について説明した。しかしながら、マルチコアマイコン20は、RAM、データROM、及びコードROMの少なくとも1種類のメモリについて複数のメモリを備え、それら複数のメモリの中から、データを格納するための最適なメモリを決定するものであってもよい。
(変形例2)
また、上述した実施形態では、データを格納するメモリを決定するために、各データを各メモリに格納したと仮定した場合における、単位時間当たりの各コアC0〜C2からのアクセス必要時間の合計を求め、そのアクセス必要時間の合計が最少となるメモリを選択する例について説明した。しかしながら、データを格納するメモリを決定する手法は、これに限られない。例えば、データ毎に、単位時間当たりのアクセス頻度が最も高いコアを選び、そのコアからのアクセス必要時間が最も短いメモリを、該当するデータを格納するメモリとして決定しても良い。この場合において、単位時間当たりのアクセス頻度が最も高いコアが複数ある場合には、その複数のコアの間にあるグローバルメモリを、該当するデータを格納するメモリとして決定することが好ましい。
(変形例3)
さらに、上述した実施形態では、アクセスレイテンシ情報として、各コアC0〜C2から各メモリへの一種類のアクセス必要時間を用いていた。しかしながら、各コアC0〜C2が各メモリからデータを読み出すためのアクセスを行うときと、各メモリへデータを書き込むためのアクセスを行うときとで、有意なアクセス必要時間の相違が有る場合には、アクセスレイテンシ情報として、読み出し必要時間と書き込み必要時間とを別々に定めてもよい。
(変形例4)
また、上述した実施形態では、マルチコアマイコン20を車載装置として適用する例について説明したが、マルチコアマイコン20の適用対象はこれに限られない。
1…記憶媒体、1a…自動並列化コンパイラ、2…アクセスレイテンシ情報、10…コンピュータ、10a…字句解析部、10b…構文・意味解析部、10c…依存関係解析部、10d…コア割付及びスケジューリング部、10e…コード生成部、10f…タスク実行頻度解析部、10g…データアクセス解析部、10h…格納メモリ決定部、10i…メモリマップ生成部、11…ディスプレイ、12…HDD、13…CPU、14…ROM、15…RAM、16…入力装置、17…読取部、19…コンパイラ、20…マルチコアマイコン

Claims (18)

  1. コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(C0、C1、C2)と前記複数のコアがアクセス可能な複数のメモリ(L0、L1、L2、G0、G1)とを有し、当該複数のメモリは前記複数のコアによるアクセスに要するアクセス必要時間が異なるメモリを含むマルチコアマイコン(20)用の並列プログラム(18a)を生成する並列化方法であって、
    前記シングルプログラムに含まれる、複数の処理単位からなるタスク毎に、前記複数の処理単位の依存関係に基づき、前記複数の処理単位の前記複数のコアへの割り付けと実行順序とを決定し、この決定した前記複数のコアへの割り付け及び実行順序に従って前記複数の処理単位が実行されるように前記並列プログラムを生成する並列プログラム生成手順(10a〜10e)と、
    前記複数の処理単位の前記複数のコアへの割り付け情報、前記複数の処理単位がアクセスするデータに関するデータアクセス情報、前記タスクの実行頻度を示す実行頻度情報、及び前記複数のコアによる前記複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報に基づき、前記複数のコアによる前記データへのアクセス時間が全体として短縮されるように、前記複数のメモリの中から、前記データを格納するメモリを決定する格納メモリ決定手順(10h)と、
    前記格納メモリ決定手順によって決定された前記データとその格納先のメモリとの関係を示すメモリマップ(18b)を生成するメモリマップ生成手順(10i)と、を備える並列化方法。
  2. 前記格納メモリ決定手順は、
    前記複数の処理単位の前記複数のコアへの割り付け情報、複数の処理単位がアクセスするデータに関するデータアクセス情報、及び前記タスクの実行頻度情報に基づいて、単位時間当たりの前記複数のコアによる前記データへのアクセス頻度を算出するアクセス頻度算出手順(S110、S210、S310)を含み、
    前記複数のコアによる前記データへのアクセス頻度と、前記複数のコアによる前記複数のメモリの各々についてのアクセス必要時間情報とに基づき、前記データを格納するメモリを決定する請求項1に記載の並列化方法。
  3. 前記格納メモリ決定手順は、
    前記複数のコアによる前記データへのアクセス頻度と、前記複数のコアによる前記複数のメモリの各々についてのアクセス必要時間情報とに基づき、前記データを格納するメモリとして、前記単位時間当たりの前記複数のコアによるアクセス必要時間の合計が最小となるメモリを選択するメモリ選択手順(S140、S240、S340)を含み、
    前記メモリ選択手順によって選択されたメモリを、前記データを格納するメモリとして決定する請求項2に記載の並列化方法。
  4. 前記複数のコアがアクセスするデータは、RAMに格納される変数又は定数データ、データROMに格納される定数データ、及びコードROMに格納される、前記処理単位として共用される関数データのいずれかを含む請求項1乃至3のいずれかに記載の並列化方法。
  5. 前記マルチコアマイコンには、前記RAM、前記データROM、及び前記コードROMの少なくとも1種類のメモリについて、複数のメモリが設けられている請求項4に記載の並列化方法。
  6. 請求項1乃至5のいずれかに記載の並列化方法によって生成された前記並列プログラムを実行するマルチコアマイコン(20)であって、
    前記マルチコアマイコンの前記複数のコアが、それぞれ割り付けられた前記処理単位の実行のために前記データにアクセスする際、そのアクセス対象となるメモリは、前記メモリマップに従って定められたメモリであるマルチコアマイコン。
  7. コアが一つであるシングルコアマイコン用のシングルプログラムから、複数のコア(C0、C1、C2)と前記複数のコアがアクセス可能な複数のメモリ(L0、L1、L2、G0、G1)とを有し、当該複数のメモリは前記複数のコアによるアクセスに要するアクセス必要時間が異なるメモリを含むマルチコアマイコン(20)用の並列プログラム(18a)を生成する並列化ツールであって、
    前記シングルプログラムに含まれる、複数の処理単位からなるタスク毎に、前記複数の処理単位の依存関係に基づき、前記複数の処理単位の前記複数のコアへの割り付けと実行順序とを決定し、この決定した前記複数のコアへの割り付け及び実行順序に従って前記複数の処理単位が実行されるように前記並列プログラムを生成する並列プログラム生成部(10a〜10e)と、
    前記複数の処理単位の前記複数のコアへの割り付け情報、前記複数の処理単位がアクセスするデータに関するデータアクセス情報、前記タスクの実行頻度を示す実行頻度情報、及び前記複数のコアによる前記複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報に基づき、前記複数のコアによる前記データへのアクセス時間が全体として短縮されるように、前記複数のメモリの中から、前記データを格納するメモリを決定する格納メモリ決定部(10h)と、
    前記格納メモリ決定部によって決定された前記データとその格納先のメモリとの関係を示すメモリマップ(18b)を生成するメモリマップ生成部(10i)と、を備える並列化ツール。
  8. 前記格納メモリ決定部は、
    前記複数の処理単位の前記複数のコアへの割り付け情報、複数の処理単位がアクセスするデータに関するデータアクセス情報、及び前記タスクの実行頻度情報に基づいて、単位時間当たりの前記複数のコアによる前記データへのアクセス頻度を算出するアクセス頻度算出部(S110、S210、S310)を含み、
    前記複数のコアによる前記データへのアクセス頻度と、前記複数のコアによる前記複数のメモリの各々についてのアクセス必要時間情報とに基づき、前記データを格納するメモリを決定する請求項7に記載の並列化ツール。
  9. 前記格納メモリ決定部は、
    前記複数のコアによる前記データへのアクセス頻度と、前記複数のコアによる前記複数のメモリの各々についてのアクセス必要時間情報とに基づき、前記データを格納するメモリとして、前記単位時間当たりの前記複数のコアによるアクセス必要時間の合計が最小となるメモリを選択するメモリ選択部(S140、S240、S340)を含み、
    前記メモリ選択部によって選択されたメモリを、前記データを格納するメモリとして決定する請求項8に記載の並列化ツール。
  10. 前記複数のコアがアクセスするデータは、RAMに格納される変数又は定数データ、データROMに格納される定数データ、及びコードROMに格納される、前記処理単位として共用される関数データのいずれかを含む請求項7乃至9のいずれかに記載の並列化ツール。
  11. 前記マルチコアマイコンには、前記RAM、前記データROM、及び前記コードROMの少なくとも1種類のメモリについて、複数のメモリが設けられている請求項10に記載の並列化ツール。
  12. 請求項7乃至11のいずれかに記載の並列化ツールによって生成された前記並列プログラムを実行するマルチコアマイコン(20)であって、
    前記マルチコアマイコンの前記複数のコアが、それぞれ割り付けられた前記処理単位の実行のために前記データにアクセスする際、そのアクセス対象となるメモリは、前記メモリマップに従って定められたメモリであるマルチコアマイコン。
  13. コアが一つであるシングルコアマイコン用のシングルプログラムから生成された、複数のコア(C0、C1、C2)を有するマルチコアマイコン(20)用の並列プログラム(18a)を実行するマルチコアマイコンであって、
    前記複数のコアがアクセス可能な複数のメモリ(L0、L1、L2、G0、G1)を有し、当該複数のメモリは前記複数のコアによるアクセスに要するアクセス必要時間が異なるメモリを含み、
    前記並列プログラムは、前記シングルプログラムに含まれる、複数の処理単位からなるタスク毎に、前記複数の処理単位の依存関係に基づき、前記複数の処理単位の前記複数のコアへの割り付けと実行順序とが決定され、この決定された前記複数のコアへの割り付け及び実行順序に従って前記複数の処理単位が実行されるように生成されたものであり、
    前記複数のコアが、それぞれ割り付けられた前記処理単位の実行のために前記データにアクセスする際、そのアクセス対象となるメモリは、前記複数の処理単位の前記複数のコアへの割り付け情報、前記複数の処理単位がアクセスするデータに関するデータアクセス情報、前記タスクの実行頻度を示す実行頻度情報、及び前記複数のコアによる前記複数のメモリの各々へのアクセス必要時間を示すアクセス必要時間情報に基づき、前記複数のコアによる前記データへのアクセス時間が全体として短縮されるように、前記複数のメモリの中から、前記データを格納するメモリが決定され、その決定された前記データと格納先のメモリとの関係を示すように生成されたメモリマップ(18b)に従って定められたメモリであるマルチコアマイコン。
  14. 前記マルチコアマイコンは、車両に搭載された車載機器を制御するための車載装置に適用され、前記並列プログラムを実行することで前記車載機器を制御するものである請求項6、12、13のいずれかに記載のマルチコアマイコン。
  15. 前記メモリマップは、前記複数の処理単位の前記複数のコアへの割り付け情報、前記複数の処理単位がアクセスするデータに関するデータアクセス情報、及び前記タスクの実行頻度情報に基づいて、単位時間当たりの前記複数のコアによる前記データへのアクセス頻度が算出され、算出された前記複数のコアによる前記データへのアクセス頻度と前記複数のコアによる前記複数のメモリの各々に対するアクセス必要時間情報とに基づき、前記データを格納するメモリが決定され、その決定内容に従って生成されるものである請求項13又は14に記載のマルチコアマイコン。
  16. 前記複数のコアによる前記データへのアクセス頻度と、前記複数のコアによる前記複数のメモリの各々に対するアクセス必要時間情報とに基づき、前記データを格納するメモリとして、前記単位時間当たりの前記複数のコアによるアクセス必要時間の合計が最小となるメモリが選択され、その選択されたメモリが、前記データを格納するメモリとして決定される請求項15に記載のマルチコアマイコン。
  17. 前記複数のコアがアクセスするデータは、RAMに格納される変数又は定数データ、データROMに格納される定数データ、及びコードROMに格納される、前記処理単位として共用される関数データのいずれかを含む請求項13乃至16のいずれかに記載のマルチコアマイコン。
  18. 前記マルチコアマイコンには、前記RAM、前記データROM、及び前記コードROMの少なくとも1種類のメモリについて、複数のメモリが設けられている請求項17に記載のマルチコアマイコン。
JP2018083128A 2018-04-24 2018-04-24 並列化方法、並列化ツール、及びマルチコアマイコン Active JP7059776B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018083128A JP7059776B2 (ja) 2018-04-24 2018-04-24 並列化方法、並列化ツール、及びマルチコアマイコン
DE102019205674.1A DE102019205674A1 (de) 2018-04-24 2019-04-18 Parallelisierverfahren, Parallelisierwerkzeug und Mehrkern-Microcomputer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018083128A JP7059776B2 (ja) 2018-04-24 2018-04-24 並列化方法、並列化ツール、及びマルチコアマイコン

Publications (2)

Publication Number Publication Date
JP2019191870A true JP2019191870A (ja) 2019-10-31
JP7059776B2 JP7059776B2 (ja) 2022-04-26

Family

ID=68105185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018083128A Active JP7059776B2 (ja) 2018-04-24 2018-04-24 並列化方法、並列化ツール、及びマルチコアマイコン

Country Status (2)

Country Link
JP (1) JP7059776B2 (ja)
DE (1) DE102019205674A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262340A (ja) * 2007-04-11 2008-10-30 Denso Corp デュアルコア向け自動コード生成装置
JP2012247827A (ja) * 2011-05-25 2012-12-13 Ricoh Co Ltd プログラム生成装置、プログラム生成方法及びプログラム
US20160253106A1 (en) * 2015-02-27 2016-09-01 Fujitsu Limited Data deployment determination apparatus, data deployment determination program, and data deployment determination method
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5856122A (en) 1993-08-24 1999-01-05 University Of Alberta Modification of pertussis toxin
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262340A (ja) * 2007-04-11 2008-10-30 Denso Corp デュアルコア向け自動コード生成装置
JP2012247827A (ja) * 2011-05-25 2012-12-13 Ricoh Co Ltd プログラム生成装置、プログラム生成方法及びプログラム
US20160253106A1 (en) * 2015-02-27 2016-09-01 Fujitsu Limited Data deployment determination apparatus, data deployment determination program, and data deployment determination method
JP2016162008A (ja) * 2015-02-27 2016-09-05 富士通株式会社 データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
US20170168790A1 (en) * 2015-12-10 2017-06-15 Denso Corporation Parallelization method, parallelization tool, and in-vehicle apparatus

Also Published As

Publication number Publication date
JP7059776B2 (ja) 2022-04-26
DE102019205674A1 (de) 2019-10-24

Similar Documents

Publication Publication Date Title
US20100229161A1 (en) Compile method and compiler
US20110119660A1 (en) Program conversion apparatus and program conversion method
US10296316B2 (en) Parallelization method, parallelization tool, and in-vehicle apparatus
US20150317140A1 (en) Method and system for parallelization of sequential computer program codes
US11288047B2 (en) Heterogenous computer system optimization
JP2016192153A (ja) 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
Fang et al. Aristotle: A performance impact indicator for the OpenCL kernels using local memory
Arandi et al. Combining compile and run-time dependency resolution in data-driven multithreading
CN113553057A (zh) 一种针对不同架构的gpu进行并行计算的优化系统
US20200249923A1 (en) Information processing device and information processing method
JP2016192152A (ja) 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP7059776B2 (ja) 並列化方法、並列化ツール、及びマルチコアマイコン
WO2021047662A1 (en) Method and apparatus for enabling autonomous acceleration of dataflow ai applications
US20190042389A1 (en) Design assistance device, design assistance method, and recording medium storing design assistance program
JP7095513B2 (ja) マルチコアマイコン、及び車載装置
JP6933001B2 (ja) 並列化方法、並列化ツール
JP7139633B2 (ja) 並列化方法、並列化ツール、及びマルチコアマイコン
Baloukas et al. Mapping embedded applications on MPSoCs: the MNEMEE approach
Menshchikov Scalable semantic virtual machine framework for language-agnostic static analysis
JP6776914B2 (ja) 並列化方法、並列化ツール
JP6558310B2 (ja) 並列化方法、並列化ツール
Yu et al. A compiler-based approach for GPGPU performance calibration using TLP modulation (WIP paper)

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220221

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220328

R151 Written notification of patent or utility model registration

Ref document number: 7059776

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151