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

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

Info

Publication number
JP2017107448A
JP2017107448A JP2015241504A JP2015241504A JP2017107448A JP 2017107448 A JP2017107448 A JP 2017107448A JP 2015241504 A JP2015241504 A JP 2015241504A JP 2015241504 A JP2015241504 A JP 2015241504A JP 2017107448 A JP2017107448 A JP 2017107448A
Authority
JP
Japan
Prior art keywords
address
processes
data
core
accessed
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.)
Pending
Application number
JP2015241504A
Other languages
English (en)
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 JP2015241504A priority Critical patent/JP2017107448A/ja
Priority to US15/350,368 priority patent/US10296316B2/en
Priority to DE102016223939.2A priority patent/DE102016223939A1/de
Publication of JP2017107448A publication Critical patent/JP2017107448A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

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

【課題】依存関係の解析における誤りを抑制しつつ並列プログラムを作成できる並列化方法、並列化ツール、及び依存関係の解析における誤りが抑制された並列プログラムを実行可能な車載装置を提供すること。【解決手段】コンピュータ10は、シングルプログラムにおける複数の処理から並列プログラム21a1を生成する。コンピュータ10は、複数の処理とともにメモリ空間に記憶される複数のデータのうち、各処理が実行される際にアクセスされるデータのメモリ空間におけるアドレスと、各処理が実行される際にアクセスされるデータのシンボル名を抽出する。また、コンピュータ10は、抽出したシンボル名に対して、抽出したシンボル名のデータが記憶されるメモリ空間のアドレスを関連付ける。そして、コンピュータ10は、抽出されたアドレスと関連付けられたアドレスとに基づいて各処理間での依存関係を解析する。【選択図】図1

Description

本発明は、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成された並列プログラムを実装した車載装置に関する。
従来、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献1に開示された並列化コンパイル方法がある。
この並列化コンパイル方法では、シングルプログラムのソースコードを字句解析や構文解析を行って中間言語を生成し、この中間言語を用いて、複数のマクロタスク(以下、処理MT)の依存関係の解析や最適化等を行う。また、並列化コンパイル方法では、各処理MTの依存関係や処理MT毎の実行時間を基にスケジューリングを行って並列プログラムを生成する。
特特開2015−1807号公報
ところで、依存関係の解析では、二つの処理MTが同一のデータにアクセスする内容でない場合、依存関係がないとみなされる。つまり、この二つの処理MTは、並列実行が可能である。
また、処理MTが実行された際にアクセスするデータの指定方法は、記憶領域のアドレスにより指定するアドレス指定と、変数名などのシンボル名により指定するシンボル指定とがある。しかしながら、アドレスが示すデータとシンボル名が示すデータとは、同一であるか否かの判定が難しい。つまり、アドレス指定である処理MTとシンボル指定である他の処理MTとが、同一のデータにアクセスするのか否かを判定することが難しい。このため、依存関係の解析では、アドレス指定の処理MTとシンボル指定の処理MTの依存関係を判定することが困難である。従って、依存関係の解析では、誤りが生じる可能性がある。
本発明は、上記問題点に鑑みなされたものであり、依存関係の解析における誤りを抑制しつつ並列プログラムを作成できる並列化方法、並列化ツール、及び依存関係の解析における誤りが抑制された並列プログラムを実行可能な車載装置を提供することを目的とする。
上記目的を達成するために本発明は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT0〜MT11)から、複数のコア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する並列化方法であって、
複数の処理とともに記憶領域に記憶され各処理が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされるデータの記憶領域におけるアドレスと、各処理が実行される際にアクセスされるデータのシンボル名を抽出する抽出手段(S11、S12)と、
抽出されたシンボル名に対して、抽出されたシンボル名のデータが記憶される記憶領域のアドレスを関連付ける関連付手順(S13)と、
複数の処理のうち並列化可能な処理を決めるために、抽出されたアドレスと関連付けられたアドレスとに基づいて各処理間での依存関係を解析し、同じアドレスにアクセスする二つの処理は依存関係があるとみなし、同じアドレスにアクセスしない二つの処理は依存関係がないとみなす解析手順(S14)と、を備えていることを特徴とする。
このように、本発明は、各処理が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされるデータの記憶領域におけるアドレスと、各処理が実行される際にアクセスされるデータのシンボル名を抽出する。そして、本発明は、シンボル名に対して、シンボル名に対応する記憶領域のアドレスを関連付ける。これによって、各処理が実行される際にシンボル名が指定されてアクセスされるデータに、記憶領域のアドレスが関連付けられる。
そして、本発明は、各処理においてデータを指定しているアドレスに基づいて各処理間での依存関係を解析し、同じデータにアクセスする二つの処理は依存関係があり、同じデータにアクセスしない二つの処理は依存関係がないと解析する。このように、本発明は、アドレスに基づいて、各処理の依存関係を解析できる。このため、本発明は、依存関係の解析における誤りを抑制しつつ並列プログラムを作成できる。
また、本発明のさらなる特徴は、
コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT0〜MT11)から、複数のコア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する、コンピュータを含む並列化ツールであって、
複数の処理とともに記憶領域に記憶され各処理が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされるデータの記憶領域におけるアドレスと、各処理が実行される際にアクセスされるデータのシンボル名を抽出する抽出部(S11、S12)と、
抽出されたシンボル名に対して、抽出されたシンボル名のデータが記憶される記憶領域のアドレスを関連付ける関連付部(S13)と、
複数の処理のうち並列化可能な処理を決めるために、抽出されたアドレスと関連付けられたアドレスとに基づいて各処理間での依存関係を解析し、同じアドレスにアクセスする二つの処理は依存関係があるとみなし、同じアドレスにアクセスしない二つの処理は依存関係がないとみなす解析部(S14)と、を備えている点にある。
これによって、上記と同様に、依存関係の解析における誤りを抑制しつつ並列プログラムを作成できる。
また、本発明のさらなる特徴は、
複数のコア(21c、21d)を有するマルチコアマイコン(21)と、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT0〜MT11)からマルチコアマイコン用に並列化された並列プログラム(21a1)と、を備えた車載装置であって、
並列プログラムは、
複数の処理とともに記憶領域に記憶され各処理が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされるデータの記憶領域におけるアドレスと、各処理が実行される際にアクセスされるデータのシンボル名を抽出され、
抽出されたシンボル名に対して、抽出されたシンボル名のデータが記憶される記憶領域のアドレスが関連付けられ、
複数の処理のうち並列化可能な処理を決めるために、抽出されたアドレスと関連付けられたアドレスとに基づいて各処理間での依存関係を解析し、同じアドレスにアクセスする二つの処理は依存関係があるとみなし、同じアドレスにアクセスしない二つの処理は依存関係がないとみなされ、
複数の処理の夫々が各コアに割り当てられており、
マルチコアマイコンは、各コアが自身に割り当てられた処理を実行する点にある。
このように、本発明は、上記のように、依存関係の解析における誤りを抑制しつつ作成された並列プログラムを含んでいる。これによって、本発明は、各処理を最適に実行できる。
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
実施形態におけるコンピュータの概略構成を示すブロック図である。 実施形態における車載装置の概略構成を示すブロック図である。 実施形態におけるコンピュータの機能を示すブロック図である。 実施形態におけるコンピュータの処理を示すフローチャートである。 実施形態におけるメモリ空間の記憶内容とアドレスとの関係を示すイメージ図である。 実施形態における各処理のデータの指定方法を示すイメージ図である。 実施形態におけるシングルプログラムを示すイメージ図である。 実施形態における並列プログラムを示すイメージ図である。 比較例における各処理のデータの指定方法を示すイメージ図である。
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理MT0〜MT11などから第1コア21cと第2コア21dを有するマルチコアプロセッサ21用に並列化した並列プログラム21a1を生成する例を採用する。この処理は、処理ブロックやマクロタスクなどと言い換えることができる。なお、プロセッサは、マイコンと言い換えることができる。よって、マルチコアプロセッサは、マルチコアマイコンと言い換えることができる。
このように、並列プログラム21a1を生成する背景としては、プロセッサの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアプロセッサ21が主流になることなどがあげられる。そして、マルチコアプロセッサ21は、車載装置の分野においても適用が必要となっている。また、並列プログラム21a1としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
なお、並列プログラム21a1を生成する際には、シングルプログラムにおける複数の処理MT0〜MT11の依存関係を解析して、複数の処理MT0〜MT11をマルチコアプロセッサ21の異なるコア21c、21dに割り振る。割り振るは、配置するや、割り当てるや、割り付けると言い替えることもできる。割り当てる際には、複数の処理MT0〜MT11の依存関係を維持しつつ、複数の処理MT0〜MT11の夫々を第1コア21cと第2コア21dとに割り当てる。この点に関しては、特開2015−1807号公報を参照されたい。なお、本実施形態では、一例として、C言語で記述されたシングルプログラムを採用する。しかしながら、本発明は、これに限定されない。シングルプログラムは、C言語とは異なるプログラミング言語で記述されていてもよい。
本実施形態では、図7に示すように、シングルプログラムの一例として、第1処理MT0〜第12処理MT11を備えたものを採用する。そして、本実施形態では、図8に示すように、第1処理MT0〜第12処理MT11の夫々を第1コア21cと第2コア21dの夫々に割り付ける。
この複数の処理MT0〜MT11は、お互いに依存関係がある処理MTが含まれている。図7では、依存関係がある処理同士を矢印で繋いで図示している。よって、本実施形態では、例えば第1処理MT0と第4処理MT3などが、依存関係がある。
依存関係とは、例えば、ある処理が、自身よりも先に実行された処理で更新されたデータを参照するなどの関係である。つまり、複数の処理は、シングルプログラムにおける実行順序が先である先行処理と、先行処理の実行が完了した後に実行させる後行処理とを含んでいる。そして、後行処理は、先行処理の影響を受ける処理であり、例えば、先行処理で内容が更新される可能性があるデータなどを用いる処理である。更に詳述するならば、先行処理も後行処理もデータを参照するだけの場合、2つの処理順序を入れ替えても処理結果が変わらず、このような場合には依存関係はないと言える。依存関係は依存性とも言える。
ここで、図1を用いて、コンピュータ10の構成に関して説明する。コンピュータ10は、並列化方法を実行する並列化ツールに相当し、並列プログラム21a1を生成する。コンピュータ10は、ディスプレイ11、HDD12、CPU13、ROM14、RAM15、入力装置16、読取部17などを備えて構成されている。なお、HDDは、hard disk driveの略称である。CPUは、Central Processing Unitの略称である。ROMは、Read Only Memoryの略称である。RAMは、Random Access Memoryの略称である。
コンピュータ10は、記憶媒体18に記憶された記憶内容を読み取り可能に構成されている。この記憶媒体18には、自動並列化コンパイラ1が記憶されている。自動並列化コンパイラ1は、並列プログラム21a1を生成するための手順を含んでいる。よって、自動並列化コンパイラ1は、並列化方法に相当する。つまり、自動並列化コンパイラ1は、並列化方法を含むプログラムである。コンピュータ10は、自動並列化コンパイラ1を実行することで、並列プログラム21a1を生成する。
コンピュータ10及び記憶媒体18の構成は、特開2015−1807号公報に記載されたパーソナルコンピュータ100及び記憶媒体180を参照されたい。なお、自動並列化コンパイラ1は、特開2015−1807号公報に記載されたものに加えて、抽出手段と関連付手順などを含んでいる。抽出手順と関連付手順に関しては、後程説明する。また、自動並列化コンパイラ1は、特開2015−1807号公報に記載されたものと、依存関係の解析の内容が異なる。
さらに、コンピュータ10は、図3に示すように、機能ブロックとして、字句解析部10a、関連付部10b、依存関係解析部10cを備えている。コンピュータ10は、マイコンレジスタ情報41及び第1メモリマッピング情報42を取得可能に構成されている。そして、コンピュータ10は、C言語で記述されたソースコードであるシングルプログラムから、C言語で記述されたソースコードである並列プログラム21a1を生成する。コンピュータ10の処理動作に関しては、後程詳しく説明する。なお、図示や説明は省略するが、コンピュータ10は、周知の見積部、コア割付部、スケジューリング部などを備えて構成されている。また、字句解析部10aに関しても周知であるため、詳しい説明は省略する。
マイコンレジスタ情報41は、レジスタ21eの情報である。レジスタ21eは、後程説明するが、入力ポートレジスタや出力ポートレジスタなどを含むものである。言い換えると、レジスタ21eは、入力ポートレジスタや出力ポートレジスタなどが定義されている。そして、マイコンレジスタ情報41は、レジスタ21eにおける入力ポートレジスタや出力ポートレジスタなどのアドレスを含んでいる。ここでのアドレスは、後程説明するメモリ空間におけるアドレスとも言える。また、本実施形態では、入力ポートレジスタや出力ポートレジスタをなどレジスタ21eの定義をシンボル名として用いる。このため、マイコンレジスタ情報41は、シンボル名とメモリ空間のアドレスとを関連付けるための関連付情報と言える。マイコンレジスタ情報41は、関連付部10bで用いられる。
第1メモリマッピング情報42は、シングルプログラムを第2コンパイラ32でコンパイルして、メモリマッピングした結果である。第2コンパイラ32は、字句解析部、構文意味解析部、アセンブラ展開部などを含んで構成されている。そして、第2コンパイラ32は、C言語で記述されたシングルプログラムをコンパイルしてアセンブリ言語に展開するなどしてバイナリデータ50に変換するとともに第1メモリマッピング情報42を生成する。
第1メモリマッピング情報42は、シングルプログラムのソースコードを暫定的にメモリマッピングした結果であり、変数のメモリマッピング情報である。このため、第1メモリマッピング情報42は、変数と、RAM21bにおける変数が定義された領域のアドレスとが関連付けられた情報と言える。
なお、第2メモリマッピング情報43は、第1メモリマッピング情報42と異なり、並列プログラム21a1のソースコードをメモリマッピングした結果であり、変数のメモリマッピング情報である。この第2メモリマッピング情報43は、第1メモリマッピング情報42と同様の使い方ができる。
メモリ空間の一部(ここではRAM21b)は、後程説明するが、変数名が定義されている。また、本実施形態では、定義された変数の名称(変数名)をシンボル名として用いる。このため、第1メモリマッピング情報42は、シンボル名とメモリ空間のアドレスとを関連付けるための関連付情報と言える。第1メモリマッピング情報42は、関連付部10bで用いられる。
第1コンパイラ31は、字句解析部、構文意味解析部、アセンブラ展開部などを含んで構成されている。第1コンパイラ31と第2コンパイラ32とは、対象のソースコードが並列化前のものと並列化後のもので異なるだけで同一のコンパイラである。そして、第1コンパイラ31は、C言語で記述された並列プログラム21a1をコンパイルしてアセンブリ言語に展開するなどしてバイナリデータに変換する。つまり、C言語で記述された並列プログラム21a1は、第1コンパイラ31によってバイナリデータなどの機械語で構成された並列プログラム21a1に変換される。そして、ROM21aには、バイナリデータで構成された、すなわち各コア21c、21dで実行可能な形式の並列プログラム21a1が記憶される。このように、第1コンパイラ31で変換される前の並列プログラム21a1と、ROM21aに記憶された並列プログラム21a1は、記述方式が異なるだけであり、同等のプログラムと言える。また、第1コンパイラ31は、第2メモリマッピング情報43を生成する。
なお、アセンブリ言語は、ニーモニックとオペランドを含んで構成される。ニーモニックは、第1コア21cや第2コア21dなどの演算部が実行する命令である。オペランドは、ニーモニックの対象を示すものである。
ニーモニックは、例えば、ADD、LD、ST、AND、NOPなどと記述されている。なお、ADDは、加算を示す命令である。LDは、ロードを示す命令である。STはストアを示す命令である。ANDは、論理積を示す命令である。NOPは、何もしないことを意味する命令である。さらに、ニーモニックには、これらの汎用的な命令だけでなく、汎用性が乏しい特殊な命令(以下、特殊命令)もある。この特殊命令とは、あるプロセッサに特有の命令である。よって、特殊命令は、あるプロセッサでは実行可能であるが、他のプロセッサでは実行できないことがある。
第2コンパイラ32は、マルチコアプロセッサ21に対応した構成を有している。言い換えると、第2コンパイラ32は、マルチコアプロセッサ21専用のコンパイラである。よって、第2コンパイラ32は、シングルプログラムをアセンブリ言語に展開する際に、マルチコアプロセッサ21に特有の特殊命令を含むアセンブリ言語に展開できる。この第2コンパイラ32は、マイコン用コンパイラに相当する。
ところで、並列プログラム21a1は、依存関係がある二つの処理MTが別々のコア21c、21dに配置されることもある。よって、並列プログラム21a1は、依存関係がある二つの処理MTが別々のコア21c、21dに配置される場合、他コアに割り振られた処理順序が先の処理MTの実行が完了するのを待って、処理順序が後の処理MTを実行する同期処理を含んでいる。つまり、並列プログラム21a1は、自コアに割り振られた処理MTの実行が完了した場合に、他コアに割り振られた処理MTの実行が完了するのを待って、自コアに割り振られた次の処理MTを実行させる同期処理を含んでいる。そして、ここでの他コアに割り振られた処理MTは、自コアに割り振られた次の処理MTと依存関係があり、自コアに割り振られた次の処理MTよりも実行順序が先である。
このため、第1コア21cと第2コア21dは、同期処理を行うために、自身に割り振られた処理MTの実行が完了した場合、RAM21bにアクセスして、同期待ちであることを示す情報(以下、完了情報)をRAM21bに記憶する。そして、他コアにおける依存関係がある処理MTの実行完了を待っている自コアは、処理MTを実行することなく、定期的にRAM21bにアクセスして、RAM21bに完了情報が記憶されているか否かを確認する。つまり、他コアにおける依存関係がある処理MTの実行完了を待っている自コアは、非動作中に定期的に動作して、RAM21bにアクセスし、完了情報が記憶されているか否かを確認する。このように、第1コア21cと第2コア21dは、お互いに待合せをしながら、言い換えると同期を取りながら、処理MTの実行を行う。よって、同期処理は、待合わせ処理と言うこともできる。なお、並列プログラム21a1は、第1コア21cが実行するプログラムと、第2コア21dが実行するプログラムとを含んでいる。
次に、車載装置20の構成に関して説明する。車載装置20は、図2に示すように、マルチコアプロセッサ21、通信部22、センサ部23、入出力ポート24を備えて構成されている。また、マルチコアプロセッサ21は、ROM21a、RAM21b、第1コア21c、第2コア21d、レジスタ21eを備えて構成されている。車載装置20は、例えば、自動車に搭載されたエンジン制御装置やハイブリッド制御装置などに適用できる。ここでは、一例として、車載装置20をエンジン制御装置に適用した例を採用する。この場合、並列プログラム21a1は、エンジン制御などの自動車制御プログラムと言える。しかしながら、並列プログラム21a1は、これに限定されない。なお、コアは、プロセッサエレメントとも称することができる。
第1コア21cと第2コア21dは、並列プログラム21a1を実行することで、エンジン制御を行う。詳述すると、第1コア21cと第2コア21dは、並列プログラム21a1のうち自身に割り当てられた処理MTを実行するとともに待合せ処理などを実行することでエンジン制御を行う。RAM21b、通信部22、センサ部23、入出力ポート24は、特開2015−1807号公報に記載されたRAM420、通信部430、センサ部450、入出力ポート460を参照されたい。
ROM21a、RAM21b、レジスタ21eは、図5に示すように、一連のアドレス(0x00000000〜0xFFFFFFFF)で管理されたメモリ空間を構成している。メモリ空間は、記憶領域に相当する。ROM21aは、図5に示すように、例えばコードフラッシュ(CodeFlash)とデータフラッシュ(DataFlash)とを含んで構成されている。ROM21aには、コンピュータ10が自動並列化コンパイラ1に従い生成した並列プログラム21a1が書き込まれて記憶されている。具体的には、コードフラッシュには、並列プログラム21a1の関数F1()、F2()、F3()などが記憶されている。関数F1()などは、各処理MTに含まれている。よって、言い換えると、コードフラッシュには、各処理MTが記憶されている。また、データフラッシュには、定数C1、C2、C3などが記憶されている。なお、ROM21aに記憶されている並列プログラム21a1は、上記のようにバイナリデータなどの機械語で構成されている。
RAM21bには、ソフトで変数名が定義されている第5領域65と、ソフトで変数名が定義されていない第6領域66とに区分けすることができる。ここでは、変数名の一例として、V1、V2、V3を採用している。また、変数名が定義されていないデータの一例として、未定義1、未定義2を採用している。この変数名は、上記のようにシンボル名に相当する。なお、第6領域66のデータは、アドレス直値でアクセス可能である。
レジスタ21eは、例えば、入力ポートレジスタや出力ポートレジスタなどを含んで構成されている。よって、レジスタ21eは、データとして、入力値、および出力値が記憶されている。この入力ポートレジスタや出力ポートレジスタのレジスタ名(言い換えるとリソース名)は、上記のようにシンボル名に相当する。なお、レジスタ21eは、第4領域64と称することができる。この第4領域64は、アドレス直値でレジスタ21eを操作可能である。
第4領域64と第5領域65の各データには、各データが記憶されているメモリ空間のアドレスが関連付けられている(関連付手順、関連付部10b)。言い換えると、第4領域64と第5領域65の各データのシンボル名には、各データが記憶されているメモリ空間のアドレスが関連付けられている(関連付手順、関連付部10b)。例えば、入力ポートレジスタには0x00000000、出力ポートレジスタには0x00000004、変数名V1には0x10000000が関連付けられている。なお、第6領域66の各データは、アドレス直値でアクセス可能であるため、各データが記憶されているメモリ空間のアドレスが関連付けられているとも言える。
また、メモリ空間は、第1領域61、第2領域62、第3領域63という区分けができる。第1領域61は、レジスタ21eに相当する領域であり、ソフトによって変化しない部分である。第1領域61は、マイコン予約領域とも言える。第2領域62は、ROM21aとRAM21bに相当する領域であり、ソフトによって変化する部分である。第2領域62は、ユーザー領域とも言える。第3領域63は、RAM21bとレジスタ21eに相当する領域であり、マイコン動作時に書換えられる領域である。
なお、並列プログラム21a1とシングルプログラムとでは、メモリ空間におけるデータ及びプログラム(コード)の配置が異なる。
この点に関して、データとプログラムとに分けて説明する。まず、データに関して説明する。本来、非同期で動作する複数のコアにおいて、シングルプログラムと動作を変えずに処理させるために、データ依存関係がある場合、上記のように同期処理が必要となる。同期処理は、元々シングルプログラムにはなく、並列化する過程で、並列プログラム21a1に追加される。同期処理は、データの読み書きにより複数コア21c,21dの進捗状況を共有する処理であるので、専用のデータが追加定義される。これによって、データは、並列化前後でメモリ空間における配置が異なる。また、通常、マイコンは、コアが増えると、各データを格納するRAMの構成が変化する。このように、RAM構成が違えば最適なデータ配置も異なる。よって、データは、最適となるように再配置することで、並列化前後でメモリ空間における配置が異なる。
次に、プログラムに関して説明する。プログラムは、上記のように、同期処理が追加となるため、並列化前後でメモリ空間における配置が異なる。また、マルチコアプロセッサ21では、各コア21c,21dにシングルプログラムで実行していた関数が割り当てられるため、コール順序が変化し、プログラムの一部が異なるものになる。よって、プログラムは、並列化前後でメモリ空間における配置が異なる。
次に、図4を用いて、コンピュータ10が自動並列化コンパイラ1を実行した際の処理動作に関して説明する。コンピュータ10は、自動並列化コンパイラ1を実行することで並列プログラム21a1を生成する。なお、図4の各ステップSは、自動並列化コンパイラ1における手順に相当する。
ステップS10では、シンボル名のないリソースにアクセスするか否かを判定する。コンピュータ10は、複数の処理MT0〜MT11の夫々が、第4領域64及び第5領域65のデータへのアクセスを指定しているか、第6領域66のデータへのアクセスを指定しているかによって、シンボル名のないリソースにアクセスするか否かを判定する。また、コンピュータ10は、複数の処理MT0〜MT11の夫々が実行された際のアクセス先が、第4領域64及び第5領域65であるか、第6領域66のデータであるかを判定するとも言える。
そして、コンピュータ10は、第4領域64及び第5領域65のデータへのアクセスを指定している処理MTの場合、シンボル名のないリソースにアクセスしないと判定(NO判定)することになり、ステップS11へ進む。また、コンピュータ10は、第6領域66のデータへのアクセスを指定している処理MTの場合、シンボル名のないリソースにアクセスすると判定(YES判定)することになり、ステップS12へ進む。このステップS10は、関連付部10bで行われる処理である。
なお、以下においては、シンボル名によってアクセス先を指定することを単にシンボル指定、アドレスによってアクセス先を指定することを単にアドレス指定と称することもある。
ステップS11では、各処理MTのアクセス先であるシンボル名を抽出する(抽出手段、抽出部)。つまり、コンピュータ10は、複数の処理MT0〜MT11のうち、シンボル指定と判定した各処理MTのアクセス先であるシンボル名を抽出する。一方、ステップS12では、各処理MTのアクセス先であるアドレスを抽出する(抽出手段、抽出部)。つまり、コンピュータ10は、複数の処理MT0〜MT11のうち、アドレス指定と判定した各処理MTのアクセス先であるアドレスを抽出する。このステップS11、S12は、関連付部10bで行われる処理である。このように、コンピュータ10は、複数の処理MT0〜MT11とともにメモリ空間に記憶され各処理MT0〜MT11が実行される際にアクセスされる複数のデータのアドレスとシンボル名を抽出する。
ステップS13では、抽出したシンボル名とアクセスのリストとに基づいて、シンボル名をアドレスに置換する。つまり、コンピュータ10は、抽出されたシンボル名に対して、抽出されたシンボル名のデータが記憶されるメモリ空間のアドレスを関連付ける(関連付手順)。コンピュータ10は、マイコンレジスタ情報41と第1メモリマッピング情報42とを用いて、シンボル名に対してアドレスを関連付ける。これによって、抽出されたシンボル名は、メモリ空間のアドレスに紐付けられる。
これは、シンボル指定の処理MTとアドレス指定の処理MTの両方に関して、依存関係を解析するためである。言い換えると、ステップS13は、シンボル指定の処理MT同士の依存関係の解析、アドレス指定の処理MT同士の依存関係の解析、及びシンボル指定の処理MTとアドレス指定の処理MTの依存関係の解析を行うためである。
よって、依存関係を解析する際に基にするアドレスは、メモリ空間のレジスタ21eにおけるアドレスを含んでいると言える。また、依存関係を解析する際に基にするアドレスは、シングルプログラムをコンパイルして各データをアドレスマッピングした結果におけるアドレスを含んでいると言える。
このように、コンピュータ10は、ステップS11を実行することで、図5に示すように、第4領域64と第5領域65におけるシンボル名を抽出することになる。具体的には、コンピュータ10は、シンボル名として入力ポートレジスタ、出力ポートレジスタ、変数V1〜変数V3を抽出することになる。そして、コンピュータ10は、図5に示すように、ステップS13を実行することで、入力ポートレジスタとアドレス0x00000000とを関連付ける。同様に、コンピュータ10は、出力ポートレジスタとアドレス0x00000004、変数V1とアドレス0x10000000、変数V2とアドレス0x10000004、変数V3とアドレス0x10000008の夫々を関連付ける。
また、コンピュータ10は、ステップS12を実行することで、図5に示すように、第6領域66における未定義1のアドレスとして0x1000000C、未定義2のアドレスとして0x10000010を抽出することになる。
なお、ステップS13は、関連付部10bで行われる処理である。また、本発明は、レジスタ21eにおけるアドレスと、アドレスマッピングした結果におけるアドレスの少なくとも一方を含んでいればよい。
ステップS14では、同じアドレスにアクセスしている処理MT間に依存関係を追加する。つまり、コンピュータ10は、複数の処理MTのうち並列化可能な処理を決めるために、抽出されたアドレスと関連付けられたアドレスとに基づいて各処理間での依存関係を解析し、同じアドレスにアクセスする二つの処理MTは依存関係があるとみなす。なお、コンピュータ10は、同じアドレスにアクセスしない二つの処理MTは依存関係がないとみなす(解析手順)。このステップS14は、依存関係解析部10cで行われる処理である。また、依存関係解析部10cは、解析部に相当する。
ステップS15では、得られた依存関係を基に、各処理MTのスケジューリングを実施する(スケジューリング部)。そして、ステップS16では、スケジューリング結果に従い、並列プログラム21a1を生成する(コア割付部)。
ここで、本発明の効果に関して、図6と、図9に示す比較例と対比しつつ説明する。比較例は、シンボル名とアドレスを関連付ける処理を行わないものである。ここでは、シンボル指定の第2処理MT1と、アドレス指定の第3処理MT2を用いる。第2処理MT1は、実行される際にシンボル名である変数V1を指定するものである。一方、第3処理MT2は、実行される際にアドレスである0x000000AAを指定するものである。さらに、変数V1のデータは、アドレスが0x000000AAであるものとする。
比較例では、第2処理MT1がシンボル名である変数V1を指定しており、第3処理MT2がアドレスである0x000000AAを指定しているため、変数V1と0x000000AAとが同一のデータを示しているのか否かを判断できない。よって、比較例では、第2処理MT1と第3処理MT2との依存関係を解析できない。
これに対して、コンピュータ10は、図6に示すように、シンボル名である変数V1にアドレス0x000000AAを紐付けている。よって、コンピュータ10は、第2処理MT1が指定しているデータのアドレスを把握できる。このため、コンピュータ10は、第2処理MT1が指定しているシンボル名に対応するアドレスと、第3処理MT2が指定しているアドレスとを比較することで、第2処理MT1と第3処理MT2とが同一のデータを指定しているのか否かを判断できる。従って、コンピュータ10は、第2処理MT1と第3処理MT2との依存関係を解析できる。なお、この例の場合、コンピュータ10は、第2処理MT1と第3処理MT2とがアドレス0x000000AAのデータを指定している、すなわち、第2処理MT1と第3処理MT2とが同じデータへのアクセスを指定しているとみなして、依存関係があると判断する。
以上のように、コンピュータ10は、各処理MT0〜MT11が実行される際にアクセスされる複数のデータのうち、各処理MT0〜MT11が実行される際にアクセスされるデータのメモリ空間におけるアドレスを抽出する。さらに、コンピュータ10は、各処理MT0〜MT11が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされるデータのシンボル名を抽出する。つまり、コンピュータ10は、各処理MT0〜MT11でアドレスが指定されている場合はアドレスを抽出し、シンボル名が指定されている場合はシンボル名を抽出する。そして、本発明は、抽出したシンボル名に対して、シンボル名に対応するメモリ空間のアドレスを関連付ける。これによって、各処理MT0〜MT11が実行される際にシンボル名が指定されてアクセスされるデータに、メモリ空間のアドレスが関連付けられる。
そして、コンピュータ10は、各処理MT0〜MT11においてデータを指定しているアドレスに基づいて各処理間での依存関係を解析する。コンピュータ10は、同じデータにアクセスする二つの処理は依存関係があり、同じデータにアクセスしない二つの処理は依存関係がないと解析する。このように、コンピュータ10は、アドレスに基づいて、各処理MT0〜MT11の依存関係を解析できる。このため、コンピュータ10は、依存関係の解析における誤りを抑制しつつ並列プログラムを作成できる。
また、コンピュータ10は、アドレス指定の処理MTとシンボル指定の処理MTの両方に関して依存関係を解析できる。つまり、コンピュータ10は、アドレス指定の処理MT同士、シンボル指定の処理MT同士、アドレス指定の処理MTとシンボル指定の処理MT同士のいずれでも依存関係を解析できる。このため、コンピュータ10は、アドレス指定の処理MT同士のみで依存関係を解析する場合や、シンボル指定の処理MT同士のみで依存関係を解析する場合よりも、多くの処理MTの依存関係を解析できる。よって、コンピュータ10は、シングルプログラムにおけるアドレス指定の処理MTのみ、又はシンボル指定の処理MTのみを並列化する場合よりも、多くの処理MTを並列化できる。
また、コンピュータ10は、自動並列化コンパイラ1を実行することで、並列プログラム21a1を生成する。よって、自動並列化コンパイラ1は、上記コンピュータ10と同様の効果を奏することができる。
さらに、車載装置20は、依存関係の解析における誤りを抑制しつつ作成された並列プログラム21a1を実行するため、各処理MT0〜MT11を最適に実行できる。また、車載装置20は、上記のように、シングルプログラムにおける多くの処理MTが並列化された並列プログラム21a1を実行するため、効率よく第1コア21cと第2コア21dを動作させることができる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
なお、本実施形態では、二つの第1コア21cと第2コア21dを備えた車載装置20を採用した。しかしながら、本発明は、これに限定されず、三つ以上のコアを備えた車載装置であっても採用できる。よって、本発明は、シングルプログラムから、三つ以上のコアに対応した並列プログラムを生成するためのコンピュータ及び自動並列化コンパイラであっても採用できる。また、並列プログラム21a1は、車載装置20とは異なる装置で実行されるプログラムであってもよい。
1…自動並列化コンパイラ、10…コンピュータ、10a…字句解析部、10b…関連付部、10c…依存関係解析部、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…入出力ポート、31…第1コンパイラ、32…第2コンパイラ、41…マイコンレジスタ情報、42…第1メモリマッピング情報、43…、第2メモリマッピング情報、50…バイナリデータ

Claims (9)

  1. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT0〜MT11)から、複数の前記コア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する並列化方法であって、
    複数の前記処理とともに記憶領域に記憶され各処理が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされる前記データの前記記憶領域におけるアドレスと、各処理が実行される際にアクセスされる前記データのシンボル名を抽出する抽出手段(S11、S12)と、
    抽出された前記シンボル名に対して、抽出された前記シンボル名の前記データが記憶される前記記憶領域の前記アドレスを関連付ける関連付手順(S13)と、
    複数の前記処理のうち並列化可能な前記処理を決めるために、抽出された前記アドレスと前記関連付けられた前記アドレスとに基づいて各処理間での依存関係を解析し、同じ前記アドレスにアクセスする二つの前記処理は依存関係があるとみなし、同じ前記アドレスにアクセスしない二つの前記処理は依存関係がないとみなす解析手順(S14)と、を備えている並列化方法。
  2. 依存関係を解析する際に基にする前記アドレスは、前記記憶領域のレジスタにおけるアドレスを含んでいる請求項1に記載の並列化方法。
  3. 依存関係を解析する際に基にする前記アドレスは、前記シングルプログラムをコンパイルして各データをアドレスマッピングした結果におけるアドレスを含んでいる請求項1又は2に記載の並列化方法。
  4. コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT0〜MT11)から、複数の前記コア(21c、21d)を有するマルチコアマイコン(21)用に並列化した並列プログラム(21a1)を生成する、コンピュータを含む並列化ツールであって、
    複数の前記処理とともに記憶領域に記憶され各処理が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされる前記データの前記記憶領域におけるアドレスと、各処理が実行される際にアクセスされる前記データのシンボル名を抽出する抽出部(S11、S12)と、
    抽出された前記シンボル名に対して、抽出された前記シンボル名の前記データが記憶される前記記憶領域の前記アドレスを関連付ける関連付部(S13)と、
    複数の前記処理のうち並列化可能な前記処理を決めるために、抽出された前記アドレスと前記関連付けられた前記アドレスとに基づいて各処理間での依存関係を解析し、同じ前記アドレスにアクセスする二つの前記処理は依存関係があるとみなし、同じ前記アドレスにアクセスしない二つの前記処理は依存関係がないとみなす解析部(S14)と、を備えている並列化ツール。
  5. 依存関係を解析する際に基にする前記アドレスは、前記記憶領域のレジスタにおけるアドレスを含んでいる請求項4に記載の並列化ツール。
  6. 依存関係を解析する際に基にする前記アドレスは、前記シングルプログラムをコンパイルして各データをアドレスマッピングした結果におけるアドレスを含んでいる請求項4又は5に記載の並列化ツール。
  7. 複数のコア(21c、21d)を有するマルチコアマイコン(21)と、前記コアが一つであるシングルコアマイコン用のシングルプログラムにおける複数の処理(MT0〜MT11)から前記マルチコアマイコン用に並列化された並列プログラム(21a1)と、を備えた車載装置であって、
    前記並列プログラムは、
    複数の前記処理とともに記憶領域に記憶され各処理が実行される際にアクセスされる複数のデータのうち、各処理が実行される際にアクセスされる前記データの前記記憶領域におけるアドレスと、各処理が実行される際にアクセスされる前記データのシンボル名を抽出され、
    抽出された前記シンボル名に対して、抽出された前記シンボル名の前記データが記憶される前記記憶領域の前記アドレスが関連付けられ、
    複数の前記処理のうち並列化可能な前記処理を決めるために、抽出された前記アドレスと前記関連付けられた前記アドレスとに基づいて各処理間での依存関係を解析し、同じ前記アドレスにアクセスする二つの前記処理は依存関係があるとみなし、同じ前記アドレスにアクセスしない二つの前記処理は依存関係がないとみなされ、
    複数の前記処理の夫々が各コアに割り当てられており、
    前記マルチコアマイコンは、各コアが自身に割り当てられた前記処理を実行する車載装置。
  8. 依存関係を解析する際に基にする前記アドレスは、前記記憶領域のレジスタにおけるアドレスを含んでいる請求項7に記載の車載装置。
  9. 依存関係を解析する際に基にする前記アドレスは、前記シングルプログラムをコンパイルして各データをアドレスマッピングした結果におけるアドレスを含んでいる請求項7又は8に記載の車載装置。
JP2015241504A 2015-12-10 2015-12-10 並列化方法、並列化ツール、車載装置 Pending JP2017107448A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015241504A JP2017107448A (ja) 2015-12-10 2015-12-10 並列化方法、並列化ツール、車載装置
US15/350,368 US10296316B2 (en) 2015-12-10 2016-11-14 Parallelization method, parallelization tool, and in-vehicle apparatus
DE102016223939.2A DE102016223939A1 (de) 2015-12-10 2016-12-01 Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
JP2017107448A true JP2017107448A (ja) 2017-06-15

Family

ID=58773283

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US10296316B2 (ja)
JP (1) JP2017107448A (ja)
DE (1) DE102016223939A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019049771A (ja) * 2017-09-07 2019-03-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2019159931A (ja) * 2018-03-14 2019-09-19 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン
JP2019191870A (ja) * 2018-04-24 2019-10-31 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009237762A (ja) * 2008-03-26 2009-10-15 Toshiba Corp プログラム解析装置、プログラム解析方法および解析プログラム
WO2013105158A1 (ja) * 2012-01-13 2013-07-18 パナソニック株式会社 データ依存解析支援装置、データ依存解析支援プログラム、及びデータ依存解析支援方法
US20130212563A1 (en) * 2010-02-18 2013-08-15 Johan Kraft Method and a System for Searching for Parts of a Computer Program Which Affects a Given Symbol
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3641997B2 (ja) * 2000-03-30 2005-04-27 日本電気株式会社 プログラム変換装置及び方法並びに記録媒体
JP3729064B2 (ja) * 2000-11-29 2005-12-21 日本電気株式会社 データ依存関係検出装置
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
KR100877138B1 (ko) * 2004-03-29 2009-01-09 고쿠리츠 다이가쿠 호진 교토 다이가쿠 데이터 처리장치, 데이터 처리 프로그램, 및 데이터 처리프로그램을 기록한 기록매체
JP4923240B2 (ja) * 2006-01-17 2012-04-25 国立大学法人東京工業大学 プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム
US20080162889A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and apparatus for implementing efficient data dependence tracking for multiprocessor architectures
JP2009129179A (ja) * 2007-11-22 2009-06-11 Toshiba Corp プログラム並列化支援装置およびプログラム並列化支援方法
JP5148674B2 (ja) * 2010-09-27 2013-02-20 株式会社東芝 プログラム並列化装置およびプログラム
JP5810316B2 (ja) * 2010-12-21 2015-11-11 パナソニックIpマネジメント株式会社 コンパイル装置、コンパイルプログラム及びループ並列化方法
US8793675B2 (en) * 2010-12-24 2014-07-29 Intel Corporation Loop parallelization based on loop splitting or index array
WO2013010159A1 (en) * 2011-07-14 2013-01-17 Siemens Corporation Reducing the scan cycle time of control applications through multi-core execution of user programs
US9846673B2 (en) * 2011-11-04 2017-12-19 Waseda University Processor, accelerator, and direct memory access controller within a processor core that each reads/writes a local synchronization flag area for parallel execution
US9489180B1 (en) * 2011-11-18 2016-11-08 Reservoir Labs, Inc. Methods and apparatus for joint scheduling and layout optimization to enable multi-level vectorization
US8943511B2 (en) * 2012-05-31 2015-01-27 Nec Corporation Parallel allocation optimization device, parallel allocation optimization method, and computer-readable recording medium
US20150363230A1 (en) * 2013-01-23 2015-12-17 Waseda University Parallelism extraction method and method for making program
US10949200B2 (en) * 2013-06-16 2021-03-16 President And Fellows Of Harvard College Methods and apparatus for executing data-dependent threads in parallel
US9594644B2 (en) * 2014-09-19 2017-03-14 Sybase, Inc. Converting a serial transaction schedule to a parallel transaction schedule
US20160147577A1 (en) * 2014-11-25 2016-05-26 Qualcomm Incorporated System and method for adaptive thread control in a portable computing device (pcd)
JP6481585B2 (ja) * 2015-10-20 2019-03-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009237762A (ja) * 2008-03-26 2009-10-15 Toshiba Corp プログラム解析装置、プログラム解析方法および解析プログラム
US20130212563A1 (en) * 2010-02-18 2013-08-15 Johan Kraft Method and a System for Searching for Parts of a Computer Program Which Affects a Given Symbol
WO2013105158A1 (ja) * 2012-01-13 2013-07-18 パナソニック株式会社 データ依存解析支援装置、データ依存解析支援プログラム、及びデータ依存解析支援方法
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019049771A (ja) * 2017-09-07 2019-03-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2019159931A (ja) * 2018-03-14 2019-09-19 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン
JP7139633B2 (ja) 2018-03-14 2022-09-21 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン
JP2019191870A (ja) * 2018-04-24 2019-10-31 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン
JP7059776B2 (ja) 2018-04-24 2022-04-26 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン

Also Published As

Publication number Publication date
US10296316B2 (en) 2019-05-21
DE102016223939A1 (de) 2017-06-14
US20170168790A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
JP2017107448A (ja) 並列化方法、並列化ツール、車載装置
US10860300B2 (en) Direct function call substitution using preprocessor
US9009692B2 (en) Minimizing register spills by using register moves
US20130185705A1 (en) Providing performance tuned versions of compiled code to a cpu in a system of heterogeneous cores
US20100229161A1 (en) Compile method and compiler
EP2687981A1 (en) Automated compiler specialisation for global optimisation
JP2003323463A5 (ja)
US10430191B2 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption
JP2017228029A (ja) 並列化方法、並列化ツール、車載装置
JP6427055B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP6500626B2 (ja) 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
JP5576605B2 (ja) プログラム変換装置およびプログラム変換方法
JP2016192152A (ja) 並列化コンパイル方法、並列化コンパイラ、及び車載装置
Kessler Compiling for VLIW DSPs
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP6933001B2 (ja) 並列化方法、並列化ツール
JP5360506B2 (ja) マルチコアにおけるプログラミングシステム、その方法及びそのプログラム
JP6488738B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
Kumar et al. An approach for compiler optimization to exploit instruction level parallelism
Kessler Compiling for VLIW DSPs
JP6558310B2 (ja) 並列化方法、並列化ツール
JP2004038279A (ja) コンパイラ、演算処理システム及び演算処理方法
Marinkovic et al. An Automatic Instruction-Level Parallelization of Machine Code.
Kalra Design and evaluation of register allocation on gpus
US10379828B2 (en) Parallelization method, parallelization tool, and in-vehicle device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190723